diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 371240a6a99..e97cb9cfed5 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -7,6 +7,15 @@ Please consult this collection of solutions to common problems if you have any i **Q:** I don't see a logout option anywhere in the mobile app. How can I change my user? **A:** The logout option is hidden by default because users in the field often don't know their own passwords, but their devices are instead set up by a supervisor. If you want to change your user, go to the Settings screen and tap the version number five times to bring up additional options, including the logout option. +**Q:** The app crashes. How can I get a log file? +**A:** If you are using a release version of the app and need to get error logs, you can do the following: + +1. [Enable developer options in the Android device's settings](https://developer.android.com/studio/debug/dev-options) +2. Use the "Take Bug Report" option. The full report is not needed. +3. The zip file that is created will have a dumpstate-.txt file that contains the log and some more information +4. Open it and search for de.symeda.sormas to identify the process id. E.g. `de.symeda.sormas.app/de.symeda.sormas.app.login.LoginActivity$_11109#0` -> 11109 is the id +5. Search for all occurences of the process id to filter the file down to lines that contain the actual log of sormas + ## Debugging Performance Problems Performance logging can be used to find out which part of the code or system might be responsible for long-running functions in the application. This helps the developers to identify the source of the problems quicker and find out whether there are several problems at once or performance problems that manifest in Java execution time instead of slow SQL queries. @@ -15,10 +24,20 @@ Performance logging can be used to find out which part of the code or system mig ### Switch on Performance Logging in SORMAS -1. Open the logback file located in your domain (default path: `/opt/domains/sormas/config/logback.xml`) and change the log level of `PerformanceLoggingInterceptor` to `DEBUG`. The config change will be recognized during runtime within 30s. After that you will see detailed log entries in the SORMAS log. +1. Open the logback file located in your domain (default path: `/opt/domains/sormas/config/logback.xml`) and change the log level of `PerformanceLoggingInterceptor` to `DEBUG` or `TRACE`. The config change will be recognized during runtime within 30s. After that you will see detailed log entries in the SORMAS log. 2. Set the log level back to its default once the logging has been done since it can reduce the overall performance of SORMAS. +### Analyze Performance Logs + +Performance logs can be analyzed in detail using the `PerformanceLogAnalysisGenerator`. To use this tool, set the `PerformanceLoggingInterceptor`'s log level +to `TRACE` as described above and reproduce the scenario you want to investigate on the server instance. + +After this, process the debug log file (default path: `/opt/domains/sormas/logs/application.debug`) using the `PerformanceLogAnalysisGenerator`. This will +generate three files (`.csv`, `.txt`, `.html`) to further investigate method runtimes. + +`.html` provides a navigable overview of methods along with runtime statistics (total, min, max and average time) and calls to sub methods. + ### Log Slow SQL Queries in PostgreSQL You can enable the logging of slow SQL queries in your PostgreSQL server in `postgresql.conf`: diff --git a/sormas-api/pom.xml b/sormas-api/pom.xml index d7fc37a558d..b1878a5c4cd 100644 --- a/sormas-api/pom.xml +++ b/sormas-api/pom.xml @@ -2,7 +2,7 @@ de.symeda.sormas sormas-base - 1.70.4 + 1.71.0 ../sormas-base 4.0.0 diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java b/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java index 380a1145a57..54cac61e61a 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java @@ -19,6 +19,7 @@ import javax.naming.NamingException; import de.symeda.sormas.api.action.ActionFacade; +import de.symeda.sormas.api.audit.AuditLoggerFacade; import de.symeda.sormas.api.bagexport.BAGExportFacade; import de.symeda.sormas.api.campaign.CampaignFacade; import de.symeda.sormas.api.campaign.data.CampaignFormDataFacade; @@ -474,6 +475,10 @@ public static SyncFacade getSyncFacade() { return get().lookupEjbRemote(SyncFacade.class); } + public static AuditLoggerFacade getAuditLoggerFacade() { + return get().lookupEjbRemote(AuditLoggerFacade.class); + } + @SuppressWarnings("unchecked") public

P lookupEjbRemote(Class

clazz) { try { diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/audit/AuditLoggerFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/audit/AuditLoggerFacade.java new file mode 100644 index 00000000000..6fcc202853a --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/audit/AuditLoggerFacade.java @@ -0,0 +1,11 @@ +package de.symeda.sormas.api.audit; + +import javax.ejb.Remote; + +@Remote +public interface AuditLoggerFacade { + + void logRestCall(String path, String method); + void logFailedUiLogin(String caller, String method, String pathInfo); + void logFailedRestLogin(String authorizationHeader, String method, String pathInfo); +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/audit/Constants.java b/sormas-api/src/main/java/de/symeda/sormas/api/audit/Constants.java index 26fc7fc4086..27e89770335 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/audit/Constants.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/audit/Constants.java @@ -67,6 +67,7 @@ public class Constants { "revoke", "reset", "enable", - "disable"))); + "disable", + "log"))); } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java index f7fa0ec5283..acf9499a429 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java @@ -20,6 +20,8 @@ import static de.symeda.sormas.api.CountryHelper.COUNTRY_CODE_SWITZERLAND; import static de.symeda.sormas.api.utils.FieldConstraints.CHARACTER_LIMIT_BIG; +import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.utils.DependingOnUserRight; import java.util.Date; import java.util.List; import java.util.Map; @@ -336,6 +338,7 @@ public class CaseDataDto extends SormasToSormasShareableDto { private String healthFacilityDetails; @Valid + @Required private HealthConditionsDto healthConditions; private YesNoUnknown pregnant; @@ -367,12 +370,15 @@ public class CaseDataDto extends SormasToSormasShareableDto { private UserReferenceDto surveillanceOfficer; @SensitiveData @Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong) + @DependingOnUserRight(UserRight.CASE_CLINICIAN_VIEW) private String clinicianName; @SensitiveData @Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong) + @DependingOnUserRight(UserRight.CASE_CLINICIAN_VIEW) private String clinicianPhone; @SensitiveData @Size(max = FieldConstraints.CHARACTER_LIMIT_DEFAULT, message = Validations.textTooLong) + @DependingOnUserRight(UserRight.CASE_CLINICIAN_VIEW) private String clinicianEmail; @Diseases({ Disease.CONGENITAL_RUBELLA }) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java index 9e0f4391889..bc0cb00efcc 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseExportDto.java @@ -59,8 +59,10 @@ import de.symeda.sormas.api.person.Sex; import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.symptoms.SymptomsDto; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; +import de.symeda.sormas.api.utils.DependingOnUserRight; import de.symeda.sormas.api.utils.HideForCountries; import de.symeda.sormas.api.utils.HideForCountriesExcept; import de.symeda.sormas.api.utils.Order; @@ -323,10 +325,13 @@ public class CaseExportDto implements Serializable { private String responsibleCommunity; @SensitiveData + @DependingOnUserRight(UserRight.CASE_CLINICIAN_VIEW) private String clinicianName; @SensitiveData + @DependingOnUserRight(UserRight.CASE_CLINICIAN_VIEW) private String clinicianPhone; @SensitiveData + @DependingOnUserRight(UserRight.CASE_CLINICIAN_VIEW) private String clinicianEmail; private Long reportingUserId; @@ -1030,7 +1035,7 @@ public YesNoUnknown getSequelae() { @ExportTarget(caseExportTypes = { CaseExportType.CASE_SURVEILLANCE, CaseExportType.CASE_MANAGEMENT }) - @ExportProperty(value = CaseDataDto.SEQUELAE, combined = true) + @ExportProperty(value = CaseDataDto.SEQUELAE_DETAILS, combined = true) @ExportGroup(ExportGroupType.ADDITIONAL) public String getSequelaeDetails() { return sequelaeDetails; diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFacade.java index 9e9cb6dece9..74bb546fa24 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFacade.java @@ -153,7 +153,7 @@ Long countCasesForMap( boolean doesExternalTokenExist(String externalToken, String caseUuid); - String generateEpidNumber(CaseDataDto caze); + String getGenerateEpidNumber(CaseDataDto caze); void mergeCase(String leadUuid, String otherUuid); @@ -233,4 +233,6 @@ void saveBulkEditWithFacilities( void archive(List entityUuids, boolean includeContacts); void dearchive(List entityUuids, String dearchiveReason, boolean includeContacts); + + void setResultingCase(EventParticipantReferenceDto eventParticipantReferenceDto, CaseReferenceDto caseReferenceDto); } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactFacade.java index 3c97db17be3..7a1e9066bf7 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactFacade.java @@ -61,7 +61,7 @@ public interface ContactFacade extends CoreFacade deleteContacts(List contactUuids); - FollowUpPeriodDto calculateFollowUpUntilDate(ContactDto contactDto, boolean ignoreOverwrite); + FollowUpPeriodDto getCalculatedFollowUpUntilDate(ContactDto contactDto, boolean ignoreOverwrite); List getEntriesList(String personUuid, Integer first, Integer max); diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactLogic.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactLogic.java index 5048c700ffa..9df20f4da28 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactLogic.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactLogic.java @@ -24,6 +24,7 @@ import de.symeda.sormas.api.followup.FollowUpPeriodDto; import de.symeda.sormas.api.followup.FollowUpStartDateType; import de.symeda.sormas.api.sample.SampleDto; +import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.visit.VisitDto; public final class ContactLogic { @@ -83,4 +84,10 @@ public static FollowUpPeriodDto calculateFollowUpUntilDate( Date overwriteUntilDate = !ignoreOverwrite && contact.isOverwriteFollowUpUntil() ? contact.getFollowUpUntil() : null; return FollowUpLogic.calculateFollowUpUntilDate(followUpPeriod, overwriteUntilDate, visits, followUpDuration, allowFreeOverwrite); } + + public static String extendFollowUpStatusComment(String followUpComment, String extensionComment) { + return extensionComment != null && extensionComment.equals(followUpComment) + ? followUpComment + : DataHelper.joinStrings("\n", followUpComment, extensionComment); + } } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactReferenceDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactReferenceDto.java index 016b851cfc8..48bf4240057 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactReferenceDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactReferenceDto.java @@ -66,7 +66,8 @@ public String getCaption() { contactName.lastName, caseName != null ? caseName.firstName : null, caseName != null ? caseName.lastName : null, - getUuid()); + getUuid(), + true); } @JsonIgnore diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCaseMeasureDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCaseMeasureDto.java new file mode 100644 index 00000000000..4812f3fe2ab --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCaseMeasureDto.java @@ -0,0 +1,44 @@ +package de.symeda.sormas.api.dashboard; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +import de.symeda.sormas.api.infrastructure.district.DistrictDto; + +public class DashboardCaseMeasureDto implements Serializable { + + private static final long serialVersionUID = -5705128377788207658L; + + private Map caseMeasurePerDistrict; + private BigDecimal districtValuesLowerQuartile; + private BigDecimal districtValuesMedianQuartile; + private BigDecimal districtValuesUpperQuartile; + + public DashboardCaseMeasureDto( + Map caseMeasurePerDistrict, + BigDecimal districtValuesLowerQuartile, + BigDecimal districtValuesMedianQuartile, + BigDecimal districtValuesUpperQuartile) { + this.caseMeasurePerDistrict = caseMeasurePerDistrict; + this.districtValuesLowerQuartile = districtValuesLowerQuartile; + this.districtValuesMedianQuartile = districtValuesMedianQuartile; + this.districtValuesUpperQuartile = districtValuesUpperQuartile; + } + + public Map getCaseMeasurePerDistrict() { + return caseMeasurePerDistrict; + } + + public BigDecimal getDistrictValuesLowerQuartile() { + return districtValuesLowerQuartile; + } + + public BigDecimal getDistrictValuesMedianQuartile() { + return districtValuesMedianQuartile; + } + + public BigDecimal getDistrictValuesUpperQuartile() { + return districtValuesUpperQuartile; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactFollowUpDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactFollowUpDto.java new file mode 100644 index 00000000000..4424501e6e8 --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactFollowUpDto.java @@ -0,0 +1,103 @@ +package de.symeda.sormas.api.dashboard; + +import java.io.Serializable; + +public class DashboardContactFollowUpDto implements Serializable { + + private static final long serialVersionUID = -5705128377788207650L; + private int followUpContactsCount; + private int cooperativeContactsCount; + private int cooperativeContactsPercentage; + private int uncooperativeContactsCount; + private int uncooperativeContactsPercentage; + private int unavailableContactsCount; + private int unavailableContactsPercentage; + private int neverVisitedContactsCount; + private int notVisitedContactsPercentage; + + private int missedVisitsOneDay; + private int missedVisitsTwoDays; + private int missedVisitsThreeDays; + private int missedVisitsGtThreeDays; + + public DashboardContactFollowUpDto( + int followUpContactsCount, + int cooperativeContactsCount, + int cooperativeContactsPercentage, + int uncooperativeContactsCount, + int uncooperativeContactsPercentage, + int unavailableContactsCount, + int unavailableContactsPercentage, + int neverVisitedContactsCount, + int notVisitedContactsPercentage, + int missedVisitsOneDay, + int missedVisitsTwoDays, + int missedVisitsThreeDays, + int missedVisitsGtThreeDays) { + this.followUpContactsCount = followUpContactsCount; + this.cooperativeContactsCount = cooperativeContactsCount; + this.cooperativeContactsPercentage = cooperativeContactsPercentage; + this.uncooperativeContactsCount = uncooperativeContactsCount; + this.uncooperativeContactsPercentage = uncooperativeContactsPercentage; + this.unavailableContactsCount = unavailableContactsCount; + this.unavailableContactsPercentage = unavailableContactsPercentage; + this.neverVisitedContactsCount = neverVisitedContactsCount; + this.notVisitedContactsPercentage = notVisitedContactsPercentage; + this.missedVisitsOneDay = missedVisitsOneDay; + this.missedVisitsTwoDays = missedVisitsTwoDays; + this.missedVisitsThreeDays = missedVisitsThreeDays; + this.missedVisitsGtThreeDays = missedVisitsGtThreeDays; + } + + public int getFollowUpContactsCount() { + return followUpContactsCount; + } + + public int getCooperativeContactsCount() { + return cooperativeContactsCount; + } + + public int getCooperativeContactsPercentage() { + return cooperativeContactsPercentage; + } + + public int getUncooperativeContactsCount() { + return uncooperativeContactsCount; + } + + public int getUncooperativeContactsPercentage() { + return uncooperativeContactsPercentage; + } + + public int getUnavailableContactsCount() { + return unavailableContactsCount; + } + + public int getUnavailableContactsPercentage() { + return unavailableContactsPercentage; + } + + public int getNeverVisitedContactsCount() { + return neverVisitedContactsCount; + } + + public int getNotVisitedContactsPercentage() { + return notVisitedContactsPercentage; + } + + public int getMissedVisitsOneDay() { + return missedVisitsOneDay; + } + + public int getMissedVisitsTwoDays() { + return missedVisitsTwoDays; + } + + public int getMissedVisitsThreeDays() { + return missedVisitsThreeDays; + } + + public int getMissedVisitsGtThreeDays() { + return missedVisitsGtThreeDays; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactStatisticDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactStatisticDto.java new file mode 100644 index 00000000000..53b62db260c --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactStatisticDto.java @@ -0,0 +1,126 @@ +package de.symeda.sormas.api.dashboard; + +import java.io.Serializable; +import java.util.Map; +import java.util.TreeMap; + +import de.symeda.sormas.api.Disease; + +public class DashboardContactStatisticDto implements Serializable { + + private static final long serialVersionUID = -5705128377788207649L; + + public static final String PREVIOUS_CONTACTS = "previousContacts"; + public static final String CURRENT_CONTACTS = "contacts"; + + private int contactsCount; + private int newContactsCount; + private int newContactsPercentage; + private int symptomaticContactsCount; + private int symptomaticContactsPercentage; + private int confirmedContactsCount; + private int contactClassificationConfirmedPercentage; + private int unconfirmedContactsCount; + private int contactClassificationUnconfirmedPercentage; + private int notContactsCount; + private int contactClassificationNotAContactPercentage; + + Map> diseaseMap = new TreeMap<>(); + + private DashboardContactFollowUpDto dashboardContactFollowUp; + private DashboardContactStoppedFollowUpDto dashboardContactStoppedFollowUp; + private DashboardContactVisitDto dashboardContactVisit; + + public DashboardContactStatisticDto( + int contactsCount, + int newContactsCount, + int newContactsPercentage, + int symptomaticContactsCount, + int symptomaticContactsPercentage, + int confirmedContactsCount, + int contactClassificationConfirmedPercentage, + int unconfirmedContactsCount, + int contactClassificationUnconfirmedPercentage, + int notContactsCount, + int contactClassificationNotAContactPercentage, + Map> diseaseMap, + DashboardContactFollowUpDto dashboardContactFollowUp, + DashboardContactStoppedFollowUpDto dashboardContactStoppedFollowUp, + DashboardContactVisitDto dashboardContactVisit) { + this.contactsCount = contactsCount; + this.newContactsCount = newContactsCount; + this.newContactsPercentage = newContactsPercentage; + this.symptomaticContactsCount = symptomaticContactsCount; + this.symptomaticContactsPercentage = symptomaticContactsPercentage; + this.confirmedContactsCount = confirmedContactsCount; + this.contactClassificationConfirmedPercentage = contactClassificationConfirmedPercentage; + this.unconfirmedContactsCount = unconfirmedContactsCount; + this.contactClassificationUnconfirmedPercentage = contactClassificationUnconfirmedPercentage; + this.notContactsCount = notContactsCount; + this.contactClassificationNotAContactPercentage = contactClassificationNotAContactPercentage; + this.diseaseMap = diseaseMap; + this.dashboardContactFollowUp = dashboardContactFollowUp; + this.dashboardContactStoppedFollowUp = dashboardContactStoppedFollowUp; + this.dashboardContactVisit = dashboardContactVisit; + } + + public int getContactsCount() { + return contactsCount; + } + + public int getNewContactsCount() { + return newContactsCount; + } + + public int getNewContactsPercentage() { + return newContactsPercentage; + } + + public int getSymptomaticContactsCount() { + return symptomaticContactsCount; + } + + public int getSymptomaticContactsPercentage() { + return symptomaticContactsPercentage; + } + + public int getConfirmedContactsCount() { + return confirmedContactsCount; + } + + public int getContactClassificationConfirmedPercentage() { + return contactClassificationConfirmedPercentage; + } + + public int getUnconfirmedContactsCount() { + return unconfirmedContactsCount; + } + + public int getContactClassificationUnconfirmedPercentage() { + return contactClassificationUnconfirmedPercentage; + } + + public int getNotContactsCount() { + return notContactsCount; + } + + public int getContactClassificationNotAContactPercentage() { + return contactClassificationNotAContactPercentage; + } + + public Map> getDiseaseMap() { + return diseaseMap; + } + + public DashboardContactFollowUpDto getDashboardContactFollowUp() { + return dashboardContactFollowUp; + } + + public DashboardContactStoppedFollowUpDto getDashboardContactStoppedFollowUp() { + return dashboardContactStoppedFollowUp; + } + + public DashboardContactVisitDto getDashboardContactVisit() { + return dashboardContactVisit; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactStoppedFollowUpDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactStoppedFollowUpDto.java new file mode 100644 index 00000000000..a095a803ee9 --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactStoppedFollowUpDto.java @@ -0,0 +1,75 @@ +package de.symeda.sormas.api.dashboard; + +import java.io.Serializable; + +public class DashboardContactStoppedFollowUpDto implements Serializable { + + private static final long serialVersionUID = -5705128377788207652L; + + private int stoppedFollowUpContacts; + private int completedContacts; + private int followUpCompletedPercentage; + private int cancelledContacts; + private int followUpCanceledPercentage; + private int lostContacts; + private int lostToFollowUpPercentage; + private int convertedContacts; + private int contactStatusConvertedPercentage; + + public DashboardContactStoppedFollowUpDto( + int stoppedFollowUpContacts, + int completedContacts, + int followUpCompletedPercentage, + int cancelledContacts, + int followUpCanceledPercentage, + int lostContacts, + int lostToFollowUpPercentage, + int convertedContacts, + int contactStatusConvertedPercentage) { + this.stoppedFollowUpContacts = stoppedFollowUpContacts; + this.completedContacts = completedContacts; + this.followUpCompletedPercentage = followUpCompletedPercentage; + this.cancelledContacts = cancelledContacts; + this.followUpCanceledPercentage = followUpCanceledPercentage; + this.lostContacts = lostContacts; + this.lostToFollowUpPercentage = lostToFollowUpPercentage; + this.convertedContacts = convertedContacts; + this.contactStatusConvertedPercentage = contactStatusConvertedPercentage; + } + + public int getStoppedFollowUpContacts() { + return stoppedFollowUpContacts; + } + + public int getCompletedContacts() { + return completedContacts; + } + + public int getFollowUpCompletedPercentage() { + return followUpCompletedPercentage; + } + + public int getCancelledContacts() { + return cancelledContacts; + } + + public int getFollowUpCanceledPercentage() { + return followUpCanceledPercentage; + } + + public int getLostContacts() { + return lostContacts; + } + + public int getLostToFollowUpPercentage() { + return lostToFollowUpPercentage; + } + + public int getConvertedContacts() { + return convertedContacts; + } + + public int getContactStatusConvertedPercentage() { + return contactStatusConvertedPercentage; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactVisitDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactVisitDto.java new file mode 100644 index 00000000000..227d5ca1a8d --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardContactVisitDto.java @@ -0,0 +1,103 @@ +package de.symeda.sormas.api.dashboard; + +import java.io.Serializable; + +public class DashboardContactVisitDto implements Serializable { + + private static final long serialVersionUID = -5705128377788207651L; + + private int visitsCount; + private int missedVisitsCount; + private int missedVisitsGrowth; + private int unavailableVisitsCount; + private int unavailableVisitsGrowth; + private int uncooperativeVisitsCount; + private int uncooperativeVisitsGrowth; + private int cooperativeVisitsCount; + private int cooperativeVisitsGrowth; + private int previousMissedVisitsCount; + private int previousUnavailableVisitsCount; + private int previousUncooperativeVisitsCount; + private int previousCooperativeVisitsCount; + + public DashboardContactVisitDto( + int visitsCount, + int missedVisitsCount, + int missedVisitsGrowth, + int unavailableVisitsCount, + int unavailableVisitsGrowth, + int uncooperativeVisitsCount, + int uncooperativeVisitsGrowth, + int cooperativeVisitsCount, + int cooperativeVisitsGrowth, + int previousMissedVisitsCount, + int previousUnavailableVisitsCount, + int previousUncooperativeVisitsCount, + int previousCooperativeVisitsCount) { + this.visitsCount = visitsCount; + this.missedVisitsCount = missedVisitsCount; + this.missedVisitsGrowth = missedVisitsGrowth; + this.unavailableVisitsCount = unavailableVisitsCount; + this.unavailableVisitsGrowth = unavailableVisitsGrowth; + this.uncooperativeVisitsCount = uncooperativeVisitsCount; + this.uncooperativeVisitsGrowth = uncooperativeVisitsGrowth; + this.cooperativeVisitsCount = cooperativeVisitsCount; + this.cooperativeVisitsGrowth = cooperativeVisitsGrowth; + this.previousMissedVisitsCount = previousMissedVisitsCount; + this.previousUnavailableVisitsCount = previousUnavailableVisitsCount; + this.previousUncooperativeVisitsCount = previousUncooperativeVisitsCount; + this.previousCooperativeVisitsCount = previousCooperativeVisitsCount; + } + + public int getVisitsCount() { + return visitsCount; + } + + public int getMissedVisitsCount() { + return missedVisitsCount; + } + + public int getMissedVisitsGrowth() { + return missedVisitsGrowth; + } + + public int getUnavailableVisitsCount() { + return unavailableVisitsCount; + } + + public int getUnavailableVisitsGrowth() { + return unavailableVisitsGrowth; + } + + public int getUncooperativeVisitsCount() { + return uncooperativeVisitsCount; + } + + public int getUncooperativeVisitsGrowth() { + return uncooperativeVisitsGrowth; + } + + public int getCooperativeVisitsCount() { + return cooperativeVisitsCount; + } + + public int getCooperativeVisitsGrowth() { + return cooperativeVisitsGrowth; + } + + public int getPreviousMissedVisitsCount() { + return previousMissedVisitsCount; + } + + public int getPreviousUnavailableVisitsCount() { + return previousUnavailableVisitsCount; + } + + public int getPreviousUncooperativeVisitsCount() { + return previousUncooperativeVisitsCount; + } + + public int getPreviousCooperativeVisitsCount() { + return previousCooperativeVisitsCount; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCriteria.java index 1a40b3cae64..c86270e54b7 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCriteria.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardCriteria.java @@ -3,6 +3,7 @@ import java.io.Serializable; import java.util.Date; +import de.symeda.sormas.api.CaseMeasure; import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; @@ -21,6 +22,7 @@ public class DashboardCriteria extends BaseCriteria implements Serializable { private Date previousDateTo; private EpiCurveGrouping epiCurveGrouping; private boolean showMinimumEntries; + private CaseMeasure caseMeasure; private boolean includeNotACaseClassification; @@ -102,4 +104,8 @@ public boolean isIncludeNotACaseClassification() { public boolean isShowMinimumEntries() { return showMinimumEntries; } + + public CaseMeasure getCaseMeasure() { + return caseMeasure; + } } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardFacade.java index 7836bcb6198..7c72605ee0b 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/dashboard/DashboardFacade.java @@ -7,6 +7,7 @@ import javax.ejb.Remote; import de.symeda.sormas.api.caze.CaseClassification; +import de.symeda.sormas.api.contact.ContactClassification; import de.symeda.sormas.api.disease.DiseaseBurdenDto; import de.symeda.sormas.api.event.EventStatus; import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; @@ -24,8 +25,6 @@ public interface DashboardFacade { String getLastReportedDistrictName(DashboardCriteria dashboardCriteria); - Map getTestResultCountByResultType(List cases); - long countCasesConvertedFromContacts(DashboardCriteria dashboardCriteria); Map getCasesCountPerPersonCondition(DashboardCriteria dashboardCriteria); @@ -36,12 +35,22 @@ public interface DashboardFacade { DashboardCaseStatisticDto getDashboardCaseStatistic(DashboardCriteria dashboardCriteria); + DashboardContactStatisticDto getDashboardContactStatistic(DashboardCriteria dashboardCriteria); + Map getTestResultCountByResultType(DashboardCriteria dashboardCriteria); Map> getEpiCurveSeriesElementsPerCaseClassification(DashboardCriteria dashboardCriteria); Map> getEpiCurveSeriesElementsPerPresentCondition(DashboardCriteria dashboardCriteria); + Map> getEpiCurveSeriesElementsPerContactClassification(DashboardCriteria dashboardCriteria); + + Map> getEpiCurveSeriesElementsPerContactFollowUpStatus(DashboardCriteria dashboardCriteria); + + Map getEpiCurveSeriesElementsPerContactFollowUpUntil(DashboardCriteria dashboardCriteria); + + DashboardCaseMeasureDto getCaseMeasurePerDistrict(DashboardCriteria dashboardCriteria); + List getDiseaseBurden( RegionReferenceDto region, DistrictReferenceDto district, diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/deletionconfiguration/DeletionReference.java b/sormas-api/src/main/java/de/symeda/sormas/api/deletionconfiguration/DeletionReference.java index 6aacccd9a99..473b55fbeaf 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/deletionconfiguration/DeletionReference.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/deletionconfiguration/DeletionReference.java @@ -1,7 +1,10 @@ package de.symeda.sormas.api.deletionconfiguration; public enum DeletionReference { - CREATION, - ORIGIN, - END + + CREATION, + ORIGIN, + END, + MANUAL_DELETION + } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventFacade.java index 2bfa01512f4..fab3676b077 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventFacade.java @@ -28,7 +28,6 @@ import javax.validation.constraints.NotNull; import de.symeda.sormas.api.CoreFacade; -import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.EditPermissionType; import de.symeda.sormas.api.common.Page; import de.symeda.sormas.api.externaldata.ExternalDataDto; @@ -40,8 +39,6 @@ @Remote public interface EventFacade extends CoreFacade { - Map getEventCountByDisease(EventCriteria eventCriteria); - EventDto getEventByUuid(String uuid, boolean detailedReferences); EventReferenceDto getReferenceByEventParticipant(String uuid); diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantFacade.java index 885013ec9b3..54755d56942 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantFacade.java @@ -24,6 +24,7 @@ import javax.ejb.Remote; import javax.validation.Valid; +import javax.validation.constraints.NotNull; import de.symeda.sormas.api.CoreFacade; import de.symeda.sormas.api.EditPermissionType; @@ -44,7 +45,7 @@ public interface EventParticipantFacade EventParticipantDto getEventParticipantByUuid(String uuid); - EventParticipantDto saveEventParticipant(@Valid EventParticipantDto dto); + EventParticipantDto save(@Valid @NotNull EventParticipantDto dto); List getAllActiveUuids(); 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 a937615f7b1..0df9bda8473 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 @@ -46,7 +46,8 @@ public enum FeatureType { true, new FeatureType[] { CASE_SURVEILANCE }, - null, ImmutableMap.of( + null, + ImmutableMap.of( FeatureTypeProperty.AUTOMATIC_RESPONSIBILITY_ASSIGNMENT, Boolean.TRUE, FeatureTypeProperty.ALLOW_FREE_FOLLOW_UP_OVERWRITE, @@ -57,12 +58,14 @@ public enum FeatureType { new FeatureType[] { CASE_SURVEILANCE, EVENT_SURVEILLANCE }, - null, null), + null, + null), ADDITIONAL_TESTS(true, false, new FeatureType[] { SAMPLES_LAB }, - null, null), + null, + null), TASK_MANAGEMENT(true, true, null, null, ImmutableMap.of(FeatureTypeProperty.ALLOW_FREE_EDITING, Boolean.FALSE)), WEEKLY_REPORTING(true, true, null, null, null), IMMUNIZATION_MANAGEMENT(true, true, null, null, ImmutableMap.of(FeatureTypeProperty.REDUCED, Boolean.FALSE)), @@ -75,87 +78,104 @@ public enum FeatureType { true, new FeatureType[] { TASK_MANAGEMENT }, - null, null), + null, + null), CASE_FOLLOWUP(true, false, new FeatureType[] { CASE_SURVEILANCE }, - null, ImmutableMap.of(FeatureTypeProperty.ALLOW_FREE_FOLLOW_UP_OVERWRITE, Boolean.FALSE)), + null, + ImmutableMap.of(FeatureTypeProperty.ALLOW_FREE_FOLLOW_UP_OVERWRITE, Boolean.FALSE)), DOCUMENTS(true, false, new FeatureType[] { CASE_SURVEILANCE, EVENT_SURVEILLANCE }, - null, null), + null, + null), DOCUMENTS_MULTI_UPLOAD(true, true, new FeatureType[] { DOCUMENTS }, - null, null), + null, + null), EVENT_GROUPS(true, true, new FeatureType[] { EVENT_SURVEILLANCE }, - null, null), + null, + null), EVENT_HIERARCHIES(true, true, new FeatureType[] { EVENT_SURVEILLANCE }, - null, null), + null, + null), LAB_MESSAGES(true, false, new FeatureType[] { SAMPLES_LAB }, - null, null), + null, + null), MANUAL_EXTERNAL_MESSAGES(true, true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), NATIONAL_CASE_SHARING(true, false, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), SURVEILLANCE_REPORTS(true, false, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), SORMAS_TO_SORMAS_ACCEPT_REJECT(true, false, new FeatureType[] { CASE_SURVEILANCE, CONTACT_TRACING, EVENT_SURVEILLANCE }, - null, null), + null, + null), SORMAS_TO_SORMAS_SHARE_CASES_WITH_CONTACTS_AND_SAMPLES(true, true, new FeatureType[] { CASE_SURVEILANCE, CONTACT_TRACING, SAMPLES_LAB }, - null, null), + null, + null), SORMAS_TO_SORMAS_SHARE_EVENTS(true, false, new FeatureType[] { EVENT_SURVEILLANCE }, - null, null), + null, + null), SORMAS_TO_SORMAS_SHARE_LAB_MESSAGES(true, false, new FeatureType[] { LAB_MESSAGES }, - null, null), + null, + null), IMMUNIZATION_STATUS_AUTOMATION(true, true, new FeatureType[] { IMMUNIZATION_MANAGEMENT }, - null, null), + null, + null), PERSON_DUPLICATE_CUSTOM_SEARCH(true, false, null, null, null), EDIT_INFRASTRUCTURE_DATA(true, true, null, null, null), - DELETE_PERMANENT(true, false, null, null, null), - AUTOMATIC_ARCHIVING(true, true, null, Arrays.asList(CASE, CONTACT, EVENT, EVENT_PARTICIPANT, IMMUNIZATION, TRAVEL_ENTRY), - ImmutableMap.of(FeatureTypeProperty.THRESHOLD_IN_DAYS, 90)), + AUTOMATIC_ARCHIVING(true, + true, + null, + Arrays.asList(CASE, CONTACT, EVENT, EVENT_PARTICIPANT, IMMUNIZATION, TRAVEL_ENTRY), + ImmutableMap.of(FeatureTypeProperty.THRESHOLD_IN_DAYS, 90)), EDIT_ARCHIVED_ENTITIES(true, true, null, null, null), // SHOW/HIDE VIEW TAB FEATURES @@ -163,42 +183,50 @@ public enum FeatureType { true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), VIEW_TAB_CASES_SYMPTOMS(true, true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), VIEW_TAB_CASES_EPIDEMIOLOGICAL_DATA(true, true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), VIEW_TAB_CASES_THERAPY(true, true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), VIEW_TAB_CASES_FOLLOW_UP(true, true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), VIEW_TAB_CASES_CLINICAL_COURSE(true, true, new FeatureType[] { CASE_SURVEILANCE }, - null, null), + null, + null), VIEW_TAB_CONTACTS_EPIDEMIOLOGICAL_DATA(true, true, new FeatureType[] { CONTACT_TRACING }, - null, null), + null, + null), VIEW_TAB_CONTACTS_FOLLOW_UP_VISITS(true, true, new FeatureType[] { CONTACT_TRACING }, - null, null), + null, + null), // ADDITIONAL FEATURES GDPR_CONSENT_POPUP(true, false, null, null, null), @@ -209,7 +237,8 @@ public enum FeatureType { new FeatureType[] { CASE_SURVEILANCE, EVENT_SURVEILLANCE }, - null, null), + null, + null), // REGION- AND DISEASE-BASED FEATURES LINE_LISTING(false, false, null, null, null), @@ -219,22 +248,26 @@ public enum FeatureType { false, new FeatureType[] { EVENT_GROUPS }, - null, null), + null, + null), EVENT_PARTICIPANT_CASE_CONFIRMED_NOTIFICATIONS(true, true, new FeatureType[] { EVENT_SURVEILLANCE }, - null, null), + null, + null), EVENT_PARTICIPANT_RELATED_TO_OTHER_EVENTS_NOTIFICATIONS(true, true, new FeatureType[] { EVENT_SURVEILLANCE }, - null, null), + null, + null), TASK_NOTIFICATIONS(true, true, new FeatureType[] { TASK_MANAGEMENT }, - null, null), + null, + null), OTHER_NOTIFICATIONS(true, true, null, null, null), // TASK GENERATION FEATURES @@ -242,22 +275,26 @@ public enum FeatureType { true, new FeatureType[] { TASK_MANAGEMENT }, - null, null), + null, + null), TASK_GENERATION_CONTACT_TRACING(true, true, new FeatureType[] { TASK_MANAGEMENT }, - null, null), + null, + null), TASK_GENERATION_EVENT_SURVEILLANCE(true, true, new FeatureType[] { TASK_MANAGEMENT }, - null, null), + null, + null), TASK_GENERATION_GENERAL(true, true, new FeatureType[] { TASK_MANAGEMENT }, - null, null); + null, + null); /** * Server feature means that the feature only needs to be configured once per server since they define the way the system 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 29166fc5ff4..aea5bb285fb 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 @@ -524,8 +524,10 @@ public interface Captions { String CasePreviousHospitalization_admissionAndDischargeDate = "CasePreviousHospitalization.admissionAndDischargeDate"; String CasePreviousHospitalization_admissionDate = "CasePreviousHospitalization.admissionDate"; String CasePreviousHospitalization_admittedToHealthFacility = "CasePreviousHospitalization.admittedToHealthFacility"; + String CasePreviousHospitalization_community = "CasePreviousHospitalization.community"; String CasePreviousHospitalization_description = "CasePreviousHospitalization.description"; String CasePreviousHospitalization_dischargeDate = "CasePreviousHospitalization.dischargeDate"; + String CasePreviousHospitalization_district = "CasePreviousHospitalization.district"; String CasePreviousHospitalization_editColumn = "CasePreviousHospitalization.editColumn"; String CasePreviousHospitalization_healthFacility = "CasePreviousHospitalization.healthFacility"; String CasePreviousHospitalization_healthFacilityDetails = "CasePreviousHospitalization.healthFacilityDetails"; @@ -537,7 +539,8 @@ public interface Captions { String CasePreviousHospitalization_isolationDate = "CasePreviousHospitalization.isolationDate"; String CasePreviousHospitalization_otherHospitalizationReason = "CasePreviousHospitalization.otherHospitalizationReason"; String CasePreviousHospitalization_prevHospPeriod = "CasePreviousHospitalization.prevHospPeriod"; - String caseReferToFacility = "caseReferToFacility"; + String CasePreviousHospitalization_region = "CasePreviousHospitalization.region"; + String caseReferFromPointOfEntry = "caseReferFromPointOfEntry"; String caseSearchCase = "caseSearchCase"; String caseSearchSpecificCase = "caseSearchSpecificCase"; String caseSelect = "caseSelect"; @@ -1418,6 +1421,7 @@ public interface Captions { String LabMessage_specimenCondition = "LabMessage.specimenCondition"; String LabMessage_status = "LabMessage.status"; String LabMessage_testedDisease = "LabMessage.testedDisease"; + String LabMessage_type = "LabMessage.type"; String LabMessageCriteria_birthDateFrom = "LabMessageCriteria.birthDateFrom"; String LabMessageCriteria_birthDateTo = "LabMessageCriteria.birthDateTo"; String LabMessageCriteria_messageDateFrom = "LabMessageCriteria.messageDateFrom"; @@ -1458,6 +1462,8 @@ public interface Captions { String Location_contactPersonFirstName = "Location.contactPersonFirstName"; String Location_contactPersonLastName = "Location.contactPersonLastName"; String Location_contactPersonPhone = "Location.contactPersonPhone"; + String Location_continent = "Location.continent"; + String Location_country = "Location.country"; String Location_details = "Location.details"; String Location_district = "Location.district"; String Location_facility = "Location.facility"; @@ -1469,7 +1475,9 @@ public interface Captions { String Location_latLonAccuracy = "Location.latLonAccuracy"; String Location_longitude = "Location.longitude"; String Location_postalCode = "Location.postalCode"; + String Location_region = "Location.region"; String Location_street = "Location.street"; + String Location_subcontinent = "Location.subcontinent"; String Login_doLogIn = "Login.doLogIn"; String Login_login = "Login.login"; String Login_password = "Login.password"; @@ -2337,6 +2345,7 @@ public interface Captions { String userNewUser = "userNewUser"; String userResetPassword = "userResetPassword"; String userRight = "userRight"; + String UserRight_caption = "UserRight.caption"; String UserRight_description = "UserRight.description"; String UserRight_jurisdiction = "UserRight.jurisdiction"; String UserRight_jurisdictionOfRole = "UserRight.jurisdictionOfRole"; 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 04b6cc43c4c..6f5df865be1 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 @@ -162,7 +162,6 @@ public interface Strings { String confirmationSeeAllPersons = "confirmationSeeAllPersons"; String confirmationSetMissingGeoCoordinates = "confirmationSetMissingGeoCoordinates"; String confirmationSinceLabMessages = "confirmationSinceLabMessages"; - String confirmationSuperordinateEventDiscardUnsavedChanges = "confirmationSuperordinateEventDiscardUnsavedChanges"; String confirmationUnclearLabMessage = "confirmationUnclearLabMessage"; String confirmationUnlinkCaseFromEvent = "confirmationUnlinkCaseFromEvent"; String confirmationUpdateCompleteness = "confirmationUpdateCompleteness"; @@ -403,6 +402,7 @@ public interface Strings { String headingConfirmUnclearLabMessage = "headingConfirmUnclearLabMessage"; String headingConfirmUpdateCompleteness = "headingConfirmUpdateCompleteness"; String headingContactConfirmationRequired = "headingContactConfirmationRequired"; + String headingContactConversionFollowUpCommentLarge = "headingContactConversionFollowUpCommentLarge"; String headingContactData = "headingContactData"; String headingContactDataNotComplete = "headingContactDataNotComplete"; String headingContactInformation = "headingContactInformation"; @@ -948,6 +948,9 @@ public interface Strings { String messageContactArchived = "messageContactArchived"; String messageContactCaseChanged = "messageContactCaseChanged"; String messageContactCaseRemoved = "messageContactCaseRemoved"; + String messageContactConversionFollowUpCommentLarge = "messageContactConversionFollowUpCommentLarge"; + String messageContactConversionFollowUpCommentLargeAdjustComment = "messageContactConversionFollowUpCommentLargeAdjustComment"; + String messageContactConversionFollowUpCommentLargeOmitMessage = "messageContactConversionFollowUpCommentLargeOmitMessage"; String messageContactCreated = "messageContactCreated"; String messageContactDearchived = "messageContactDearchived"; String messageContactDuplicateDeleted = "messageContactDuplicateDeleted"; @@ -1048,7 +1051,6 @@ public interface Strings { String messageFacilityMulitChanged = "messageFacilityMulitChanged"; String messageFollowUpCanceled = "messageFollowUpCanceled"; String messageFollowUpStatusChanged = "messageFollowUpStatusChanged"; - String messageFormHasErrorsPathogenTest = "messageFormHasErrorsPathogenTest"; String messageForwardedLabMessageFound = "messageForwardedLabMessageFound"; String messageGdpr = "messageGdpr"; String messageGdprCheck = "messageGdprCheck"; diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureChangeDatesDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureChangeDatesDto.java index 1b714f45c2d..e1e46124976 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureChangeDatesDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureChangeDatesDto.java @@ -21,8 +21,6 @@ public class InfrastructureChangeDatesDto implements Serializable { private Date diseaseConfigurationChangeDate; private Date userRoleConfigurationChangeDate; private Date featureConfigurationChangeDate; - private Date campaignChangeDate; - private Date campaignFormMetaChangeDate; public Date getContinentChangeDate() { return continentChangeDate; @@ -135,20 +133,4 @@ public Date getFeatureConfigurationChangeDate() { public void setFeatureConfigurationChangeDate(Date featureConfigurationChangeDate) { this.featureConfigurationChangeDate = featureConfigurationChangeDate; } - - public Date getCampaignChangeDate() { - return campaignChangeDate; - } - - public void setCampaignChangeDate(Date campaignChangeDate) { - this.campaignChangeDate = campaignChangeDate; - } - - public Date getCampaignFormMetaChangeDate() { - return campaignFormMetaChangeDate; - } - - public void setCampaignFormMetaChangeDate(Date campaignFormMetaChangeDate) { - this.campaignFormMetaChangeDate = campaignFormMetaChangeDate; - } } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureSyncDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureSyncDto.java index d049358ee40..d50afeb6f72 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureSyncDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/InfrastructureSyncDto.java @@ -41,8 +41,6 @@ public class InfrastructureSyncDto implements Serializable { private List deletedUserRoleConfigurationUuids; private List featureConfigurations; private List deletedFeatureConfigurationUuids; - private List campaigns; - private List campaignFormMetas; public boolean isInitialSyncRequired() { return initialSyncRequired; @@ -179,20 +177,4 @@ public List getDeletedFeatureConfigurationUuids() { public void setDeletedFeatureConfigurationUuids(List deletedFeatureConfigurationUuids) { this.deletedFeatureConfigurationUuids = deletedFeatureConfigurationUuids; } - - public List getCampaigns() { - return campaigns; - } - - public void setCampaigns(List campaigns) { - this.campaigns = campaigns; - } - - public List getCampaignFormMetas() { - return campaignFormMetas; - } - - public void setCampaignFormMetas(List campaignFormMetas) { - this.campaignFormMetas = campaignFormMetas; - } } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/ExternalMessageType.java b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/ExternalMessageType.java new file mode 100644 index 00000000000..cae9a675a7e --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/ExternalMessageType.java @@ -0,0 +1,14 @@ +package de.symeda.sormas.api.labmessage; + +import de.symeda.sormas.api.i18n.I18nProperties; + +public enum ExternalMessageType { + + LAB_MESSAGE, + PHYSICIANS_REPORT; + + public String toString() { + return I18nProperties.getEnumCaption(this); + } + +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageCriteria.java index 97c98ec578c..574cf99e966 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageCriteria.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageCriteria.java @@ -17,8 +17,10 @@ public class LabMessageCriteria extends BaseCriteria implements Serializable { public static final String BIRTH_DATE_FROM = "birthDateFrom"; public static final String BIRTH_DATE_TO = "birthDateTo"; public static final String ASSIGNEE = "assignee"; + public static final String TYPE = "type"; private String uuid; + private ExternalMessageType type; private LabMessageStatus labMessageStatus; private SampleReferenceDto sample; private String searchFieldLike; @@ -26,7 +28,6 @@ public class LabMessageCriteria extends BaseCriteria implements Serializable { private Date messageDateTo; private Date birthDateFrom; private Date birthDateTo; - private Boolean deleted = Boolean.FALSE; private UserReferenceDto assignee; public String getUuid() { @@ -37,6 +38,14 @@ public void setUuid(String uuid) { this.uuid = uuid; } + public ExternalMessageType getType() { + return type; + } + + public void setType(ExternalMessageType type) { + this.type = type; + } + public LabMessageStatus getLabMessageStatus() { return labMessageStatus; } @@ -94,14 +103,6 @@ public void setBirthDateTo(Date birthDateTo) { this.birthDateTo = birthDateTo; } - public Boolean getDeleted() { - return deleted; - } - - public void setDeleted(Boolean deleted) { - this.deleted = deleted; - } - public UserReferenceDto getAssignee() { return assignee; } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageDto.java index b7f31aafa09..6fcbc9ae7e4 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageDto.java @@ -50,8 +50,11 @@ public class LabMessageDto extends SormasToSormasShareableDto { public static final String LAB_MESSAGE_DETAILS = "labMessageDetails"; public static final String PROCESSED = "processed"; public static final String REPORT_ID = "reportId"; + public static final String STATUS = "status"; public static final String ASSIGNEE = "assignee"; + public static final String TEST_REPORTS = "testReports"; + private ExternalMessageType type; private Disease testedDisease; private Date messageDateTime; private Date sampleDateTime; @@ -112,6 +115,14 @@ public class LabMessageDto extends SormasToSormasShareableDto { */ private UserReferenceDto reportingUser; + public ExternalMessageType getType() { + return type; + } + + public void setType(ExternalMessageType type) { + this.type = type; + } + public Disease getTestedDisease() { return testedDisease; } @@ -391,4 +402,5 @@ public UserReferenceDto getReportingUser() { public void setReportingUser(UserReferenceDto reportingUser) { this.reportingUser = reportingUser; } + } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageFacade.java index 3677212b8f3..5a82b20303c 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageFacade.java @@ -8,10 +8,10 @@ import javax.validation.Valid; import de.symeda.sormas.api.ReferenceDto; +import de.symeda.sormas.api.common.Page; import de.symeda.sormas.api.sample.SampleReferenceDto; import de.symeda.sormas.api.user.UserReferenceDto; import de.symeda.sormas.api.utils.SortProperty; -import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableDto; @Remote public interface LabMessageFacade { @@ -44,6 +44,8 @@ public interface LabMessageFacade { List getIndexList(LabMessageCriteria criteria, Integer first, Integer max, List sortProperties); + Page getIndexPage(LabMessageCriteria criteria, Integer first, Integer max, List sortProperties); + /** * Fetches external lab messages from the connected external system and saves them in the database. * diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageIndexDto.java index 046543446a7..6f99537eeb5 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageIndexDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageIndexDto.java @@ -14,6 +14,7 @@ public class LabMessageIndexDto implements Serializable { public static final String UUID = "uuid"; public static final String MESSAGE_DATE_TIME = "messageDateTime"; + public static final String TYPE = "type"; public static final String LAB_NAME = "labName"; public static final String LAB_POSTAL_CODE = "labPostalCode"; public static final String TESTED_DISEASE = "testedDisease"; @@ -26,7 +27,7 @@ public class LabMessageIndexDto implements Serializable { public static final String ASSIGNEE = "assignee"; private String uuid; - + private ExternalMessageType type; private Date messageDateTime; private String labName; private String labPostalCode; @@ -41,6 +42,7 @@ public class LabMessageIndexDto implements Serializable { public LabMessageIndexDto( String uuid, + ExternalMessageType type, Date messageDateTime, String labName, String labPostalCode, @@ -58,6 +60,7 @@ public LabMessageIndexDto( String assigneeLastName) { this.uuid = uuid; + this.type = type; this.messageDateTime = messageDateTime; this.labName = labName; this.labPostalCode = labPostalCode; @@ -91,6 +94,14 @@ public void setUuid(String uuid) { this.uuid = uuid; } + public ExternalMessageType getType() { + return type; + } + + public void setType(ExternalMessageType type) { + this.type = type; + } + public Date getMessageDateTime() { return messageDateTime; } @@ -178,4 +189,5 @@ public UserReferenceDto getAssignee() { public void setAssignee(UserReferenceDto assignee) { this.assignee = assignee; } + } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleCriteria.java index 826b7e00cad..b27d97a04fe 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleCriteria.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleCriteria.java @@ -81,6 +81,11 @@ public void setRegion(RegionReferenceDto region) { this.region = region; } + public SampleCriteria region(RegionReferenceDto region) { + this.region = region; + return this; + } + public DistrictReferenceDto getDistrict() { return district; } @@ -89,6 +94,11 @@ public void setDistrict(DistrictReferenceDto district) { this.district = district; } + public SampleCriteria district(DistrictReferenceDto district) { + this.district = district; + return this; + } + public FacilityReferenceDto getLaboratory() { return laboratory; } @@ -180,6 +190,11 @@ public void setDisease(Disease disease) { this.disease = disease; } + public SampleCriteria disease(Disease disease) { + this.disease = disease; + return this; + } + public CaseReferenceDto getCaze() { return caze; } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleFacade.java index 7fec283d472..36bf99f3df8 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleFacade.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleFacade.java @@ -73,8 +73,6 @@ public interface SampleFacade { boolean isDeleted(String sampleUuid); - Map getNewTestResultCountByResultType(List caseIds); - List getByCaseUuids(List caseUuids); Boolean isSampleEditAllowed(String sampleUuid); diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleReferenceDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleReferenceDto.java index 43025092400..90e3cc4e792 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleReferenceDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleReferenceDto.java @@ -1,20 +1,17 @@ -/******************************************************************************* +/* * SORMAS® - Surveillance Outbreak Response Management & Analysis System * Copyright © 2016-2018 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.sample; import org.apache.commons.lang3.StringUtils; @@ -55,14 +52,22 @@ public static String buildCaption(SampleMaterial sampleMaterial, String caseUuid } stringBuilder.append(I18nProperties.getString(Strings.entitySample)); if (caseUuid != null) { - stringBuilder.append(StringUtils.wrap(I18nProperties.getString(Strings.forCase), " ")).append(DataHelper.getShortUuid(caseUuid)); + stringBuilder.append(StringUtils.wrap(I18nProperties.getString(Strings.forCase), " ")) + .append("(") + .append(DataHelper.getShortUuid(caseUuid)) + .append(")"); } if (contactUuid != null) { - stringBuilder.append(StringUtils.wrap(I18nProperties.getString(Strings.forContact), " ")).append(DataHelper.getShortUuid(contactUuid)); + stringBuilder.append(StringUtils.wrap(I18nProperties.getString(Strings.forContact), " ")) + .append("(") + .append(DataHelper.getShortUuid(contactUuid)) + .append(")"); } if (eventParticipantUuid != null) { stringBuilder.append(StringUtils.wrap(I18nProperties.getString(Strings.forEventParticipant), " ")) - .append(DataHelper.getShortUuid(eventParticipantUuid)); + .append("(") + .append(DataHelper.getShortUuid(eventParticipantUuid)) + .append(")"); } return stringBuilder.toString(); } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/task/TaskContext.java b/sormas-api/src/main/java/de/symeda/sormas/api/task/TaskContext.java index 9be5a26e180..6a07d13472b 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/task/TaskContext.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/task/TaskContext.java @@ -20,10 +20,13 @@ import de.symeda.sormas.api.feature.FeatureType; 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.DependingOnUserRight; public enum TaskContext { CASE(FeatureType.TASK_GENERATION_CASE_SURVEILLANCE, "cases", Strings.notificationTaskAssociatedCaseLink), + @DependingOnUserRight(UserRight.CONTACT_VIEW) CONTACT(FeatureType.TASK_GENERATION_CONTACT_TRACING, "contacts", Strings.notificationTaskAssociatedContactLink), EVENT(FeatureType.TASK_GENERATION_EVENT_SURVEILLANCE, "events", Strings.notificationTaskAssociatedEventLink), GENERAL(FeatureType.TASK_GENERATION_GENERAL, null, null), @@ -54,4 +57,5 @@ public String getAssociatedEntityLinkMessage() { public String toString() { return I18nProperties.getEnumCaption(this); } + } 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 new file mode 100644 index 00000000000..9e17743430c --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/user/DtoViewAndEditRights.java @@ -0,0 +1,118 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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.user; + +import de.symeda.sormas.api.campaign.CampaignDto; +import de.symeda.sormas.api.campaign.data.CampaignFormDataDto; +import de.symeda.sormas.api.campaign.form.CampaignFormMetaDto; +import java.util.HashMap; +import java.util.Map; + +import de.symeda.sormas.api.caze.CaseDataDto; +import de.symeda.sormas.api.clinicalcourse.ClinicalVisitDto; +import de.symeda.sormas.api.contact.ContactDto; +import de.symeda.sormas.api.event.EventDto; +import de.symeda.sormas.api.event.EventParticipantDto; +import de.symeda.sormas.api.immunization.ImmunizationDto; +import de.symeda.sormas.api.outbreak.OutbreakDto; +import de.symeda.sormas.api.person.PersonDto; +import de.symeda.sormas.api.report.AggregateReportDto; +import de.symeda.sormas.api.report.WeeklyReportDto; +import de.symeda.sormas.api.sample.AdditionalTestDto; +import de.symeda.sormas.api.sample.PathogenTestDto; +import de.symeda.sormas.api.sample.SampleDto; +import de.symeda.sormas.api.task.TaskDto; +import de.symeda.sormas.api.therapy.PrescriptionDto; +import de.symeda.sormas.api.therapy.TreatmentDto; +import de.symeda.sormas.api.visit.VisitDto; + +public class DtoViewAndEditRights { + + private static Map viewRights = new HashMap<>(); + private static Map editRights = new HashMap<>(); + + static { + viewRights.put(AdditionalTestDto.class.getSimpleName(), UserRight.ADDITIONAL_TEST_VIEW); + editRights.put(AdditionalTestDto.class.getSimpleName(), UserRight.ADDITIONAL_TEST_EDIT); + + viewRights.put(AggregateReportDto.class.getSimpleName(), UserRight.AGGREGATE_REPORT_VIEW); + editRights.put(AggregateReportDto.class.getSimpleName(), UserRight.AGGREGATE_REPORT_EDIT); + + viewRights.put(CaseDataDto.class.getSimpleName(), UserRight.CASE_VIEW); + editRights.put(CaseDataDto.class.getSimpleName(), UserRight.CASE_EDIT); + + viewRights.put(ClinicalVisitDto.class.getSimpleName(), UserRight.CLINICAL_COURSE_VIEW); + editRights.put(ClinicalVisitDto.class.getSimpleName(), UserRight.CLINICAL_VISIT_EDIT); + + viewRights.put(ContactDto.class.getSimpleName(), UserRight.CONTACT_VIEW); + editRights.put(ContactDto.class.getSimpleName(), UserRight.CONTACT_EDIT); + + viewRights.put(EventDto.class.getSimpleName(), UserRight.EVENT_VIEW); + editRights.put(EventDto.class.getSimpleName(), UserRight.EVENT_EDIT); + + viewRights.put(EventParticipantDto.class.getSimpleName(), UserRight.EVENTPARTICIPANT_VIEW); + editRights.put(EventParticipantDto.class.getSimpleName(), UserRight.EVENTPARTICIPANT_EDIT); + + viewRights.put(ImmunizationDto.class.getSimpleName(), UserRight.IMMUNIZATION_VIEW); + editRights.put(ImmunizationDto.class.getSimpleName(), UserRight.IMMUNIZATION_EDIT); + + viewRights.put(OutbreakDto.class.getSimpleName(), UserRight.OUTBREAK_VIEW); + editRights.put(OutbreakDto.class.getSimpleName(), UserRight.OUTBREAK_EDIT); + + // no explicit UserRight to view PathogenTestDto + editRights.put(PathogenTestDto.class.getSimpleName(), UserRight.PATHOGEN_TEST_EDIT); + + viewRights.put(PersonDto.class.getSimpleName(), UserRight.PERSON_VIEW); + editRights.put(PersonDto.class.getSimpleName(), UserRight.PERSON_EDIT); + + viewRights.put(PrescriptionDto.class.getSimpleName(), UserRight.CASE_VIEW); + editRights.put(PrescriptionDto.class.getSimpleName(), UserRight.PRESCRIPTION_EDIT); + + viewRights.put(SampleDto.class.getSimpleName(), UserRight.SAMPLE_VIEW); + editRights.put(SampleDto.class.getSimpleName(), UserRight.SAMPLE_EDIT); + + viewRights.put(TaskDto.class.getSimpleName(), UserRight.TASK_VIEW); + editRights.put(TaskDto.class.getSimpleName(), UserRight.TASK_EDIT); + + viewRights.put(TreatmentDto.class.getSimpleName(), UserRight.CASE_VIEW); + editRights.put(TreatmentDto.class.getSimpleName(), UserRight.TREATMENT_EDIT); + + // can be with CONTACT_VIEW, too. Currently all user roles that can view + // cases can also view contacts. + viewRights.put(VisitDto.class.getSimpleName(), UserRight.CASE_VIEW); + editRights.put(VisitDto.class.getSimpleName(), UserRight.VISIT_EDIT); + + viewRights.put(WeeklyReportDto.class.getSimpleName(), UserRight.WEEKLYREPORT_VIEW); + // no explicit UserRight to edit WeeklyReportDto + + viewRights.put(CampaignFormMetaDto.class.getSimpleName(), UserRight.CAMPAIGN_VIEW); + editRights.put(CampaignFormMetaDto.class.getSimpleName(), UserRight.CAMPAIGN_EDIT); + + viewRights.put(CampaignDto.class.getSimpleName(), UserRight.CAMPAIGN_VIEW); + editRights.put(CampaignDto.class.getSimpleName(), UserRight.CAMPAIGN_EDIT); + + viewRights.put(CampaignFormDataDto.class.getSimpleName(), UserRight.CAMPAIGN_VIEW); + editRights.put(CampaignFormDataDto.class.getSimpleName(), UserRight.CAMPAIGN_EDIT); + } + + public static UserRight getUserRightView(Class clazz) { + return viewRights.get(clazz.getSimpleName()); + } + + public static UserRight getUserRightEdit(Class clazz) { + return editRights.get(clazz.getSimpleName()); + } +} 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 ffb69e21517..9085306fc40 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 @@ -1,6 +1,6 @@ /******************************************************************************* * SORMAS® - Surveillance Outbreak Response Management & Analysis System - * Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) + * Copyright © 2016-2022 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 @@ -1305,7 +1305,8 @@ public enum UserRight { REST_EXTERNAL_VISITS_USER, UserRole.SORMAS_TO_SORMAS_CLIENT, COMMUNITY_OFFICER, - LAB_USER + LAB_USER, + NATIONAL_CLINICIAN ), SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION( REST_EXTERNAL_VISITS_USER, @@ -1329,7 +1330,8 @@ public enum UserRight { LAB_USER, REST_EXTERNAL_VISITS_USER, UserRole.SORMAS_TO_SORMAS_CLIENT, - COMMUNITY_OFFICER + COMMUNITY_OFFICER, + NATIONAL_CLINICIAN ), SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION( REST_EXTERNAL_VISITS_USER, @@ -1778,4 +1780,8 @@ public Set getDefaultUserRoles() { public String toString() { return I18nProperties.getEnumCaption(this); } + + public String getDescription() { + return I18nProperties.getEnumDescription(this); + } } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/CsvStreamUtils.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/CsvStreamUtils.java index 3b75eb5f2d4..e751e2160b8 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/utils/CsvStreamUtils.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/CsvStreamUtils.java @@ -132,8 +132,9 @@ public static void writeCsvContentToStream( int startIndex = 0; int stepSize = configFacade.getStepSizeForCsvExport(); - List exportRows = exportRowsSupplier.apply(startIndex, stepSize); - while (!exportRows.isEmpty()) { + List exportRows; + do { + exportRows = exportRowsSupplier.apply(startIndex, stepSize); try { for (T exportRow : exportRows) { for (int i = 0; i < readMethods.size(); i++) { @@ -164,8 +165,8 @@ public static void writeCsvContentToStream( writer.flush(); startIndex += stepSize; - exportRows = exportRowsSupplier.apply(startIndex, stepSize); } + while (!(exportRows.size() < stepSize)); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/DependingOnUserRight.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/DependingOnUserRight.java new file mode 100644 index 00000000000..0c77466d740 --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/DependingOnUserRight.java @@ -0,0 +1,30 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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; + +import de.symeda.sormas.api.user.UserRight; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ + ElementType.METHOD, + ElementType.FIELD }) +public @interface DependingOnUserRight { + UserRight value(); +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/InfoProvider.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/InfoProvider.java index 36788bf0088..8d637fba57f 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/utils/InfoProvider.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/InfoProvider.java @@ -77,7 +77,7 @@ static String createLastCommitHistoryUrl(String gitRemoteOriginUrl, String commi * @return */ public String getMinimumRequiredVersion() { - return "1.70.0"; + return "1.71.0"; } /** diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/fieldaccess/checkers/UserRightFieldAccessChecker.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/fieldaccess/checkers/UserRightFieldAccessChecker.java new file mode 100644 index 00000000000..7870fbc028f --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/fieldaccess/checkers/UserRightFieldAccessChecker.java @@ -0,0 +1,48 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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.fieldaccess.checkers; + +import java.lang.reflect.Field; + +import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.utils.DependingOnUserRight; +import de.symeda.sormas.api.utils.fieldaccess.FieldAccessChecker; + +public class UserRightFieldAccessChecker implements FieldAccessChecker { + + private final UserRight userRight; + private final boolean hasRight; + + public UserRightFieldAccessChecker(UserRight userRight, boolean hasRight) { + this.userRight = userRight; + this.hasRight = hasRight; + } + + @Override + public boolean isConfiguredForCheck(Field field, boolean withMandatory) { + return field.isAnnotationPresent(DependingOnUserRight.class) && userRight.equals(field.getAnnotation(DependingOnUserRight.class).value()); + } + + @Override + public boolean isEmbedded(Field field) { + return false; + } + + @Override + public boolean hasRight() { + return hasRight; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/fieldvisibility/checkers/UserRightFieldVisibilityChecker.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/fieldvisibility/checkers/UserRightFieldVisibilityChecker.java new file mode 100644 index 00000000000..88805462e39 --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/fieldvisibility/checkers/UserRightFieldVisibilityChecker.java @@ -0,0 +1,45 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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.fieldvisibility.checkers; + +import java.lang.reflect.AccessibleObject; +import java.util.function.Function; + +import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.utils.DependingOnUserRight; +import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers; + +public class UserRightFieldVisibilityChecker implements FieldVisibilityCheckers.FieldBasedChecker { + + private static final long serialVersionUID = 8043968534521138969L; + + final Function rightCheck; + + public UserRightFieldVisibilityChecker(Function rightCheck) { + this.rightCheck = rightCheck; + } + + @Override + public boolean isVisible(AccessibleObject field) { + if (field.isAnnotationPresent(DependingOnUserRight.class)) { + DependingOnUserRight annotation = field.getAnnotation(DependingOnUserRight.class); + + return rightCheck.apply(annotation.value()); + } + + return true; + } +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/pseudonymization/PseudonymizableDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/pseudonymization/PseudonymizableDto.java index 3ec516c9cd4..472b59fdd6c 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/utils/pseudonymization/PseudonymizableDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/pseudonymization/PseudonymizableDto.java @@ -20,6 +20,8 @@ public abstract class PseudonymizableDto extends EntityDto implements Pseudonymi private static final long serialVersionUID = 4181307802683421947L; + public static final String PSEUDONYMIZED = "pseudonymized"; + private boolean pseudonymized; public boolean isPseudonymized() { diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationAssociationType.java b/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationAssociationType.java new file mode 100644 index 00000000000..0ba6afb8599 --- /dev/null +++ b/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationAssociationType.java @@ -0,0 +1,9 @@ +package de.symeda.sormas.api.vaccination; + +public enum VaccinationAssociationType { + + CASE, + CONTACT, + EVENT_PARTICIPANT; + +} diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationListCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationListCriteria.java index 7f3361fbd3f..ad6f3de48e0 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationListCriteria.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/vaccination/VaccinationListCriteria.java @@ -15,10 +15,16 @@ package de.symeda.sormas.api.vaccination; +import java.util.List; + import de.symeda.sormas.api.Disease; +import de.symeda.sormas.api.caze.CaseReferenceDto; +import de.symeda.sormas.api.contact.ContactReferenceDto; +import de.symeda.sormas.api.event.EventParticipantReferenceDto; +import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; +import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.person.PersonReferenceDto; import de.symeda.sormas.api.utils.criteria.BaseCriteria; -import java.util.List; public class VaccinationListCriteria extends BaseCriteria { @@ -27,6 +33,12 @@ public class VaccinationListCriteria extends BaseCriteria { private final PersonReferenceDto personReferenceDto; private final List personReferences; private final Disease disease; + private VaccinationAssociationType vaccinationAssociationType; + private CaseReferenceDto caseReference; + private ContactReferenceDto contactReference; + private EventParticipantReferenceDto eventParticipantReference; + private RegionReferenceDto region; + private DistrictReferenceDto district; public static class Builder { @@ -71,4 +83,58 @@ public Disease getDisease() { public List getPersons() { return personReferences; } + + public VaccinationAssociationType getVaccinationAssociationType() { + return vaccinationAssociationType; + } + + public VaccinationListCriteria vaccinationAssociationType(VaccinationAssociationType vaccinationAssociationType) { + this.vaccinationAssociationType = vaccinationAssociationType; + return this; + } + + public CaseReferenceDto getCaseReference() { + return caseReference; + } + + public VaccinationListCriteria caseReference(CaseReferenceDto caseReference) { + this.caseReference = caseReference; + return this; + } + + public ContactReferenceDto getContactReference() { + return contactReference; + } + + public VaccinationListCriteria contactReference(ContactReferenceDto contactReference) { + this.contactReference = contactReference; + return this; + } + + public EventParticipantReferenceDto getEventParticipantReference() { + return eventParticipantReference; + } + + public VaccinationListCriteria eventParticipantReference(EventParticipantReferenceDto eventParticipantReference) { + this.eventParticipantReference = eventParticipantReference; + return this; + } + + public RegionReferenceDto getRegion() { + return region; + } + + public VaccinationListCriteria region(RegionReferenceDto region) { + this.region = region; + return this; + } + + public DistrictReferenceDto getDistrict() { + return district; + } + + public VaccinationListCriteria district(DistrictReferenceDto district) { + this.district = district; + return this; + } } diff --git a/sormas-api/src/main/resources/captions.properties b/sormas-api/src/main/resources/captions.properties index 4373acacb7a..50c98a814f7 100644 --- a/sormas-api/src/main/resources/captions.properties +++ b/sormas-api/src/main/resources/captions.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,11 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now caseCancelDeletion=Cancel case deletion - CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -446,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -529,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -580,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -597,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -621,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -632,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -695,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -704,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -721,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -804,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -827,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -952,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1009,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1017,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1069,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1111,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1186,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1208,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1222,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1239,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1264,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1286,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1349,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1377,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1422,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1441,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1474,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1482,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1503,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1520,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number: %s -messagesCharacters = Characters: %d / 160 -messagesNumberOfMessages = Nr. of messages: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number: %s +messagesCharacters=Characters: %d / 160 +messagesNumberOfMessages=Nr. of messages: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1570,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1597,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1611,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1636,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1653,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning: This might replace coordinates which were intentionally set differently! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1728,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1762,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1789,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1809,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1849,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1862,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1889,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1942,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2010,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2082,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in \u00B0 C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2276,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2285,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2307,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2317,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2370,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2390,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2403,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2418,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2442,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2458,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2474,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2512,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2521,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2533,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2574,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2600,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2610,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2639,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2650,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2672,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2681,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_ar-SA.properties b/sormas-api/src/main/resources/captions_ar-SA.properties new file mode 100644 index 00000000000..9cdba232bc5 --- /dev/null +++ b/sormas-api/src/main/resources/captions_ar-SA.properties @@ -0,0 +1,2582 @@ +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright � 2016-2022 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 . +############################################################################### +# General Captions +all=All +area=Area +city=City +postcode=Postcode +address=Address +communityName=Community +date=Date +description=Description +disease=Disease +districtName=District +edit=Edit +epiWeekFrom=From Epi Week +epiWeekTo=To Epi Week +facilityType=Facility type +facilityTypeGroup=Facility category +firstName=First name +sex=Sex +nationalHealthId=National health ID +passportNumber=Passport number +from=From +info=Info +lastName=Last name +menu=Menu +moreActions=More +name=Name +options=Options +regionName=Region +system=System +to=To +total=Total +notSpecified=Not specified +creationDate=Creation date +notAvailableShort=NA +inaccessibleValue=Confidential +numberOfCharacters=Number of characters\: %d / %d +remove=Remove +reportingUser=Reporting user +notTestedYet=Not tested yet +latestPathogenTest=Latest Pathogen test\: +unknown=Unknown +diseaseVariantDetails=Disease variant details +unassigned=Unassigned +assign=Assign +assignToMe=Assign to me +endOfProcessingDate=End of processing date +dearchiveReason=De-archive reason +# About +about=About +aboutAdditionalInfo=Additional Info +aboutCopyright=Copyright +aboutDocuments=Documents +aboutVersion=Version +aboutBrandedSormasVersion=%s powered by SORMAS +aboutCaseClassificationRules=Case Classification Rules (HTML) +aboutChangelog=Full Changelog +aboutDataDictionary=Data Dictionary (XLSX) +aboutSormasWebsite=Official SORMAS Website +aboutTechnicalManual=Technical Manual (PDF) +aboutWhatsNew=What's New? +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) +# Action +actionNewAction=New action +actionNoActions=There are no actions for this %s +actionCreatingLabel=Created at %s by %s +actionLastModifiedByLabel=Updated at %s by %s +actionStatusChangeDate=updated at %s +Action=Action +Action.title=Title +Action.description=Description +Action.reply=Comments on execution +Action.creatorUser=Created by +Action.date=Date +Action.event=Associated event +Action.priority=Priority +Action.actionContext=Action context +Action.actionStatus=Action status +Action.lastModifiedBy=Last modified by +Action.actionMeasure=Measure +# Actions +actionApplyDateFilter=Apply date filter +actionArchiveInfrastructure=Archive +actionArchiveCoreEntity=Archive +actionAssignNewEpidNumber=Assign new epid number +actionBack=Back +actionSend=Send +actionCancel=Cancel +actionClear=Clear +actionClearAll=Clear all +actionClose=Close +actionConfirm=Confirm +actionContinue=Continue +actionCreate=Create +actionDearchiveInfrastructure=De-Archive +actionDearchiveCoreEntity=De-Archive +actionDelete=Delete +actionDeselectAll=Deselect all +actionDeselectAndContinue=Deselect and continue +actionDisable=Disable +actionDiscard=Discard +actionGenerateNewPassword=Generate new password +actionGenerateNewPasswords=Generate new passwords +actionEnable=Enable +actionGenerate=Generate +actionImport=Import +actionImportAllCountries=Import default countries +actionImportAllContinents=Import default continents +actionImportAllSubcontinents=Import default subcontinents +actionLogout=Logout +actionNewEntry=New entry +actionOkay=Okay +actionConfirmFilters=Confirm filters +actionResetFilters=Reset filters +actionApplyFilters=Apply filters +actionSave=Save +actionSelectAll=Select all +actionShowLessFilters=Show Less Filters +actionShowMoreFilters=Show More Filters +actionSkip=Skip +actionMerge=Merge +actionPick=Pick +actionDismiss=Dismiss +actionCompare=Compare +actionHide=Hide +actionEnterBulkEditMode=Enter bulk edit mode +actionLeaveBulkEditMode=Leave bulk edit mode +actionDiscardChanges=Discard changes +actionSaveChanges=Save changes +actionAdjustChanges=Adjust changes +actionBackToNationOverview=Back to Nation Overview +actionSettings=User Settings +actionNewForm=New Form +actionOverwrite=Overwrite +actionRemindMeLater=Remind me later +actionGroupEvent=Group +actionUnclearLabMessage=Mark as unclear +actionManualForwardLabMessage=Mark as forwarded +actionAccept=Accept +actionReject=Reject +actionResetEnumCache=Reset enum cache +actionNo=No +actionYes=Yes +actionYesForAll=Yes, for all +actionYesForSome=Yes, for some +actionReset=Reset +actionSearch=Search +actionSaveAndOpenHospitalization=Save and open hospitalization +actionSaveAndOpenCase=Save and open case +actionSaveAndOpenContact=Save and open contact +actionSaveAndOpenEventParticipant=Save and open event participant +actionSaveAndContinue=Save and continue +actionDiscardAllAndContinue=Discard all and continue +actionDiscardAndContinue=Discard and continue +activityAsCaseFlightNumber=Flight number +ActivityAsCase=Activity as case +ActivityAsCase.startDate=Start of activity +ActivityAsCase.endDate=End of activity +ActivityAsCase.activityAsCaseDate=Activity date +ActivityAsCase.activityAsCaseType=Type of Activity +ActivityAsCase.activityAsCaseTypeDetails=Type of Activity details +ActivityAsCase.location=Location +ActivityAsCase.typeOfPlace=Type of place +ActivityAsCase.typeOfPlaceIfSG=Facility (IfSG) +ActivityAsCase.typeOfPlaceDetails=Type of place details +ActivityAsCase.meansOfTransport=Means of transport +ActivityAsCase.meansOfTransportDetails=Means of transport details +ActivityAsCase.connectionNumber=Connection number +ActivityAsCase.seatNumber=Seat number +ActivityAsCase.workEnvironment=Work environment +ActivityAsCase.gatheringType=Type of gathering +ActivityAsCase.gatheringDetails=Type of gathering details +ActivityAsCase.habitationType=Type of habitation +ActivityAsCase.habitationDetails=Type of habitation details +ActivityAsCase.role=Role +# AdditionalTest +additionalTestNewTest=New test result +AdditionalTest=Additional test +AdditionalTest.altSgpt=ALT/SGPT (U/L) +AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas +AdditionalTest.arterialVenousGasHco3=HCO3 (mEq/L) +AdditionalTest.arterialVenousGasPao2=PaO2 (mmHg) +AdditionalTest.arterialVenousGasPco2=pCO2 (mmHg) +AdditionalTest.arterialVenousGasPH=pH +AdditionalTest.astSgot=AST/SGOT (U/L) +AdditionalTest.conjBilirubin=Conj. bilirubin (umol/L) +AdditionalTest.creatinine=Creatinine (umol/L) +AdditionalTest.gasOxygenTherapy=Oxygen therapy at time of blood gas (L/min) +AdditionalTest.haemoglobin=Haemoglobin (g/L) +AdditionalTest.haemoglobinuria=Haemoglobin in urine +AdditionalTest.hematuria=Red blood cells in urine +AdditionalTest.otherTestResults=Other performed tests and results +AdditionalTest.platelets=Platelets (x10^9/L) +AdditionalTest.potassium=Potassium (mmol/L) +AdditionalTest.proteinuria=Protein in urine +AdditionalTest.prothrombinTime=Prothrombin Time (PT) +AdditionalTest.testDateTime=Date and time of result +AdditionalTest.totalBilirubin=Total bilirubin (umol/L) +AdditionalTest.urea=Urea (mmol/L) +AdditionalTest.wbcCount=WBC count (x10^9/L) +aggregateReportDeathsShort=D +aggregateReportLabConfirmationsShort=L +aggregateReportLastWeek=Last Week +aggregateReportDiscardSelection=Discard selection +aggregateReportEditAggregateReport=Edit aggregate report +aggregateReportEditReport=Edit report +aggregateReportReportFound=Aggregate report found +aggregateReportNewAggregateReport=New aggregate report +aggregateReportNewCasesShort=C +aggregateReportThisWeek=This Week +AggregateReport.disease=Disease +AggregateReport.newCases=New cases +AggregateReport.labConfirmations=Lab confirmations +AggregateReport.deaths=Deaths +AggregateReport.healthFacility=Facility +AggregateReport.pointOfEntry=Point of Entry +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID +# Bulk actions +bulkActions=Bulk Actions +bulkEditAssignee=Edit assignee +bulkCancelFollowUp=Cancel follow-up +bulkCaseClassification=Change case classification +bulkCaseOutcome=Change case outcome +bulkCaseShareWithReportingTool=Change share with reporting tool +bulkContactClassification=Change contact classification +bulkContactOfficer=Change contact officer +bulkDelete=Delete +bulkDisease=Change Disease +bulkEdit=Edit... +bulkEventInvestigationStatus=Change event investigation status +bulkEventManagementStatus=Change event management status +bulkEventParticipantsToContacts=Create contacts +bulkEventStatus=Change event status +bulkEventType=Change event type +bulkFacility=Change facility +bulkInvestigationStatus=Change investigation status +bulkLinkToEvent=Link to event +bulkLostToFollowUp=Set to lost to follow-up +bulkSurveillanceOfficer=Change surveillance officer +bulkTaskStatus=Change task status +bulkTaskAssignee=Change assignee +bulkTaskPriority=Change priority +# Campaign +campaignActiveCampaigns=Active campaigns +campaignAllCampaigns=All campaigns +campaignArchivedCampaigns=Archived campaigns +campaignNewCampaign=New campaign +campaignCampaignData=Campaign Data +campaignCampaignDataForm=Data Form +campaignCampaignForm=Form +campaignValidateForms=Validate Forms +campaignAdditionalForm=Add form +campaignAdditionalChart=Add chart +campaignDashboardChart=Campaign data chart +campaignDashboardTabName=Tab name +campaignDashboardSubTabName=Sub-tab name +campaignDashboardChartWidth=Width in % +campaignDashboardChartHeight=Height in % +campaignDashboardOrder=Order +campaignSearch=Search Campaign +campaignDiagramGroupBy=Group by +Campaign=Campaign +Campaign.name=Name +Campaign.description=Description +Campaign.startDate=Start date +Campaign.endDate=End date +Campaign.creatingUser=Creating user +Campaign.open=Open +Campaign.edit=Edit +Campaign.area=Area +Campaign.region=Region +Campaign.district=District +Campaign.community=Community +Campaign.grouping=Grouping +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area +CampaignFormData.edit=Edit +# CaseData +caseCasesList=Cases list +caseInfrastructureDataChanged=Infrastructure data has changed +caseCloneCaseWithNewDisease=Generate new case for +caseContacts=Contacts +caseDocuments=Case Documents +caseEditData=Edit data +caseEvents=Events +caseEventsResetDateFilter=Reset date filter +caseFilterWithoutGeo=Only cases without geo coordinates +caseFilterPortHealthWithoutFacility=Only port health cases without a facility +caseFilterCasesWithCaseManagementData=Only cases with case management data +caseFilterWithDifferentRegion=Show duplicates with differing regions +caseFilterExcludeSharedCases=Exclude cases shared from other jurisdictions +caseFilterWithoutResponsibleUser=Only cases without responsible user +caseFilterWithExtendedQuarantine=Only cases with extended quarantine +caseFilterWithReducedQuarantine=Only cases with reduced quarantine +caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine +caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition +caseFilterRelatedToEvent=Only cases with events +caseFilterOnlyFromOtherInstances=Only cases from other instances +caseFilterCasesWithReinfection=Only cases with reinfection +caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with reporting tool +caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool +caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool +caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' +caseFacilityDetailsShort=Facility name +caseNewCase=New case +casePlaceOfStay=Place of stay +caseActiveCases=Active cases +caseArchivedCases=Archived cases +caseAllCases=All cases +caseTransferCase=Transfer case +caseTransferCases=Transfer cases +caseReferFromPointOfEntry=Refer case from point of entry +casePickCase=Pick an existing case +caseCreateCase=Create a new case +caseDefaultView=Default view +caseDetailedView=Detailed view +caseFollowupVisitsView=Follow-up +caseMinusDays=Previous +casePlusDays=Next +caseMergeDuplicates=Merge duplicates +caseBackToDirectory=Back to case directory +caseNewCaseDate=Report or onset date +caseNoDiseaseVariant=no disease variant +caseOpenCasesGuide=Open cases guide +caseOpenMergeGuide=Open merge guide +caseCalculateCompleteness=Calculate completeness +caseClassificationCalculationButton=Calculate case classification +caseNumberOfDuplicatesDetected=%d potential duplicates detected +caseConfirmCase=Confirm case +convertEventParticipantToCase=Create case from event participant with positive test result? +convertContactToCase=Create case from contact with positive test result? +caseSearchSpecificCase=Search specific case +caseSearchCase=Search case +caseSelect=Select case +caseCreateNew=Create new case +caseDataEnterHomeAddressNow=Enter home address of the case person now +caseCancelDeletion=Cancel case deletion +CaseData=Case +CaseData.additionalDetails=General comment +CaseData.caseClassification=Case classification +CaseData.caseIdentificationSource=Case identification source +CaseData.screeningType=Screening +CaseData.clinicalConfirmation=Clinical confirmation +CaseData.community=Community +CaseData.epidemiologicalConfirmation=Epidemiological confirmation +CaseData.laboratoryDiagnosticConfirmation=Laboratory diagnostic confirmation +CaseData.caseConfirmationBasis=Basis for confirmation +CaseData.caseOfficer=Case officer +CaseData.caseOrigin=Case origin +CaseData.classificationComment=Classification comment +CaseData.classificationDate=Date of classification +CaseData.classificationUser=Classifying user +CaseData.classifiedBy=Classified by +CaseData.clinicalCourse=Clinical course +CaseData.clinicianName=Name of responsible clinician +CaseData.clinicianPhone=Phone number of responsible clinician +CaseData.clinicianEmail=Email address of responsible clinician +CaseData.contactOfficer=Contact officer +CaseData.dengueFeverType=Dengue fever type +CaseData.diseaseVariant=Disease variant +CaseData.diseaseDetails=Disease name +CaseData.district=District +CaseData.districtLevelDate=Date received at district level +CaseData.doses=How many doses +CaseData.epiData=Epidemiological data +CaseData.epidNumber=EPID number +CaseData.externalID=External ID +CaseData.externalToken=External Token +CaseData.internalToken=Internal Token +CaseData.facilityType=Facility type +CaseData.healthFacility=Facility +CaseData.healthFacilityDetails=Facility name & description +CaseData.hospitalization=Hospitalization +CaseData.investigatedDate=Date of investigation +CaseData.investigationStatus=Investigation status +CaseData.maternalHistory=Maternal history +CaseData.nationalLevelDate=Date received at national level +CaseData.noneHealthFacilityDetails=Place description +CaseData.notifyingClinic=Notifying clinic +CaseData.notifyingClinicDetails=Notifying clinic details +CaseData.numberOfVisits=Number of visits +CaseData.outcome=Outcome of case +CaseData.outcomeDate=Date of outcome +CaseData.person=Case person +CaseData.personUuid=Person ID +CaseData.personFirstName=First name +CaseData.personLastName=Last name +CaseData.plagueType=Plague type +CaseData.pointOfEntry=Point of entry +CaseData.pointOfEntryDetails=Point of entry name & description +CaseData.pointOfEntryName=Point of entry +CaseData.portHealthInfo=Port health +CaseData.postpartum=Postpartum +CaseData.pregnant=Pregnancy +CaseData.previousQuarantineTo=Previous quarantine end +CaseData.quarantineChangeComment=Quarantine change comment +CaseData.region=Region +CaseData.regionLevelDate=Date received at region level +CaseData.reportDate=Date of report +CaseData.reportingUser=Reporting user +CaseData.reportLat=Report GPS latitude +CaseData.reportLon=Report GPS longitude +CaseData.reportLatLonAccuracy=Report GPS accuracy in m +CaseData.sequelae=Sequelae +CaseData.sequelaeDetails=Sequelae Description +CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? +CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? +CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination +CaseData.vaccinationStatus=Vaccination status +CaseData.surveillanceOfficer=Responsible surveillance officer +CaseData.symptoms=Symptoms +CaseData.therapy=Therapy +CaseData.trimester=Trimester +CaseData.uuid=Case ID +CaseData.visits=Follow-up +CaseData.completeness=Completeness +CaseData.rabiesType=Rabies type +CaseData.healthConditions=Health conditions +CaseData.sharedToCountry=Share this case with the whole country +CaseData.quarantine=Quarantine +CaseData.quarantineTypeDetails=Quarantine details +CaseData.quarantineFrom=Quarantine start +CaseData.quarantineTo=Quarantine end +CaseData.quarantineHelpNeeded=Help needed in quarantine? +CaseData.quarantineHomePossible=Home-based quarantine possible? +CaseData.quarantineHomePossibleComment=Comment +CaseData.quarantineHomeSupplyEnsured=Supply ensured? +CaseData.quarantineHomeSupplyEnsuredComment=Comment +CaseData.quarantineOrderedVerbally=Quarantine ordered verbally? +CaseData.quarantineOrderedVerballyDate=Date of the verbal order +CaseData.quarantineOrderedOfficialDocument=Quarantine ordered by official document? +CaseData.quarantineOrderedOfficialDocumentDate=Date of the official document order +CaseData.quarantineExtended=Quarantine period extended? +CaseData.quarantineReduced=Quarantine period reduced? +CaseData.quarantineOfficialOrderSent=Official quarantine order sent? +CaseData.quarantineOfficialOrderSentDate=Date official quarantine order was sent +CaseData.healthFacilityName=Health facility +CaseData.followUpComment=Follow-up status comment +CaseData.followUpStatus=Follow-up status +CaseData.followUpUntil=Follow-up until +CaseData.overwriteFollowUpUntil=Overwrite follow-up until date +CaseData.symptomJournalStatus=Symptom journal status +CaseData.eventCount=Number of events +CaseData.latestEventId=Latest event ID +CaseData.latestEventStatus=Latest event status +CaseData.latestEventTitle=Latest event title +CaseData.latestSampleDateTime=Latest collection date +CaseData.caseIdIsm=Case-ID ISM +CaseData.contactTracingFirstContactType=Type of contact +CaseData.contactTracingFirstContactDate=Date of Contact +CaseData.wasInQuarantineBeforeIsolation=Was the case in quarantine before isolation? +CaseData.quarantineReasonBeforeIsolation=Reason why the case was in quarantine before this isolation +CaseData.quarantineReasonBeforeIsolationDetails=Other reason +CaseData.endOfIsolationReason=Reason for end of isolation +CaseData.endOfIsolationReasonDetails=Other reason +CaseData.sormasToSormasOriginInfo=Shared by +CaseData.nosocomialOutbreak=Resulted from nosocomial outbreak +CaseData.infectionSetting=Infection setting +CaseData.prohibitionToWork=Prohibition to work +CaseData.prohibitionToWorkFrom=Prohibition to work from +CaseData.prohibitionToWorkUntil=Prohibition to work until +CaseData.reInfection=Reinfection +CaseData.previousInfectionDate=Previous infection date +CaseData.reportingDistrict=Reporting district +CaseData.bloodOrganOrTissueDonated=Blood/organ/tissue donation in the last 6 months +CaseData.notACaseReasonNegativeTest=Negative test result for disease +CaseData.notACaseReasonPhysicianInformation=Information provided by physician +CaseData.notACaseReasonDifferentPathogen=Verification of different pathogen +CaseData.notACaseReasonOther=Other +CaseData.notACaseReasonDetails=Reason details +CaseData.followUpStatusChangeDate=Date of follow-up status change +CaseData.followUpStatusChangeUser=Responsible user +CaseData.expectedFollowUpUntil=Expected follow-up until +CaseData.surveillanceToolLastShareDate=Last shared with reporting tool +CaseData.surveillanceToolShareCount=Reporting tool share count +CaseData.surveillanceToolStatus=Reporting tool status +CaseData.differentPlaceOfStayJurisdiction=Place of stay of this case differs from its responsible jurisdiction +CaseData.differentPointOfEntryJurisdiction=Point of entry of this case differs from its responsible / place of stay jurisdiction +CaseData.responsibleRegion=Responsible region +CaseData.responsibleDistrict=Responsible district +CaseData.responsibleCommunity=Responsible community +CaseData.dontShareWithReportingTool=Don't share this case with the external reporting tool +CaseData.responsibleDistrictName=Responsible district +CaseData.caseReferenceDefinition=Reference definition +CaseData.pointOfEntryRegion=Point of entry region +CaseData.pointOfEntryDistrict=Point of entry district +CaseData.externalData=External data +CaseData.reinfectionStatus=Reinfection status +# CaseExport +CaseExport.address=Address +CaseExport.addressRegion=Address Region +CaseExport.addressDistrict=Address District +CaseExport.addressCommunity=Address Community +CaseExport.addressGpsCoordinates=GPS coordinates of the address +CaseExport.admittedToHealthFacility=Admitted as inpatient? +CaseExport.associatedWithOutbreak=Associated with outbreak? +CaseExport.ageGroup=Age group +CaseExport.burialInfo=Burial of case +CaseExport.country=Country +CaseExport.maxSourceCaseClassification=Classification of source case +CaseExport.contactWithRodent=Contact with rodent? +CaseExport.firstName=First name +CaseExport.id=Case SN +CaseExport.initialDetectionPlace=Place of initial detection +CaseExport.labResults=Lab results +CaseExport.lastName=Last name +CaseExport.sampleDates=Dates of sample collection +CaseExport.sampleTaken=Sample taken? +CaseExport.travelHistory=Travel history +CaseExport.numberOfPrescriptions=Number of prescriptions +CaseExport.numberOfTreatments=Number of treatments +CaseExport.numberOfClinicalVisits=Number of clinical assessments +CaseExport.sampleUuid1=Latest sample uuid +CaseExport.sampleDateTime1=Latest sample date time +CaseExport.sampleLab1=Latest sample laboratory +CaseExport.sampleResult1=Latest sample final laboratory result +CaseExport.sampleUuid2=2nd latest sample uuid +CaseExport.sampleDateTime2=2nd latest sample date time +CaseExport.sampleLab2=2nd latest sample laboratory +CaseExport.sampleResult2=2nd latest sample final laboratory result +CaseExport.sampleUuid3=3rd latest sample uuid +CaseExport.sampleDateTime3=3rd latest sample date time +CaseExport.sampleLab3=3rd latest sample laboratory +CaseExport.sampleResult3=3rd latest sample final laboratory result +CaseExport.otherSamples=Other samples taken +CaseExport.sampleInformation=Sample information +CaseExport.diseaseFormatted=Disease +CaseExport.quarantineInformation=Quarantine information +CaseExport.lastCooperativeVisitDate=Date of last cooperative visit +CaseExport.lastCooperativeVisitSymptomatic=Symptomatic at last cooperative visit? +CaseExport.lastCooperativeVisitSymptoms=Symptoms at last cooperative visit +CaseExport.traveled=Traveled outside of district +CaseExport.burialAttended=Visited a burial +CaseExport.reportingUserName=Reporting user +CaseExport.reportingUserRoles=Reporting user roles +CaseExport.followUpStatusChangeUserName=Responsible user +CaseExport.followUpStatusChangeUserRoles=Responsible user roles +# CaseHospitalization +CaseHospitalization=Hospitalization +CaseHospitalization.admissionDate=Date of visit or admission +CaseHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? +CaseHospitalization.dischargeDate=Date of discharge or transfer +CaseHospitalization.healthFacility=Hospital name +CaseHospitalization.hospitalizedPreviously=Was the patient hospitalized or did he/she visit a health clinic previously for this illness? +CaseHospitalization.isolated=Isolation +CaseHospitalization.isolationDate=Date of isolation +CaseHospitalization.leftAgainstAdvice=Left against medical advice +CaseHospitalization.previousHospitalizations=Previous hospitalizations +CaseHospitalization.intensiveCareUnit=Stay in the intensive care unit +CaseHospitalization.intensiveCareUnitStart=Start of the stay +CaseHospitalization.intensiveCareUnitEnd=End of the stay +CaseHospitalization.hospitalizationReason=Reason for hospitalization +CaseHospitalization.otherHospitalizationReason=Specify reason +# CaseImport +caseImportErrorDescription=Error description +caseImportMergeCase=Override existing case with changes from the imported case? +# CasePreviousHospitalization +CasePreviousHospitalization=Previous hospitalization +CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admissionDate=Date of admission +CasePreviousHospitalization.description=Description +CasePreviousHospitalization.dischargeDate=Date of discharge or transfer +CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community +CasePreviousHospitalization.healthFacility=Hospital +CasePreviousHospitalization.healthFacilityDetails=Hospital name & description +CasePreviousHospitalization.isolated=Isolation +CasePreviousHospitalization.isolationDate=Date of isolation +CasePreviousHospitalization.prevHospPeriod=Period of hospitalization +CasePreviousHospitalization.hospitalizationReason=Reason for hospitalization +CasePreviousHospitalization.otherHospitalizationReason=Specify reason +CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit +CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay +CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay +# ClinicalVisit +clinicalVisitNewClinicalVisit=New clinical assessment +ClinicalVisit=Clinical assessment +ClinicalVisit.bloodPressure=Blood pressure +ClinicalVisit.heartRate=Heart rate +ClinicalVisit.temperature=Temperature +ClinicalVisit.visitDateTime=Date and time of visit +ClinicalVisit.visitingPerson=Attending clinician +ClinicalVisit.visitRemarks=Clinician remarks +ClinicalVisitExport.caseUuid=Case ID +ClinicalVisitExport.caseName=Case name +columnAdditionalTests=Additional tests +columnDiseaseShort=Disease +columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) +columnNumberOfPendingTasks=Pending tasks +columnVaccineName=Vaccine name +columnVaccineManufacturer=Vaccine manufacturer +# Community +Community=Community +Community.archived=Archived +Community.externalID=External ID +communityActiveCommunities=Active communities +communityArchivedCommunities=Archived communities +communityAllCommunities=All communities +# Configuration +Configuration.Facilities=Facilities +Configuration.Outbreaks=Outbreaks +Configuration.PointsOfEntry=Points of Entry +Configuration.LineListing=Line Listing +# Contact +contactCancelFollowUp=Cancel follow-up +contactCaseContacts=Case contacts +contactContactsList=Contacts list +contactCreateContactCase=Create a case for this contact person +contactLostToFollowUp=Lost to follow-up +contactNewContact=New contact +contactOpenContactCase=Open case of this contact person +contactPersonVisits=All visits of contact person +contactRelated=Contact related +contactResumeFollowUp=Resume follow-up +contactSelect=Select contact +contactCreateNew=Create new contact +contactActiveContacts=Active contacts +contactArchivedContacts=Archived contacts +contactAllContacts=All contacts +contactContactsOverview=Contacts +contactDetailedOverview=Detailed +contactFollowUpVisitsOverview=Follow-up Visits +contactMinusDays=Previous +contactPlusDays=Next +contactNoContactsForEventParticipant=There are no contacts for this event participant +contactOnlyFromOtherInstances=Only contacts from other instances +contactOnlyHighPriorityContacts=Only high priority contacts +contactChooseCase=Choose Case +contactRemoveCase=Remove Case +contactChangeCase=Change Case +contactChooseSourceCase=Choose Source Case +contactOnlyQuarantineHelpNeeded=Help needed in quarantine +contactOnlyWithExtendedQuarantine=Only contacts with extended quarantine +contactOnlyWithReducedQuarantine=Only contacts with reduced quarantine +contactInludeContactsFromOtherJurisdictions=Include contacts from other jurisdictions +contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked to the specified event +contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event +contactFollowUpDay=Day +contactQuarantineNotOrdered=No quarantine ordered +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case +contactMergeDuplicates=Merge duplicates +contactBackToDirectory=Back to contact directory +contactOpenCasesGuide=Open contacts guide +contactOpenMergeGuide=Open merge guide +contactCalculateCompleteness=Calculate completeness +contactNumberOfDuplicatesDetected=%d potential duplicates detected +contactFilterWithDifferentRegion=Show duplicates with differing regions +Contact=Contact +Contact.additionalDetails=General comment +Contact.caseClassification=Classification of the source case +Contact.caze=Source case +Contact.caze.ageSex=Age, sex +Contact.caze.caseClassification=Case classification +Contact.caze.person=Name +Contact.caze.symptomsOnset=Symptoms onset +Contact.caze.uuid=Case ID +Contact.cazeDisease=Disease of source case +Contact.cazeDiseaseVariant=Disease variant of source case +Contact.cazeDistrict=District of source case +Contact.community=Responsible community +Contact.contactClassification=Contact classification +Contact.contactOfficer=Responsible contact officer +Contact.contactOfficerUuid=Responsible contact officer +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name +Contact.contactProximity=Type of contact +Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity +Contact.contactStatus=Contact status +Contact.description=Description of how contact took place +Contact.disease=Disease of source case +Contact.district=Responsible district +Contact.epiData=Epidemiological data +Contact.externalID=External ID +Contact.externalToken=External Token +Contact.internalToken=Internal Token +Contact.personUuid=Person ID +Contact.firstContactDate=Date of first contact +Contact.firstName=First name of contact person +Contact.followUpComment=Follow-up status comment +Contact.followUpStatus=Follow-up status +Contact.followUpUntil=Follow-up until +Contact.symptomJournalStatus=Symptom journal status +Contact.lastContactDate=Date of last contact +Contact.lastName=Last name of contact person +Contact.latestEventId=Latest event ID +Contact.latestEventTitle=Latest event title +Contact.multiDayContact=Multi-day contact +Contact.numberOfVisits=Number of visits +Contact.person=Contact person +Contact.previousQuarantineTo=Previous quarantine end +Contact.quarantine=Quarantine +Contact.quarantineChangeComment=Quarantine change comment +Contact.quarantineTypeDetails=Quarantine details +Contact.quarantineFrom=Quarantine start +Contact.quarantineHelpNeeded=Help needed in quarantine? +Contact.quarantineTo=Quarantine end +Contact.region=Responsible region +Contact.relationDescription=Relationship description +Contact.relationToCase=Relationship with case +Contact.reportDateTime=Report date +Contact.reportingUser=Reporting user +Contact.reportLat=Report GPS latitude +Contact.reportLon=Report GPS longitude +Contact.reportLatLonAccuracy=Report GPS accuracy in m +Contact.resultingCase=Resulting case +Contact.resultingCaseUser=Resulting case assigned by +Contact.returningTraveler=Returning Traveler +Contact.uuid=Contact ID +Contact.visits=Follow-up visits +Contact.highPriority=High priority contact +Contact.immunosuppressiveTherapyBasicDisease=Immunosuppressive therapy or basic disease is present +Contact.immunosuppressiveTherapyBasicDiseaseDetails=Please specify +Contact.careForPeopleOver60=Is the person medically/nursingly active in the care of patients or people over 60 years of age? +Contact.diseaseDetails=Disease name +Contact.caseIdExternalSystem=Case ID in external system +Contact.caseOrEventInformation=Case or event information +Contact.contactProximityDetails=Additional information on the type of contact +Contact.contactCategory=Contact Category +Contact.overwriteFollowUpUntil=Overwrite follow-up until date +Contact.regionUuid=Contact or Case Region +Contact.districtUuid=Contact or Case District +Contact.communityUuid=Contact or Case Community +Contact.quarantineHomePossible=Home-based quarantine possible? +Contact.quarantineHomePossibleComment=Comment +Contact.quarantineHomeSupplyEnsured=Supply ensured? +Contact.quarantineHomeSupplyEnsuredComment=Comment +Contact.quarantineOrderedVerbally=Quarantine ordered verbally? +Contact.quarantineOrderedVerballyDate=Date of the verbal order +Contact.quarantineOrderedOfficialDocument=Quarantine ordered by official document? +Contact.quarantineOrderedOfficialDocumentDate=Date of the official document order +Contact.quarantineExtended=Quarantine period extended? +Contact.quarantineReduced=Quarantine period reduced? +Contact.quarantineOfficialOrderSent=Official quarantine order sent? +Contact.quarantineOfficialOrderSentDate=Date official quarantine order was sent +Contact.endOfQuarantineReason=Reason for end of quarantine +Contact.endOfQuarantineReasonDetails=Other reason +Contact.prohibitionToWork=Prohibition to work +Contact.prohibitionToWorkFrom=Prohibition to work from +Contact.prohibitionToWorkUntil=Prohibition to work until +Contact.reportingDistrict=Reporting district +Contact.followUpStatusChangeDate=Date of follow-up status change +Contact.followUpStatusChangeUser=Responsible user +Contact.expectedFollowUpUntil=Expected follow-up until +Contact.vaccinationStatus=Vaccination status +# ContactExport +ContactExport.address=Address +ContactExport.addressDistrict=Address District +ContactExport.addressRegion=Address Region +ContactExport.addressCommunity=Address Community +ContactExport.burialAttended=Visited a burial +ContactExport.contactWithRodent=Contact with rodent? +ContactExport.directContactConfirmedCase=Direct contact with a confirmed case +ContactExport.directContactProbableCase=Direct contact with a probable or confirmed case +ContactExport.firstName=First name of contact person +ContactExport.lastCooperativeVisitDate=Date of last cooperative visit +ContactExport.lastCooperativeVisitSymptomatic=Symptomatic at last cooperative visit? +ContactExport.lastCooperativeVisitSymptoms=Symptoms at last cooperative visit +ContactExport.lastName=Last name of contact person +ContactExport.sourceCaseUuid=Source case ID +ContactExport.traveled=Traveled outside of district +ContactExport.travelHistory=Travel history +ContactExport.quarantineInformation=Quarantine information +ContactExport.reportingUserName=Reporting user +ContactExport.reportingUserRoles=Reporting user roles +ContactExport.followUpStatusChangeUserName=Responsible user +ContactExport.followUpStatusChangeUserRoles=Responsible user roles +# Dashboard +dashboardAlive=Alive +dashboardApplyCustomFilter=Apply custom filter +dashboardCanceledFollowUp=Canceled follow-up +dashboardCanceledFollowUpShort=Canceled F/U +dashboardCaseFatalityRateShort=CFR +dashboardCasesIn=Cases in +dashboardComparedTo=compared to +dashboardComparedToPreviousPeriod=%s compared to %s +dashboardCompletedFollowUp=Completed follow-up +dashboardCompletedFollowUpShort=Completed F/U +dashboardConfirmed=Confirmed +dashboardConfirmedContact=Confirmed contact +dashboardConfirmedNoSymptoms=Confirmed no symptoms +dashboardConfirmedUnknownSymptoms=Confirmed unknown symptoms +dashboardConvertedToCase=Converted to case +dashboardCooperative=Cooperative +dashboardCustom=Custom +dashboardCustomPeriod=Custom period +dashboardData=Data +dashboardDead=Dead +dashboardDiscarded=Discarded +dashboardDiseaseBurdenInfo=Disease Burden Information +dashboardDiseaseBurdenOutbreakDistricts=Outbreak Districts +dashboardDiseaseCarouselSlideShow=slide show +dashboardDiseaseDifference=Difference in Number of Cases +dashboardDiseaseDifferenceYAxisLabel=Difference +dashboardDone=Done +dashboardFatalities=Fatalities +dashboardFollowUpUntilShort=F/U Until +dashboardGrouping=Grouping +dashboardGt1ConfirmedCases=> 1 Confirmed Cases +dashboardGt1ProbableCases=> 1 Probable Cases +dashboardGt1SuspectCases=> 1 Suspect Cases +dashboardGtThreeDays=> 3 Days +dashboardFacilities=Facilities +dashboardHideOtherCountries=Hide other countries +dashboardHideOverview=Hide overview +dashboardHigh=High +dashboardIndeterminate=Indeterminate +dashboardInvestigated=Investigated +dashboardLastVisitGt48=Last Visit > 48h or No Visit +dashboardLastVisitLt24=Last Visit < 24h +dashboardLastVisitLt48=Last Visit < 48h +dashboardLastWeek=Last epi week\: %s +dashboardLastYear=Last year +dashboardLostToFollowUp=Lost to follow-up +dashboardLostToFollowUpShort=Lost To F/U +dashboardLow=Low +dashboardMapKey=Map Key +dashboardMapLayers=Layers +dashboardMapShowEpiSituation=Show epidemiological situation +dashboardMissed=Missed +dashboardNegative=Negative +dashboardNeverVisited=Never visited +dashboardNew=New +dashboardNewCases=New Cases +dashboardNewEvents=New Events +dashboardNewTestResults=Test Results +dashboardNoPopulationData=No population data available +dashboardNormal=Normal +dashboardNotACase=Not A Case +dashboardNotAContact=Not a contact +dashboardNotAnEvent=Not An Event +dashboardNotExecutable=Not Executable +dashboardNotVisitedFor=Contacts not visited for... +dashboardNotYetClassified=Not Yet Classified +dashboardNotYetClassifiedOnly=Only Not Yet Classified Cases +dashboardNumberOfCases=Number of Cases +dashboardNumberOfContacts=Number of Contacts +dashboardOneDay=1 Day +dashboardOutbreak=Outbreak +dashboardPending=Pending +dashboardPositive=Positive +dashboardPossible=Possible +dashboardProbable=Probable +dashboardReceived=Received +dashboardRemoved=Removed +dashboardRumor=Signal +dashboardSelectPeriod=Select Period +dashboardShipped=Shipped +dashboardShowAllDiseases=Show All Diseases +dashboardShowCases=Show cases +dashboardShowConfirmedContacts=Show confirmed contacts +dashboardShowContacts=Show contacts +dashboardShowEvents=Show events +dashboardShowFirstDiseases=Show First 6 Diseases +dashboardShowMinimumEntries=Always show at least 7 entries +dashboardShowRegions=Show regions +dashboardShowUnconfirmedContacts=Show unconfirmed contacts +dashboardSuspect=Suspect +dashboardSymptomatic=Symptomatic +dashboardThisWeek=This epi week\: %s +dashboardThisYear=This year\: %s +dashboardThreeDays=3 Days +dashboardToday=Today\: %s +dashboardTotal=Total +dashboardTwoDays=2 Days +dashboardUnavailable=Unavailable +dashboardUnconfirmed=Unconfirmed +dashboardUnconfirmedContact=Unconfirmed contact +dashboardUncooperative=Uncooperative +dashboardUnderFollowUp=Under follow-up +dashboardUnderFollowUpShort=Under F/U +dashboardUnknown=Unknown +dashboardYesterday=Yesterday\: %s +dashboardDayBefore=The day before\: %s +dashboardWeekBefore=The epi week before\: %s +dashboardPeriodBefore=The period before\: %s +dashboardSameDayLastYear=Same day last year\: %s +dashboardSameWeekLastYear=Same epi week last year\: %s +dashboardSamePeriodLastYear=Same period last year\: %s +dashboardLastReport=Last report\: +dashboardFollowUpStatusChart=Follow-up Status Chart +dashboardContactClassificationChart=Contact Classification Chart +dashboardFollowUpUntilChart=Follow-Up Until Chart +dashboardShowPercentageValues=Show percentage values +dashboardShowTotalValues=Show total values +dashboardShowDataLabels=Show data labels +dashboardHideDataLabels=Hide data labels +dashboardAggregatedNumber=Count +dashboardProportion=Proportion (%) +dashboardViewAsColumnChart=View as Column Chart +dashboardViewAsBarChart=View as Bar Chart +defaultRegion=Default Region +defaultDistrict=Default District +defaultCommunity=Default Community +defaultFacility=Default Facility +defaultLaboratory=Default Laboratory +defaultPointOfEntry=Default Point Of Entry +devModeCaseCount=Number of generated cases +devModeCaseDisease=Disease of the cases +devModeCaseDistrict=District of the cases +devModeCaseEndDate=Latest case start date +devModeCaseRegion=Region of the cases +devModeCaseStartDate=Earliest case start date +devModeContactCount=Number of generated contacts +devModeContactDisease=Disease of the contacts +devModeContactDistrict=District of the contacts +devModeContactEndDate=Latest contact start date +devModeContactRegion=Region of the contacts +devModeContactStartDate=Earliest contact start date +devModeContactCreateWithoutSourceCases=Create contacts without source cases +devModeContactCreateWithResultingCases=Create some contacts with resulting cases +devModeContactCreateMultipleContactsPerPerson=Create multiple contacts per person +devModeContactCreateWithVisits=Create visits for the contacts +devModeEventCasePercentage=Percentage of cases among participants +devModeEventCount=Number of generated Events +devModeEventDisease=Event Disease +devModeEventDistrict=District of the events +devModeEventEndDate=Latest event start date +devModeEventMaxContacts=Max contacts per participant +devModeEventMaxParticipants=Max participants per event +devModeEventMinContacts=Min contacts per participant +devModeEventMinParticipants=Min participants per event +devModeEventRegion=Region of the events +devModeEventStartDate=Earliest event start date +devModeSampleCount=Number of generated Samples +devModeSampleStartDate=Sample collected start date +devModeSampleEndDate=Sample collected end date +devModeSamplePathogenTestsToBePerformed=Request pathogen tests to be performed +devModeSampleAdditionalTestsToBePerformed=Request additional tests to be performed +devModeSampleExternalLabTesting=External Lab Testing +devModeSampleSendDispatch=Send/Dispatch +devModeSampleReceived=Received +devModeSampleComment=Comment +devModeSampleDisease=Disease of the sample +devModeSampleRegion=Region of the cases +devModeSampleDistrict=District of the sample +devModeSampleMaterial=Type of the sample +devModeSampleLaboratory=Laboratory +devModeGenerateCases=Generate Cases +devModeGenerateContacts=Generate Contacts +devModeGenerateEvents=Generate Events +devModeGenerateSamples=Generate Samples +devModeGeneratorSeed=Generator Seed +devModeLoadDefaultConfig=Load default config +devModeLoadPerformanceTestConfig=Load performance testing config +devModeUseSeed=Use Seed +DiseaseBurden.caseCount=New cases +DiseaseBurden.caseDeathCount=Fatalities +DiseaseBurden.casesDifference=Dynamic +DiseaseBurden.caseFatalityRate=CFR +DiseaseBurden.eventCount=Number of events +DiseaseBurden.outbreakDistrictCount=Outbreak districts +DiseaseBurden.previousCaseCount=Previous cases +# District +districtActiveDistricts=Active districts +districtArchivedDistricts=Archived districts +districtAllDistricts=All districts +District=District +District.archived=Archived +District.epidCode=Epid code +District.growthRate=Growth rate +District.population=Population +District.externalID=External ID +epiDataNoSourceContacts=No source contacts have been created for this case +EpiData=Epidemiological data +EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed +EpiData.exposureDetailsKnown=Exposure details known +EpiData.exposures=Exposures +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case +EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings +EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission +EpiData.contactWithSourceCaseKnown=Contacts with source case known +# Documents +documentUploadDocument=New document +documentNoDocuments=There are no documents for this %s +bulkActionCreatDocuments=Create quarantine order documents +# DocumentTemplate +DocumentTemplate=Document Template +DocumentTemplate.buttonUploadTemplate=Upload Template +DocumentTemplate.documentTemplateGuide=Document Template Guide +DocumentTemplate.plural=Document Templates +DocumentTemplate.EventHandout=Event Handout +DocumentTemplate.EventHandout.create=Create Event Handout +DocumentTemplate.QuarantineOrder=Quarantine Order +DocumentTemplate.QuarantineOrder.create=Create Quarantine Order +DocumentTemplate.QuarantineOrder.templates=Quarantine Order Templates +DocumentTemplate.uploadWorkflowTemplate=Upload %s +DocumentTemplate.uploadTemplate=Upload Template +DocumentTemplate.exampleTemplateCases=Example Template Cases +DocumentTemplate.exampleTemplateContacts=Example Template Contacts +DocumentTemplate.exampleTemplateEventHandout=Example Template Event Handout +DocumentTemplate.exampleTemplateEventParticipants=Example Template Event Participants +DocumentTemplate.exampleTemplateTravelEntries=Example Template Travel Entries +DocumentTemplate.uploadGeneratedDocumentToEntity=Also upload the generated document to this entity +DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated documents to the selected entities +DocumentTemplate.documentUploadWarning=Document upload warning +DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB +DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: +# Event +eventActiveEvents=Active events +eventArchivedEvents=Archived events +eventAllEvents=All events +eventActiveGroups=Active groups +eventArchivedGroups=Archived groups +eventAllGroups=All groups +eventEventActions=Event actions +eventEventParticipants=Event participants +eventEventsList=Events list +eventEvolutionDateWithStatus=%s evolution date +eventEvolutionCommentWithStatus=Nature of the %s evolution +eventNewEvent=New event +eventNewEventGroup=New event group +eventSearchEvent=Search event +eventSearchSpecificEvent=Search specific Event +linkEvent=Link event +linkEventGroup=Link event group +eventSelect=Select event +eventSelectGroup=Select event group +eventDefaultView=Events +eventActionsView=Actions +eventGroupsView=Groups +eventNoEventLinkedToCase=No event linked to case +eventNoEventLinkedToEventGroup=No event linked to event group +eventNoEventLinkedToContact=No event linked to contact +eventOnlyWithContactSourceCaseInvolved=Only events in which the contact's source case is involved +eventLinkToCases=See event cases +eventLinkToContacts=See event contacts +eventSubordinateEvents=Subordinate Events +eventSuperordinateEvent=Superordinate Event +eventUnlinkEvent=Unlink event +eventUnlinkEventGroup=Unlink event group +eventGroupListEvents=Navigate to event directory filtered on this event group +eventOpenSuperordinateEvent=Open event +eventEditEvent=Edit event +eventEditEventGroup=Edit event group +eventLinkToEventsWithinTheSameFacility=See events within the same facility +eventNoDisease=No disease +eventGroups=Event groups +eventGroupsMultiple=This event is related to %s event groups +eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool +eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool +eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool +Event=Event +Event.caseCount=Cases +Event.contactCount=Contacts +Event.contactCountMethod=Contact Count Method +Event.contactCountSourceInEvent=Contacts with source case in event +Event.deathCount=Fatalities +Event.diseaseDetails=Disease name +Event.diseaseShort=Disease +Event.diseaseVariant=Disease variant +singleDayEventDate=Date of event +singleDayEventEvolutionDate=Evolution date of event +Event.startDate=Start date +Event.eventActions=Event actions +Event.endDate=End date +Event.multiDayEvent=Multi-day event +Event.externalId=External ID +Event.externalToken=External Token +Event.eventTitle=Title +Event.eventDesc=Description +Event.nosocomial=Nosocomial +Event.eventInvestigationEndDate=Investigation end date +Event.eventInvestigationStartDate=Investigation start date +Event.eventInvestigationStatus=Investigation status +Event.eventLocation=Event location +Event.eventParticipants=Persons involved +Event.eventPersons=Persons involved +Event.eventStatus=Event status +Event.eventManagementStatus=Event management status +Event.eventIdentificationSource=Event identification source +Event.participantCount=Participants +Event.eventType=Event type +Event.informationSource=Source of information +Event.meansOfTransport=Means of transport +Event.meansOfTransportDetails=Means of transport details +Event.connectionNumber=Connection number +Event.travelDate=Travel date +Event.workEnvironment=Work environment +Event.numberOfPendingTasks=Pending tasks +Event.reportDateTime=Date of report +Event.reportingUser=Reporting user +Event.riskLevel=Epidemiological risk level +Event.specificRisk=Other specific risk +Event.evolutionDate=Evolution date +Event.evolutionComment=Nature of the evolution +Event.srcType=Source type +Event.srcEmail=Email +Event.srcInstitutionalPartnerType=Source institutional partner +Event.srcInstitutionalPartnerTypeDetails=Source institutional partner details +Event.srcFirstName=Source first name +Event.srcLastName=Source last name +Event.srcTelNo=Source telephone no +Event.srcMediaWebsite=Source media Website +Event.srcMediaName=Source media name +Event.srcMediaDetails=Source media details +Event.responsibleUser=Responsible user +Event.typeOfPlace=Type of place +Event.typeOfPlaceText=Specify other event place +Event.uuid=Event ID +Event.transregionalOutbreak=Transregional outbreak +Event.diseaseTransmissionMode=Primary mode of transmission +Event.infectionPathCertainty=Certainty of infection path +Event.humanTransmissionMode=Mode of human to human transmission +Event.parenteralTransmissionMode=Mode of parenteral transmission +Event.medicallyAssociatedTransmissionMode=Mode of medically associated transmission +Event.epidemiologicalEvidence=Epidemiological evidence +Event.laboratoryDiagnosticEvidence=Laboratory diagnostic evidence +Event.internalToken=Internal Token +Event.eventGroups=Groups +Event.latestEventGroup=Latest Event Group +Event.eventGroupCount=Event Group Count +# Event action +EventAction.eventUuid=Event id +EventAction.eventTitle=Event title +EventAction.eventDisease=Disease +EventAction.eventDiseaseVariant=Disease variant +EventAction.eventDiseaseDetails=Disease name +EventAction.eventIdentificationSource=Event identification source +EventAction.eventStatus=Event status +EventAction.eventRiskLevel=Event epidemiological risk level +EventAction.eventInvestigationStatus=Event investigation status +EventAction.eventEvolutionDate=Event evolution date +EventAction.eventEvolutionComment=Event evolution nature +EventAction.eventReportingUser=Event reporting user +EventAction.eventResponsibleUser=Event responsible user +EventAction.actionTitle=Action title +EventAction.actionDate=Action date +EventAction.actionCreationDate=Action creation date +EventAction.actionChangeDate=Action change date +EventAction.actionStatus=Action status +EventAction.actionPriority=Action priority +EventAction.actionLastModifiedBy=Action last modified by +# Event action export +EventActionExport.eventDate=Date of event +#Event export +# EventParticipant +eventParticipantAddPerson=Add participant +eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event +eventParticipantSelect=Select event participant +eventParticipantCreateNew=Create new event participant +eventParticipantActiveEventParticipants=Active event participants +eventParticipantAllEventParticipants=All event participants +eventParticipantArchivedEventParticipants=Archived event participants +EventParticipant=Event participant +EventParticipant.contactCount=Contact count +EventParticipant.event=Event +EventParticipant.caseUuid=Case ID +EventParticipant.approximateAge=Age +EventParticipant.name=Name +EventParticipant.sex=Sex +EventParticipant.responsibleRegion=Responsible Region +EventParticipant.responsibleDistrict=Responsible District +EventParticipant.personUuid=Person ID +EventParticipant.involvementDescription=Involvement description +EventParticipant.person=Person +EventParticipant.uuid=Event participant ID +EventParticipant.region=Responsible region +EventParticipant.district=Responsible district +EventParticipant.vaccinationStatus=Vaccination status +#EventParticipant export +EventParticipantExport.eventParticipantU=Event disease +EventParticipantExport.eventDisease=Event disease +EventParticipantExport.eventTypeOfPlace=Event type +EventParticipantExport.eventStartDate=Event start date +EventParticipantExport.eventEndDate=Event end date +EventParticipantExport.eventTitle=Event title +EventParticipantExport.eventDescription=Event description +EventParticipantExport.eventRegion=Event region +EventParticipantExport.eventDistrict=Event district +EventParticipantExport.eventCommunity=Event community +EventParticipantExport.eventCity=Event city +EventParticipantExport.eventStreet=Event street +EventParticipantExport.eventHouseNumber=Event house number +EventParticipantExport.ageGroup=Age group +EventParticipantExport.addressRegion=Address Region +EventParticipantExport.addressDistrict=Address District +EventParticipantExport.addressCommunity=Address Community +EventParticipantExport.addressGpsCoordinates=GPS coordinates of the address +EventParticipantExport.burialInfo=Burial of person +EventParticipantExport.sampleInformation=Sample information +EventParticipantExport.personNationalHealthId=Person National Health Id +EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description +EventParticipantExport.eventParticipantUuid=Event participant ID +# Event Group +EventGroup=Event group +EventGroup.uuid=Group id +EventGroup.name=Group name +EventGroup.eventCount=Event count +# Expo +export=Export +exportBasic=Basic Export +exportDetailed=Detailed Export +exportCustom=Custom Export +exportFollowUp=Follow-up Export +exportInfrastructureData=Infrastructure data +exportSamples=Sample export +exportSelectSormasData=Select all SORMAS data +exportSormasData=SORMAS data +exportCaseManagement=Case Management Export +exportCaseCustom=Custom Case Export +exportNewExportConfiguration=New Export Configuration +exportEditExportConfiguration=Edit Export Configuration +exportConfigurationData=Configuration data +ExportConfiguration.NAME=Configuration name +ExportConfiguration.myExports=My exports +ExportConfiguration.sharedExports=Shared exports +ExportConfiguration.sharedToPublic=Shared to public +exposureFlightNumber=Flight number +exposureTimePeriod=Time period +exposureSourceCaseName=Name of source case +Exposure=Exposure +Exposure.probableInfectionEnvironment=Probable infection environment +Exposure.startDate=Start of exposure +Exposure.endDate=End of exposure +Exposure.exposureType=Type of activity +Exposure.exposureTypeDetails=Type of activity details +Exposure.location=Location +Exposure.typeOfPlace=Type of place +Exposure.typeOfPlaceDetails=Type of place details +Exposure.meansOfTransport=Means of transport +Exposure.meansOfTransportDetails=Means of transport details +Exposure.connectionNumber=Connection number +Exposure.seatNumber=Seat number +Exposure.workEnvironment=Work environment +Exposure.indoors=Indoors +Exposure.outdoors=Outdoors +Exposure.wearingMask=Wearing mask +Exposure.wearingPpe=Wearing appropriate PPE +Exposure.otherProtectiveMeasures=Other protective measures +Exposure.protectiveMeasuresDetails=Protective measures details +Exposure.shortDistance=< 1.5 m distance +Exposure.longFaceToFaceContact=> 15 min face-to-face contact +Exposure.animalMarket=Animal market +Exposure.percutaneous=Percutaneous exposure +Exposure.contactToBodyFluids=Contact to blood or body fluids +Exposure.handlingSamples=Handling samples (animal or human) +Exposure.eatingRawAnimalProducts=Eating raw or undercooked animal products +Exposure.handlingAnimals=Handling or butchering animals (or their remains) +Exposure.animalCondition=Condition of the animal +Exposure.animalVaccinated=Animal vaccinated +Exposure.animalContactType=Kind of contact to the animal +Exposure.animalContactTypeDetails=Kind of contact details +Exposure.contactToCase=Contact to source case +Exposure.gatheringType=Type of gathering +Exposure.gatheringDetails=Type of gathering details +Exposure.habitationType=Type of habitation +Exposure.habitationDetails=Type of habitation details +Exposure.typeOfAnimal=Type of animal +Exposure.typeOfAnimalDetails=Type of animal details +Exposure.physicalContactDuringPreparation=Has had direct physical contact during burial preparation ritual +Exposure.physicalContactWithBody=Has had direct physical contact with the (deceased) case at a funeral +Exposure.deceasedPersonIll=Was the deceased person ill? +Exposure.deceasedPersonName=Name of the deceased person +Exposure.deceasedPersonRelation=Relation to the deceased person +Exposure.bodyOfWater=Contact with body of water +Exposure.waterSource=Water source +Exposure.waterSourceDetails=Water source details +Exposure.prophylaxis=Post-exposure prophylaxis +Exposure.prophylaxisDate=Date of prophylaxis +Exposure.riskArea=Risk area as defined by public health institution +Exposure.exposureDate=Exposure date +Exposure.exposureRole=Role +Exposure.largeAttendanceNumber=More than 300 attendees +# Facility +facilityActiveFacilities=Active facilities +facilityArchivedFacilities=Archived facilities +facilityAllFacilities=All facilities +Facility.CONFIGURED_FACILITY=Configured facility +Facility.NO_FACILITY=Home or other place +Facility.OTHER_FACILITY=Other facility +Facility=Facility +Facility.additionalInformation=Additional information +Facility.archived=Archived +Facility.areaType=Area type (urban/rural) +Facility.city=City +Facility.community=Community +Facility.district=District +Facility.externalID=External ID +Facility.houseNumber=House number +Facility.latitude=Latitude +Facility.longitude=Longitude +Facility.postalCode=Postal code +Facility.street=Street +Facility.name=Name +Facility.publicOwnership=Public ownership +Facility.region=Region +Facility.type=Facility type +Facility.typeGroup=Facility category +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address +FeatureConfiguration.districtName=District +FeatureConfiguration.enabled=Line listing enabled? +FeatureConfiguration.endDate=End date +# Formats +formatNumberOfVisitsFormat=%d (%d missed) +formatNumberOfVisitsLongFormat=%d visits (%d missed) +formatSimpleNumberFormat=%d +# FollowUp +FollowUp.uuid=Follow-up ID +FollowUp.person=Follow-up person +FollowUp.reportDate=Date of report +FollowUp.followUpUntil=Follow-up until +# HealthConditions +HealthConditions=Health conditions +HealthConditions.tuberculosis=Tuberculosis +HealthConditions.asplenia=Asplenia +HealthConditions.hepatitis=Hepatitis +HealthConditions.diabetes=Diabetes +HealthConditions.hiv=HIV +HealthConditions.hivArt=Patient on ART? +HealthConditions.chronicLiverDisease=Liver disease +HealthConditions.malignancyChemotherapy=Malignancy +HealthConditions.chronicHeartFailure=Chronic heart failure +HealthConditions.chronicPulmonaryDisease=Chronic pulmonary disease +HealthConditions.chronicKidneyDisease=Renal disease +HealthConditions.chronicNeurologicCondition=Chronic neurological/neuromuscular disease +HealthConditions.congenitalSyphilis=Congenital syphilis +HealthConditions.downSyndrome=Down syndrome +HealthConditions.otherConditions=Additional relevant pre-existing conditions +HealthConditions.immunodeficiencyOtherThanHiv=Immunodeficiency other than HIV +HealthConditions.cardiovascularDiseaseIncludingHypertension=Cardiovascular disease including hypertension +HealthConditions.obesity=Obesity +HealthConditions.currentSmoker=Current smoker +HealthConditions.formerSmoker=Former smoker +HealthConditions.asthma=Asthma +HealthConditions.sickleCellDisease=Sickle cell disease +HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV +# Import +importDetailed=Detailed Import +importDownloadCaseImportTemplate=Download Case Import Template +importDownloadImportTemplate=Download Import Template +importDownloadDataDictionary=Download Data Dictionary +importDownloadErrorReport=Download Error Report +importDownloadImportGuide=Download Import Guide +importDuplicates=%d Skipped as Duplicates +importErrorDescription=Error description +importErrors=%d Error(s) +importImportData=Start Data Import +importImports=%d Imported +importLineListing=Line Listing Import +importProcessed=%d/%d Processed +importSkips=%d Skipped +importValueSeparator=Value separator +importCancelImport=Cancel import +infrastructureImportAllowOverwrite=Overwrite existing entries with imported data +#Lab Message +LabMessage=Lab Message +LabMessage.labMessageDetails=Lab message details +LabMessage.labSampleId=Lab sample ID +LabMessage.messageDateTime=Message date +LabMessage.personBirthDateDD=Day of birth +LabMessage.personBirthDateMM=Month of birth +LabMessage.personBirthDateYYYY=Year of birth +LabMessage.personCity=City +LabMessage.personFirstName=First name +LabMessage.personHouseNumber=House number +LabMessage.personLastName=Last name +LabMessage.personBirthDate=Birth date +LabMessage.personPostalCode=Postal code +LabMessage.personSex=Sex +LabMessage.personStreet=Street +LabMessage.status=Status +LabMessage.sampleDateTime=Date sample was collected +LabMessage.sampleMaterial=Type of sample +LabMessage.sampleReceivedDate=Sample received +LabMessage.specimenCondition=Specimen condition +LabMessage.testedDisease=Tested disease +LabMessage.labCity=Lab city +LabMessage.labExternalId=Lab external ID +LabMessage.labName=Lab name +LabMessage.labPostalCode=Lab postal code +labMessage.deleteNewlyCreatedCase=Delete new case you just created +labMessage.deleteNewlyCreatedContact=Delete new contact you just created +labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you just created +LabMessage.reportId=Report ID +LabMessage.sampleOverallTestResult=Overall test result +LabMessage.assignee=Assignee +LabMessage.type=Type +labMessageFetch=Fetch lab messages +labMessageProcess=Process +labMessageNoDisease=No tested disease found +labMessageNoNewMessages=No new messages available +labMessageForwardedMessageFound=Related forwarded lab message(s) found +labMessageLabMessagesList=Lab messages list +labMessageRelatedEntriesFound=Related entries found +LabMessageCriteria.messageDateFrom=Message date from... +LabMessageCriteria.messageDateTo=... to +LabMessageCriteria.birthDateFrom=Birth date from... +LabMessageCriteria.birthDateTo=... to +#Line listing +lineListing=Line listing +lineListingAddLine=Add line +lineListingDiseaseOfSourceCase=Disease of source case +lineListingInfrastructureData=Take over infrastructure data from last line +lineListingNewCasesList=List of new cases +lineListingNewContactsList=List of new contacts +lineListingSharedInformation=Shared information +lineListingEdit=Edit line listing +lineListingDisableAll=Disable all line listing +lineListingEnableForDisease=Enable line listing for disease +lineListingEnableAll=Enable all +lineListingDisableAllShort=Disable all +lineListingEndDate=End date +lineListingSetEndDateForAll=Set end date for all +# Location +Location=Location +Location.additionalInformation=Additional information +Location.addressType=Address Type +Location.addressTypeDetails=Address name / description +Location.areaType=Area type (urban/rural) +Location.details=Community contact person +Location.facility=Facility +Location.facilityDetails=Facility name & description +Location.facilityType=Facility type +Location.houseNumber=House number +Location.latitude=GPS latitude +Location.latLon=GPS lat and lon +Location.latLonAccuracy=GPS accuracy in m +Location.longitude=GPS longitude +Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region +Location.district=District +Location.community=Community +Location.street=Street +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address +# Login +Login.doLogIn=Log in +Login.login=Login +Login.password=password +Login.username=username +#LoginSidebar +LoginSidebar.diseaseDetection=Disease Detection +LoginSidebar.diseasePrevention=Disease Prevention +LoginSidebar.outbreakResponse=Outbreak Response +LoginSidebar.poweredBy=Powered By +# Messaging +messagesSendSMS=Send SMS +messagesSentBy=Sent by +messagesNoSmsSentForCase=No SMS sent to case person +messagesNoPhoneNumberForCasePerson=Case person has no phone number +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d +# Main Menu +mainMenuAbout=About +mainMenuCampaigns=Campaigns +mainMenuPersons=Persons +mainMenuCases=Cases +mainMenuConfiguration=Configuration +mainMenuContacts=Contacts +mainMenuDashboard=Dashboard +mainMenuEntries=Entries +mainMenuEvents=Events +mainMenuImmunizations=Immunizations +mainMenuReports=Reports +mainMenuSamples=Samples +mainMenuStatistics=Statistics +mainMenuTasks=Tasks +mainMenuUsers=Users +mainMenuAggregateReports=mSERS +mainMenuShareRequests=Shares +MaternalHistory.childrenNumber=Total number of children +MaternalHistory.ageAtBirth=Mother's age at birth of infant patient +MaternalHistory.conjunctivitis=Conjunctivitis +MaternalHistory.conjunctivitisOnset=Date of onset +MaternalHistory.conjunctivitisMonth=Month of pregnancy +MaternalHistory.maculopapularRash=Maculopapular rash +MaternalHistory.maculopapularRashOnset=Date of onset +MaternalHistory.maculopapularRashMonth=Month of pregnancy +MaternalHistory.swollenLymphs=Swollen lymph nodes +MaternalHistory.swollenLymphsOnset=Date of onset +MaternalHistory.swollenLymphsMonth=Month of pregnancy +MaternalHistory.arthralgiaArthritis=Arthralgia/Arthritis +MaternalHistory.arthralgiaArthritisOnset=Date of onset +MaternalHistory.arthralgiaArthritisMonth=Month of pregnancy +MaternalHistory.rubella=Laboratory-confirmed rubella +MaternalHistory.rubellaOnset=Date of onset +MaternalHistory.rashExposure=Exposure to rash during pregnancy +MaternalHistory.rashExposureDate=Date of exposure +MaternalHistory.rashExposureMonth=Month of pregnancy +MaternalHistory.rashExposureRegion=Region +MaternalHistory.rashExposureDistrict=District +MaternalHistory.rashExposureCommunity=Community +MaternalHistory.otherComplications=Other complications +MaternalHistory.otherComplicationsOnset=Date of onset +MaternalHistory.otherComplicationsMonth=Month of pregnancy +MaternalHistory.otherComplicationsDetails=Complication details +# Outbreak +outbreakAffectedDistricts=Affected districts +outbreakNoOutbreak=No outbreak +outbreakNormal=Normal +outbreakOutbreak=Outbreak +# PathogenTest +pathogenTestAdd=Add pathogen test +pathogenTestCreateNew=Create new pathogen test +pathogenTestNewResult=New result +pathogenTestNewTest=New test result +pathogenTestRemove=Remove this pathogen test +pathogenTestSelect=Select pathogen test +PathogenTest=Pathogen test +PathogenTests=Pathogen tests +PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer +PathogenTest.lab=Laboratory +PathogenTest.labDetails=Laboratory name & description +PathogenTest.testDateTime=Date and time of result +PathogenTest.testResult=Test result +PathogenTest.testResultText=Test result details +PathogenTest.testResultVerified=Result verified by lab supervisor +PathogenTest.testType=Type of test +PathogenTest.pcrTestSpecification=PCR/RT-PCR test specification +PathogenTest.testTypeText=Specify test details +PathogenTest.testedDisease=Tested disease +PathogenTest.testedDiseaseVariant=Tested disease variant +PathogenTest.testedDiseaseDetails=Tested disease name +PathogenTest.typingId=Typing ID +PathogenTest.serotype=Serotype +PathogenTest.cqValue=CQ/CT Value +PathogenTest.externalId=External ID +PathogenTest.reportDate=Report date +PathogenTest.viaLims=Via LIMS +PathogenTest.testedDiseaseVariantDetails=Disease variant details +PathogenTest.externalOrderId=External order ID +PathogenTest.preliminary=Preliminary +# Person +personPersonsList=Person list +personCreateNew=Create a new person +personFindMatching=Find matching persons +personSelect=Select a matching person +personSearchAndSelect=Select a different person +personAgeAndBirthdate=Age and birth date +personNoEventParticipantLinkedToPerson=No event participant linked to person +personNoCaseLinkedToPerson=No case linked to person +personNoContactLinkedToPerson=No contact linked to person +personLinkToEvents=See events for this person +personLinkToCases=See cases for this person +personLinkToContacts=See contacts for this person +personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! +personsSetMissingGeoCoordinates=Set Missing Geo Coordinates +personsUpdated=Persons Updated +Person=Person +Person.additionalDetails=General comment +Person.address=Home address +Person.addresses=Addresses +Person.approximateAge=Age +Person.approximateAgeReferenceDate=Last updated +Person.approximateAgeType=Unit +Person.birthdate=Date of birth (year / month / day) +Person.birthdateDD=Day of birth +Person.birthdateMM=Month of birth +Person.birthdateYYYY=Year of birth +Person.ageAndBirthDate=Age and birth date +Person.birthWeight=Birth weight (g) +Person.burialConductor=Burial conductor +Person.burialDate=Date of burial +Person.burialPlaceDescription=Burial place description +Person.business.occupationDetails=Type of business +Person.causeOfDeath=Cause of death +Person.causeOfDeathDetails=Specified cause of death +Person.causeOfDeathDisease=Responsible disease +Person.causeOfDeathDiseaseDetails=Responsible disease name +Person.deathDate=Date of death +Person.deathPlaceType=Death place type +Person.deathPlaceDescription=Death place description +Person.districtName=District +Person.educationType=Education +Person.educationDetails=Details +Person.fathersName=Father's name +Person.namesOfGuardians=Names of guardians +Person.gestationAgeAtBirth=Gestation age at birth (weeks) +Person.healthcare.occupationDetails=Position +Person.lastDisease=Last disease +Person.matchingCase=Matching case +Person.mothersMaidenName=Mother's maiden name +Person.mothersName=Mother's name +Person.nickname=Nickname +Person.occupationCommunity=Facility community +Person.occupationDetails=Details +Person.occupationDistrict=Facility district +Person.occupationFacility=Healthcare facility +Person.occupationFacilityDetails=Facility name & description +Person.occupationFacilityType=Facility type +Person.occupationRegion=Facility region +Person.occupationType=Type of occupation +Person.other.occupationDetails=Please specify occupation +Person.armedForcesRelationType=Staff of armed forces +Person.phone=Primary phone number +Person.phoneOwner=Owner of phone +Person.placeOfBirthRegion=Region of birth +Person.placeOfBirthDistrict=District of birth +Person.placeOfBirthCommunity=Community of birth +Person.placeOfBirthFacility=Facility of birth +Person.placeOfBirthFacilityDetails=Facility name & description +Person.placeOfBirthFacilityType=Facility type +Person.presentCondition=Present condition of person +Person.sex=Sex +Person.transporter.occupationDetails=Type of transport +Person.generalPractitionerDetails=General practitioner name and contact details +Person.emailAddress=Primary email address +Person.otherContactDetails=Other contact details +Person.passportNumber=Passport number +Person.nationalHealthId=National health ID +Person.uuid=Person ID +Person.hasCovidApp=Has COVID app +Person.covidCodeDelivered=COVID code was generated and delivered +Person.externalId=External ID +Person.externalToken=External Token +Person.internalToken=Internal Token +Person.symptomJournalStatus=Symptom journal status +Person.salutation=Salutation +Person.otherSalutation=Other salutation +Person.birthName=Birth name +Person.birthCountry=Country of birth +Person.citizenship=Citizenship +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name +pointOfEntryActivePointsOfEntry=Active points of entry +pointOfEntryArchivedPointsOfEntry=Archived points of entry +pointOfEntryAllPointsOfEntry=All points of entry +PointOfEntry.OTHER_AIRPORT=Other airport +PointOfEntry.OTHER_SEAPORT=Other seaport +PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing +PointOfEntry.OTHER_POE=Other point of entry +PointOfEntry=Point of entry +PointOfEntry.pointOfEntryType=Point of entry type +PointOfEntry.active=Active? +PointOfEntry.latitude=Latitude +PointOfEntry.longitude=Longitude +PointOfEntry.externalID=External ID +PointOfEntry.archived=Archived +populationDataMaleTotal=Male total +populationDataFemaleTotal=Female total +PortHealthInfo=Port health information +PortHealthInfo.airlineName=Airline name +PortHealthInfo.flightNumber=Flight number +PortHealthInfo.departureDateTime=Date and time of departure +PortHealthInfo.arrivalDateTime=Date and time of arrival +PortHealthInfo.freeSeating=Free seating? +PortHealthInfo.seatNumber=Seat number +PortHealthInfo.departureAirport=Departure airport +PortHealthInfo.numberOfTransitStops=Number of transit stops +PortHealthInfo.transitStopDetails1=Details about first transit stop +PortHealthInfo.transitStopDetails2=Details about second transit stop +PortHealthInfo.transitStopDetails3=Details about third transit stop +PortHealthInfo.transitStopDetails4=Details about fourth transit stop +PortHealthInfo.transitStopDetails5=Details about fifth transit stop +PortHealthInfo.vesselName=Vessel name +PortHealthInfo.vesselDetails=Vessel details +PortHealthInfo.portOfDeparture=Port of departure +PortHealthInfo.lastPortOfCall=Last port of call +PortHealthInfo.conveyanceType=Conveyance type +PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type +PortHealthInfo.departureLocation=Start location of travel +PortHealthInfo.finalDestination=Final destination +PortHealthInfo.details=Point of entry details +# Prescription +prescriptionNewPrescription=New prescription +Prescription=Prescription +Prescription.additionalNotes=Additional notes +Prescription.dose=Dose +Prescription.drugIntakeDetails=Drug name +Prescription.frequency=Frequency +Prescription.prescribingClinician=Prescribing clinician +Prescription.prescriptionDate=Date prescription issued +Prescription.prescriptionDetails=Prescription details +Prescription.prescriptionPeriod=Prescription period +Prescription.prescriptionRoute=Prescription route +Prescription.prescriptionEnd=Treatment end date +Prescription.prescriptionStart=Treatment start date +Prescription.prescriptionType=Prescription type +Prescription.route=Route +Prescription.routeDetails=Route specification +Prescription.typeOfDrug=Type of drug +PrescriptionExport.caseUuid=Case ID +PrescriptionExport.caseName=Case name +# Continent +continentActiveContinents=Active continents +continentArchivedContinents=Archived continents +continentAllContinents=All continents +Continent=Continent +Continent.archived=Archived +Continent.externalId=External ID +Continent.defaultName=Default name +Continent.displayName=Name +# Subcontinent +subcontinentActiveSubcontinents=Active subcontinents +subcontinentArchivedSubcontinents=Archived subcontinents +subcontinentAllSubcontinents=All subcontinents +Subcontinent=Subcontinent +Subcontinent.archived=Archived +Subcontinent.externalId=External ID +Subcontinent.defaultName=Default name +Subcontinent.displayName=Name +Subcontinent.continent=Continent name +# Country +countryActiveCountries=Active countries +countryArchivedCountries=Archived countries +countryAllCountries=All countries +Country=Country +Country.archived=Archived +Country.externalId=External ID +Country.defaultName=Default name +Country.displayName=Name +Country.isoCode=ISO code +Country.unoCode=UNO code +Country.subcontinent=Subcontinent +# Region +regionActiveRegions=Active regions +regionArchivedRegions=Archived regions +regionAllRegions=All regions +Region=Region +Region.archived=Archived +Region.epidCode=Epid code +Region.growthRate=Growth rate +Region.population=Population +Region.externalID=External ID +Region.country=Country +# Sample +sampleCreateNew=Create new sample +sampleIncludeTestOnCreation=Create test result for this sample now +sampleNewSample=New sample +sampleNoSamplesForCase=There are no samples for this case +sampleNoSamplesForContact=There are no samples for this contact +sampleNoSamplesForEventParticipant=There are no samples for this event participant +sampleNotShipped=Not shipped +sampleNotShippedLong=Not shipped yet +samplePending=Pending +sampleReceived=Received +sampleRefer=Refer to another laboratory +sampleReferred=Referred to other lab +sampleReferredFrom=Referred from +sampleReferredFromInternal=Referred from internal sample +sampleReferredShort=Referred +sampleReferredTo=Referred to +sampleReferredToInternal=Referred to internal sample +sampleSamplesList=Samples list +sampleSelect=Select sample +sampleShipped=Shipped +sampleSpecimenNotAdequate=Specimen not adequate +sampleActiveSamples=Active samples +sampleArchivedSamples=Archived samples +sampleAllSamples=All samples +sampleAssociationType=Sample type +Sample=Sample +Sample.additionalTestingRequested=Request additional tests to be performed? +Sample.additionalTestingStatus=Additional testing status +Sample.associatedCase=Associated case +Sample.associatedContact=Associated contact +Sample.associatedEventParticipant=Associated event participant +Sample.caseClassification=Case classification +Sample.caseDistrict=District +Sample.casePersonName=Corresponding person +Sample.caseRegion=Region +Sample.comment=Comment +Sample.diseaseShort=Disease +Sample.lab=Laboratory +Sample.labDetails=Laboratory name & description +Sample.labSampleID=Lab sample ID +Sample.fieldSampleID=Field sample ID +Sample.labUser=Lab user +Sample.noTestPossibleReason=Reason +Sample.otherLab=Referral laboratory +Sample.pathogenTestingRequested=Request pathogen tests to be performed? +Sample.pathogenTestCount=Number of tests +Sample.pathogenTestResult=Final laboratory result +Sample.received=Received +Sample.receivedDate=Date sample received at lab +Sample.referredToUuid=Sample referred to +Sample.reportDateTime=Date of report +Sample.reportInfo=Report date & user +Sample.reportingUser=Reporting user +Sample.requestedAdditionalTests=If you wish to request specific pathogen tests, tick each of them in the list below +Sample.requestedAdditionalTestsTags=Requested additional tests\: +Sample.requestedOtherAdditionalTests=Other requested additional tests +Sample.requestedOtherPathogenTests=Other requested pathogen tests +Sample.requestedPathogenTests=If you wish to request specific additional tests, tick each of them in the list below +Sample.requestedPathogenTestsTags=Requested pathogen tests\: +Sample.sampleCode=Sample code +Sample.sampleDateTime=Date sample was collected +Sample.sampleMaterial=Type of sample +Sample.sampleMaterialText=Specify other type +Sample.sampleSource=Sample source +Sample.shipmentDate=Date sample was sent +Sample.shipmentDetails=Dispatch details +Sample.shipped=Sent/dispatched +Sample.specimenCondition=Specimen condition +Sample.suggestedTypeOfTest=Suggested type of test +Sample.testResult=Test result +Sample.testStatusGen=Test status +Sample.testType=Type of test +Sample.typeOfTest=Type of test +Sample.uuid=Sample ID +Sample.samplePurpose=Purpose of the Sample +Sample.samplingReason=Reason for sampling/testing +Sample.samplingReasonDetails=Sampling reason details +SampleExport.additionalTestingRequested=Have additional tests been requested? +SampleExport.personAddressCaption=Address of case/contact/event participant person +SampleExport.personAge=Age of case/contact/event participant person +SampleExport.caseDistrict=District of case +SampleExport.caseCommunity=Community of case +SampleExport.caseFacility=Facility of case +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact +SampleExport.caseOutcome=Outcome of case +SampleExport.caseRegion=Region of case +SampleExport.caseReportDate=Case report date +SampleExport.personSex=Sex of case/contact/event participant person +SampleExport.caseUuid=Case UUID +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date +SampleExport.id=Sample SN +SampleExport.sampleReportDate=Sample report date +SampleExport.noTestPossibleReason=No test possible reason +SampleExport.pathogenTestType1=Latest pathogen test type +SampleExport.pathogenTestDisease1=Latest pathogen test disease +SampleExport.pathogenTestDateTime1=Latest pathogen test date +SampleExport.pathogenTestLab1=Latest pathogen test lab +SampleExport.pathogenTestResult1=Latest pathogen test result +SampleExport.pathogenTestVerified1=Latest pathogen test verified? +SampleExport.pathogenTestType2=2nd latest pathogen test type +SampleExport.pathogenTestDisease2=2nd latest pathogen test disease +SampleExport.pathogenTestDateTime2=2nd latest pathogen test date +SampleExport.pathogenTestLab2=2nd latest pathogen test lab +SampleExport.pathogenTestResult2=2nd latest pathogen test result +SampleExport.pathogenTestVerified2=2nd latest pathogen test verified? +SampleExport.pathogenTestType3=3rd latest pathogen test type +SampleExport.pathogenTestDisease3=3rd latest pathogen test disease +SampleExport.pathogenTestDateTime3=3rd latest pathogen test date +SampleExport.pathogenTestLab3=3rd latest pathogen test lab +SampleExport.pathogenTestResult3=3rd latest pathogen test result +SampleExport.pathogenTestVerified3=3rd latest pathogen test verified? +SampleExport.otherPathogenTestsDetails=Other pathogen tests +SampleExport.otherAdditionalTestsDetails=Are there other additional tests? +SampleExport.pathogenTestingRequested=Have pathogen tests been requested? +SampleExport.referredToUuid=Referred sample +SampleExport.requestedAdditionalTests=Requested additional tests +SampleExport.requestedPathogenTests=Requested pathogen tests +SampleExport.shipped=Sent/dispatched? +SampleExport.received=Received? +SampleExport.altSgpt=ALT/SGPT of latest additional test +SampleExport.arterialVenousBloodGas=Arterial/venous blood gas of latest additional test +SampleExport.arterialVenousGasHco3=HCO3 of latest additional test +SampleExport.arterialVenousGasPao2=PaO2 of latest additional test +SampleExport.arterialVenousGasPco2=pCO2 of latest additional test +SampleExport.arterialVenousGasPH=pH of latest additional test +SampleExport.astSgot=AST/SGOT of latest additional test +SampleExport.conjBilirubin=Conj. bilirubin of latest additional test +SampleExport.creatinine=Creatinine of latest additional test +SampleExport.gasOxygenTherapy=Oxygen therapy at time of blood gas of latest additional test +SampleExport.haemoglobin=Haemoglobin of latest additional test +SampleExport.haemoglobinuria=Haemoglobin in urine of latest additional test +SampleExport.hematuria=Red blood cells in urine of latest additional test +SampleExport.otherTestResults=Other performed tests and results of latest additional test +SampleExport.platelets=Platelets of latest additional test +SampleExport.potassium=Potassium of latest additional test +SampleExport.proteinuria=Protein in urine of latest additional test +SampleExport.prothrombinTime=Prothrombin Time of latest additional test +SampleExport.testDateTime=Date and time of latest additional test +SampleExport.totalBilirubin=Total bilirubin of latest additional test +SampleExport.urea=Urea of latest additional test +SampleExport.wbcCount=WBC count of latest additional test +# Immunization +Immunization=Immunization +Immunization.reportDate=Date of report +Immunization.externalId=External ID +Immunization.country=Immunization country +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details +Immunization.healthFacility=Facility +Immunization.healthFacilityDetails=Facility name & description +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list +linkImmunizationToCaseButton=Link case +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person +# Statistics +statisticsAddFilter=Add filter +statisticsAttribute=Attribute +statisticsAttributeSelect=Select an attribute +statisticsAttributeSpecification=Attribute specification +statisticsChartType=Chart type +statisticsDatabaseExport=Database Export +statisticsDontGroupColumns=Don't group columns +statisticsDontGroupRows=Don't group rows +statisticsDontGroupSeries=Don't group series +statisticsDontGroupX=Don't group x-axis +statisticsExchange=Exchange rows and columns +statisticsMapType=Map type +statisticsRemoveFilter=Remove filter +statisticsResetFilters=Reset filters +statisticsShowZeroValues=Show zero values +statisticsShowCaseIncidence=Show case incidence +statisticsSpecifySelection=Specify your selection +statisticsStatistics=Statistics +statisticsVisualizationType=Type +statisticsIncidenceDivisor=Incidence divisor +statisticsDataDisplayed=Data displayed +statisticsOpenSormasStats=Open Sormas-Stats +# Symptoms +symptomsLesionsLocations=Localization of the lesions +symptomsMaxTemperature=Maximum body temperature in ° C +symptomsSetClearedToNo=Set cleared to No +symptomsSetClearedToUnknown=Set cleared to Unknown +Symptoms=Symptoms +Symptoms.abdominalPain=Abdominal pain +Symptoms.alteredConsciousness=Altered level of consciousness +Symptoms.anorexiaAppetiteLoss=Anorexia/loss of appetite +Symptoms.backache=Backache +Symptoms.bedridden=Is the patient bedridden? +Symptoms.bilateralCataracts=Bilateral cataracts +Symptoms.blackeningDeathOfTissue=Blackening and death of tissue in extremities +Symptoms.bleedingVagina=Bleeding from vagina, other than menstruation +Symptoms.bloodInStool=Blood in stool +Symptoms.bloodPressureDiastolic=Blood pressure (diastolic) +Symptoms.bloodPressureSystolic=Blood pressure (systolic) +Symptoms.bloodUrine=Blood in urine (hematuria) +Symptoms.bloodyBlackStool=Bloody or black stools (melena) +Symptoms.buboesGroinArmpitNeck=Buboes in the groin, armpit or neck +Symptoms.bulgingFontanelle=Bulging fontanelle +Symptoms.chestPain=Chest pain +Symptoms.chillsSweats=Chills or sweats +Symptoms.confusedDisoriented=Confused or disoriented +Symptoms.congenitalGlaucoma=Congenital glaucoma +Symptoms.congenitalHeartDisease=Congenital heart disease +Symptoms.congenitalHeartDiseaseType=Heart disease type +Symptoms.congenitalHeartDiseaseDetails=Specify +Symptoms.conjunctivitis=Conjunctivitis (red eyes) +Symptoms.cough=Cough +Symptoms.coughWithSputum=Cough with sputum +Symptoms.coughWithHeamoptysis=Cough with heamoptysis +Symptoms.coughingBlood=Coughing up blood (haemoptysis) +Symptoms.darkUrine=Dark Urine +Symptoms.dehydration=Dehydration +Symptoms.developmentalDelay=Developmental delay +Symptoms.diarrhea=Diarrhea +Symptoms.difficultyBreathing=Difficulty breathing/Dyspnea +Symptoms.digestedBloodVomit=Digested blood/"coffee grounds" in vomit +Symptoms.eyePainLightSensitive=Pain behind eyes/Sensitivity to light +Symptoms.eyesBleeding=Bleeding from the eyes +Symptoms.fatigueWeakness=Fatigue/general weakness +Symptoms.fever=Fever +Symptoms.firstSymptom=First symptom +Symptoms.fluidInLungCavity=Fluid in the lung cavity +Symptoms.glasgowComaScale=Glasgow coma scale +Symptoms.gumsBleeding=Bleeding of the gums +Symptoms.headache=Headache +Symptoms.hearingloss=Acute hearing loss +Symptoms.heartRate=Heart rate (bpm) +Symptoms.height=Height (cm) +Symptoms.hemorrhagicSyndrome=Hemorrhagic syndrome +Symptoms.hiccups=Hiccups +Symptoms.hyperglycemia=Hyperglycemia +Symptoms.hypoglycemia=Hypoglycemia +Symptoms.injectionSiteBleeding=Bleeding from injection site +Symptoms.jaundice=Jaundice +Symptoms.jaundiceWithin24HoursOfBirth=Jaundice within 24 hours of birth? +Symptoms.jointPain=Joint pain or arthritis +Symptoms.kopliksSpots=Koplik's Spots +Symptoms.lesions=Vesiculopustular rash +Symptoms.lesionsAllOverBody=All over the body +Symptoms.lesionsArms=Arms +Symptoms.lesionsDeepProfound=Rash lesions deep and profound? +Symptoms.lesionsFace=Face +Symptoms.lesionsGenitals=Genitals +Symptoms.lesionsLegs=Legs +Symptoms.lesionsLocation=Localization of the rash +Symptoms.lesionsOnsetDate=Date of rash onset +Symptoms.lesionsPalmsHands=Palms of the hands +Symptoms.lesionsResembleImg1=Does the rash resemble the photo below? +Symptoms.lesionsResembleImg2=Does the rash resemble the photo below? +Symptoms.lesionsResembleImg3=Does the rash resemble the photo below? +Symptoms.lesionsResembleImg4=Does the rash resemble the photo below? +Symptoms.lesionsSameSize=All rash lesions the same size? +Symptoms.lesionsSameState=All rash lesions in same state of development? +Symptoms.lesionsSolesFeet=Soles of the feet +Symptoms.lesionsThatItch=Rash that itches +Symptoms.lesionsThorax=Thorax +Symptoms.lossOfSmell=New loss of smell +Symptoms.lossOfTaste=New loss of taste +Symptoms.wheezing=Wheezing +Symptoms.skinUlcers=Skin ulcers +Symptoms.inabilityToWalk=Inability to walk +Symptoms.inDrawingOfChestWall=Indrawing of chest wall +Symptoms.lossSkinTurgor=Loss of skin turgor +Symptoms.lymphadenopathy=Enlarged lymph nodes +Symptoms.lymphadenopathyAxillary=Enlarged lymph nodes, axillary +Symptoms.lymphadenopathyCervical=Enlarged lymph nodes, cervical +Symptoms.lymphadenopathyInguinal=Enlarged lymph nodes, inguinal +Symptoms.malaise=Malaise +Symptoms.meningealSigns=Meningeal signs +Symptoms.meningoencephalitis=Meningoencephalitis +Symptoms.microcephaly=Microcephaly +Symptoms.midUpperArmCircumference=Mid-upper arm circumf. (cm) +Symptoms.musclePain=Muscle pain +Symptoms.nausea=Nausea +Symptoms.neckStiffness=Stiff neck +Symptoms.noseBleeding=Nose bleed (epistaxis) +Symptoms.oedemaFaceNeck=Oedema of face/neck +Symptoms.oedemaLowerExtremity=Oedema of lower extremities +Symptoms.onsetDate=Date of symptom onset +Symptoms.onsetSymptom=First symptom +Symptoms.oralUlcers=Oral ulcers +Symptoms.otherHemorrhagicSymptoms=Other hemorrhagic symptoms +Symptoms.otherHemorrhagicSymptomsText=Specify other symptoms +Symptoms.otherNonHemorrhagicSymptoms=Other clinical symptoms +Symptoms.otherNonHemorrhagicSymptomsText=Specify other symptoms +Symptoms.otherComplications=Other complications +Symptoms.otherComplicationsText=Specify other complications +Symptoms.otitisMedia=Middle ear inflammation (otitis media) +Symptoms.painfulLymphadenitis=Painful lymphadenitis +Symptoms.palpableLiver=Palpable liver +Symptoms.palpableSpleen=Palpable spleen +Symptoms.patientIllLocation=Location where the patient became ill +Symptoms.pharyngealErythema=Pharyngeal erythema +Symptoms.pharyngealExudate=Pharyngeal exudate +Symptoms.pigmentaryRetinopathy=Pigmentary retinopathy +Symptoms.purpuricRash=Purpuric rash +Symptoms.radiolucentBoneDisease=Radiolucent bone disease +Symptoms.rapidBreathing=Rapid breathing +Symptoms.redBloodVomit=Fresh/red blood in vomit (hematemesis) +Symptoms.refusalFeedorDrink=Refusal to feed or drink +Symptoms.respiratoryRate=Respiratory rate (bpm) +Symptoms.runnyNose=Runny nose +Symptoms.seizures=Convulsions or Seizures +Symptoms.sepsis=Sepsis +Symptoms.shock=Shock (Systolic bp <90) +Symptoms.sidePain=Side pain +Symptoms.skinBruising=Bruising of the skin (petechiae/ecchymosis) +Symptoms.skinRash=Maculopapular rash +Symptoms.soreThroat=Sore throat/pharyngitis +Symptoms.stomachBleeding=Bleeding from the stomach +Symptoms.sunkenEyesFontanelle=Sunken eyes or fontanelle +Symptoms.swollenGlands=Swollen glands +Symptoms.splenomegaly=Splenomegaly +Symptoms.symptomatic=Symptomatic +Symptoms.symptomOnset=Date of symptom onset +Symptoms.symptomsComments=Comments +Symptoms.symptomsNotOccurred=Symptoms that did not occur during this illness +Symptoms.symptomsOccurred=Symptoms that occurred during this illness +Symptoms.symptomsUnknownOccurred=Symptoms with no reliable occurrence information +Symptoms.temperature=Current body temperature in ° C +Symptoms.temperatureSource=Source of body temperature +Symptoms.throbocytopenia=Thrombocytopenia +Symptoms.tremor=Tremor +Symptoms.unexplainedBleeding=Bleeding or bruising +Symptoms.unilateralCataracts=Unilateral cataracts +Symptoms.vomiting=Vomiting +Symptoms.convulsion=Convulsion +Symptoms.weight=Weight (kg) +Symptoms.hydrophobia=Hydrophobia +Symptoms.opisthotonus=Opisthotonus +Symptoms.anxietyStates=Anxiety states +Symptoms.delirium=Delirium +Symptoms.uproariousness=Uproariousness +Symptoms.paresthesiaAroundWound=Paresthesia/Pain around wound +Symptoms.excessSalivation=Excess salivation +Symptoms.insomnia=Sleeplessness (Insomnia) +Symptoms.paralysis=Paralysis +Symptoms.excitation=Excitation/Irritability +Symptoms.dysphagia=Difficulty in swallowing (Dysphagia) +Symptoms.aerophobia=Fear of flying (Aerophobia) +Symptoms.hyperactivity=Hyperactivity +Symptoms.paresis=Paresis +Symptoms.agitation=Agitation +Symptoms.ascendingFlaccidParalysis=Ascending flaccid paralysis +Symptoms.erraticBehaviour=Erratic behaviour +Symptoms.coma=Coma/Somnolence +Symptoms.fluidInLungCavityAuscultation=Fluid in lung cavity in auscultation +Symptoms.fluidInLungCavityXray=Fluid in cavity through X-Ray +Symptoms.abnormalLungXrayFindings=Abnormal lung X-Ray findings +Symptoms.conjunctivalInjection=Conjunctivitis +Symptoms.acuteRespiratoryDistressSyndrome=Acute respiratory distress syndrome +Symptoms.pneumoniaClinicalOrRadiologic=Pneumonia (clinical or radiologic) +Symptoms.respiratoryDiseaseVentilation=Respiratory disease requiring ventilation +Symptoms.feelingIll=Feeling ill +Symptoms.shivering=Shivering +Symptoms.fastHeartRate=Fast heart rate (Tachycardia) +Symptoms.oxygenSaturationLower94=Oxygen saturation < 94 % +Symptoms.feverishFeeling=Feverish feeling +Symptoms.weakness=General weakness +Symptoms.fatigue=Increased fatigue +Symptoms.coughWithoutSputum=Dry cough without sputum +Symptoms.breathlessness=Breathlessness at rest or during exertion +Symptoms.chestPressure=Pressure on the chest +Symptoms.blueLips=Blue lips +Symptoms.bloodCirculationProblems=General blood circulation problems +Symptoms.palpitations=Palpitations +Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) +Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) +Symptoms.urinaryRetention=Urinary retention +# Task +taskMyTasks=My tasks +taskNewTask=New task +taskNoTasks=There are no tasks for this %s +taskOfficerTasks=Officer tasks +taskActiveTasks=Active tasks +taskArchivedTasks=Archived tasks +taskAllTasks=All tasks +Task=Task +Task.assigneeReply=Comments on execution +Task.assigneeUser=Assigned to +Task.caze=Associated case +Task.contact=Associated contact +Task.contextReference=Associated link +Task.creatorComment=Comments on task +Task.creatorUser=Created by +Task.dueDate=Due date +Task.event=Associated event +Task.observerUsers=Observed by +Task.perceivedStart=Perceived start +Task.priority=Priority +Task.statusChangeDate=Status change date +Task.suggestedStart=Suggested start +Task.taskContext=Task context +Task.taskStatus=Task status +Task.taskType=Task type +Task.taskAssignee=Task assignee +Task.taskPriority=Task priority +Task.travelEntry=Travel entry +# TestReport +TestReport=Test report +TestReport.testDateTime=Date and time of result +TestReport.testLabCity=Lab city +TestReport.testLabExternalId=Lab external ID +TestReport.testLabName=Lab name +TestReport.testLabPostalCode=Lab postal code +TestReport.testResult=Test result +TestReport.testType=Type of test +# TravelEntry +travelEntryCreateCase=Create case +travelEntryOnlyRecoveredEntries=Only recovered entries +travelEntryOnlyVaccinatedEntries=Only vaccinated entries +travelEntryOnlyEntriesTestedNegative=Only entries tested negative +travelEntryOnlyEntriesConvertedToCase=Only entries converted to case +travelEntryOpenResultingCase=Open case of this travel entry +travelEntryActiveTravelEntries=Active travel entries +travelEntryArchivedTravelEntries=Archived travel entries +travelEntryAllTravelEntries=All travel entries +travelEntriesNoTravelEntriesForPerson=There are no travel entries for this person +TravelEntry=Travel entry +TravelEntry.person=Travel entry person +TravelEntry.reportDate=Date of report +TravelEntry.uuid=Travel Entry ID +TravelEntry.externalId=External ID +TravelEntry.personFirstName=Person First Name +TravelEntry.personLastName=Person Last Name +TravelEntry.homeDistrictName=Home District Name +TravelEntry.pointOfEntryName=Point of Entry Name +TravelEntry.recovered=Recovered +TravelEntry.vaccinated=Vaccinated +TravelEntry.testedNegative=Tested Negative +travelEntryNewTravelEntry=New travel entry +travelEntryPointOfEntry=Point of entry +TravelEntry.diseaseVariant=Disease variant +TravelEntry.responsibleRegion=Responsible region +TravelEntry.responsibleDistrict=Responsible district +TravelEntry.responsibleCommunity=Responsible community +TravelEntry.differentPointOfEntryJurisdiction=Point of entry jurisdiction differs from responsible jurisdiction +TravelEntry.pointOfEntryRegion=Region +TravelEntry.pointOfEntryDistrict=District +TravelEntry.pointOfEntryDetails=Point of entry details +TravelEntry.quarantine=Quarantine +TravelEntry.quarantineTypeDetails=Quarantine details +TravelEntry.quarantineFrom=Quarantine start +TravelEntry.quarantineTo=Quarantine end +TravelEntry.quarantineHelpNeeded=Help needed in quarantine? +TravelEntry.quarantineHomePossible=Home-based quarantine possible? +TravelEntry.quarantineHomePossibleComment=Comment +TravelEntry.quarantineHomeSupplyEnsured=Supply ensured? +TravelEntry.quarantineHomeSupplyEnsuredComment=Comment +TravelEntry.quarantineOrderedVerbally=Quarantine ordered verbally? +TravelEntry.quarantineOrderedVerballyDate=Date of the verbal order +TravelEntry.quarantineOrderedOfficialDocument=Quarantine ordered by official document? +TravelEntry.quarantineOrderedOfficialDocumentDate=Date of the official document order +TravelEntry.quarantineExtended=Quarantine period extended? +TravelEntry.quarantineReduced=Quarantine period reduced? +TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? +TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent +TravelEntry.dateOfArrival=Date of Arrival +travelEntryTravelEntriesList=Travel entries list +# Treatment +treatmentCreateTreatment=Create treatment +treatmentNewTreatment=New treatment +treatmentOpenPrescription=Open prescription +Treatment=Treatment +Treatment.additionalNotes=Additional notes +Treatment.dose=Dose +Treatment.drugIntakeDetails=Drug name +Treatment.executingClinician=Executing staff member +Treatment.openPrescription=Open prescription +Treatment.route=Route +Treatment.routeDetails=Route specification +Treatment.textFilter=Treatment type type or executing clinician +Treatment.treatmentDateTime=Treatment date & time +Treatment.treatmentDetails=Treatment details +Treatment.treatmentType=Treatment type +Treatment.typeOfDrug=Type of drug +Treatment.treatmentRoute=Treatment route +TreatmentExport.caseUuid=Case ID +TreatmentExport.caseName=Case name +# User +userNewUser=New user +userResetPassword=Create new password +userUpdatePasswordConfirmation=Really update password? +sync=Sync +syncUsers=Sync Users +syncErrors=%d Error(s) +syncSuccessful=%d Synced +syncProcessed=%d/%d Processed +User=User +User.active=Active? +User.associatedOfficer=Associated officer +User.hasConsentedToGdpr=GDPR +User.healthFacility=Facility +User.laboratory=Laboratory +User.limitedDisease=Limited disease +User.phone=Phone number +User.pointOfEntry=Assigned point of entry +User.userEmail=Email +User.userName=User name +User.userRoles=User roles +User.address=Address +User.uuid=UUID +# Vaccination +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease +Vaccination=Vaccination +Vaccination.uuid=Vaccination ID +Vaccination.reportDate=Report date +Vaccination.reportingUser=Reporting user +Vaccination.vaccinationDate=Vaccination date +Vaccination.vaccineName=Vaccine name +Vaccination.otherVaccineName=Vaccine name details +Vaccination.vaccineManufacturer=Vaccine manufacturer +Vaccination.otherVaccineManufacturer=Vaccine manufacturer details +Vaccination.vaccineType=Vaccine type +Vaccination.vaccineDose=Vaccine dose +Vaccination.vaccineInn=INN +Vaccination.vaccineBatchNumber=Batch number +Vaccination.vaccineUniiCode=UNII code +Vaccination.vaccineAtcCode=ATC code +Vaccination.vaccinationInfoSource=Vaccination info source +Vaccination.pregnant=Pregnant +Vaccination.trimester=Trimester +# Views +View.actions=Action Directory +View.groups=Group Directory +View.aggregatereports=Aggregate Reporting (mSERS) +View.aggregatereports.sub= +View.campaign.campaigns=Campaign Directory +View.campaign.campaigns.short=Campaigns +View.campaign.campaigndata=Campaign Data +View.campaign.campaigndata.short=Campaign Data +View.campaign.campaigndata.dataform=Campaign Data Form +View.campaign.campaigndata.dataform.short=Data Form +View.campaign.campaignstatistics=Campaign statistics +View.campaign.campaignstatistics.short=Campaign statistics +View.cases=Case Directory +View.cases.merge=Merge Duplicate Cases +View.cases.archive=Case Archive +View.cases.contacts=Case Contacts +View.cases.data=Case Information +View.cases.epidata=Case Epidemiological Data +View.cases.hospitalization=Case Hospitalization +View.cases.person=Case Person +View.cases.sub= +View.cases.symptoms=Case Symptoms +View.cases.therapy=Case Therapy +View.cases.clinicalcourse=Clinical Course +View.cases.maternalhistory=Maternal History +View.cases.porthealthinfo=Port Health Information +View.cases.visits=Case Visits +View.persons=Person Directory +View.persons.data=Person Information +View.configuration.communities=Communities Configuration +View.configuration.communities.short=Communities +View.configuration.districts=Districts Configuration +View.configuration.districts.short=Districts +View.configuration.documentTemplates=Document Templates Management +View.configuration.documentTemplates.short=Document Templates +View.configuration.facilities=Facilities Configuration +View.configuration.facilities.short=Facilities +View.configuration.laboratories=Laboratories Configuration +View.configuration.laboratories.short=Laboratories +View.configuration.pointsofentry=Points of Entry Configuration +View.configuration.pointsofentry.short=Points of Entry +View.configuration.outbreaks=Outbreaks Configuration +View.configuration.outbreaks.short=Outbreaks +View.configuration.areas=Areas Configuration +View.configuration.areas.short=Areas +View.configuration.countries=Countries Configuration +View.configuration.countries.short=Countries +View.configuration.subcontinents=Subcontinents Configuration +View.configuration.subcontinents.short=Subcontinents +View.configuration.continents=Continents Configuration +View.configuration.continents.short=Continents +View.configuration.regions=Regions Configuration +View.configuration.regions.short=Regions +View.configuration.templates=Templates Configuration +View.configuration.templates.short=Templates +View.configuration.userrights=User Rights Management +View.configuration.userrights.short=User Rights +View.configuration.devMode=Developer Options +View.configuration.devMode.short=Developer +View.configuration.populationdata=Population Data +View.configuration.populationdata.short=Population +View.configuration.linelisting=Line Listing Configuration +View.configuration.linelisting.short=Line Listing +View.contacts=Contact Directory +View.contacts.archive=Contact Archive +View.contacts.epidata=Contact Epidemiological Data +View.contacts.data=Contact Information +View.contacts.merge=Merge Duplicate Contacts +View.contacts.person=Contact Person +View.contacts.sub= +View.contacts.visits=Contact Visits +View.dashboard.contacts=Contacts Dashboard +View.dashboard.surveillance=Surveillance Dashboard +View.dashboard.campaigns=Campaigns Dashboard +View.events=Event Directory +View.events.archive=Event Archive +View.events.data=Event Information +View.events.eventactions=Event Actions +View.events.eventparticipants=Event Participants +View.events.sub= +View.events.eventparticipants.data=Event Participant Information +View.samples.labMessages=Lab Message Directory +View.reports=Weekly Reports +View.reports.sub= +View.samples=Sample Directory +View.samples.archive=Sample Archive +View.samples.data=Sample Information +View.samples.sub= +View.travelEntries=Travel Entries Directory +View.immunizations=Immunization Directory +View.statistics=Statistics +View.statistics.database-export=Database export +View.tasks=Task Management +View.tasks.archive=Task Archive +View.tasks.sub= +View.users=User Management +View.users.sub= +View.shareRequests=Share requests +# Visit +visitNewVisit=New visit +Visit=Visit +Visit.person=Visited person +Visit.symptoms=Symptoms +Visit.visitDateTime=Date and time of visit +Visit.visitRemarks=Visit remarks +Visit.visitStatus=Person available and cooperative? +Visit.origin=Visit origin +Visit.visitUser=Visiting officer +Visit.disease=Disease +Visit.reportLat=Report latitude +Visit.reportLon=Report longitude +# WeeklyReport +weeklyReportNoReport=Missing report +weeklyReportOfficerInformants=Informants +weeklyReportsInDistrict=Weekly Reports in %s +weeklyReportRegionOfficers=Officers +weeklyReportRegionInformants=Informants +WeeklyReport.epiWeek=Epi Week +WeeklyReport.year=Year +# WeeklyReportEntry +WeeklyReportEntry.numberOfCases=Cases reported +# WeeklyReportInformantSummary +WeeklyReportInformantSummary.informantReportDate=Informant report submission +WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant +# WeeklyReportOfficerSummary +WeeklyReportOfficerSummary.informants=Number of informants +WeeklyReportOfficerSummary.informantReports=Number of informant reports +WeeklyReportOfficerSummary.informantReportPercentage=Percentage +WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports +WeeklyReportOfficerSummary.officer=Officer +WeeklyReportOfficerSummary.officerReportDate=Officer report submission +WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer +# WeeklyReportRegionSummary +WeeklyReportRegionSummary.informants=Number of informants +WeeklyReportRegionSummary.informantReports=Number of informant reports +WeeklyReportRegionSummary.informantReportPercentage=Percentage +WeeklyReportRegionSummary.informantZeroReports=Number of informant zero reports +WeeklyReportRegionSummary.officers=Number of officers +WeeklyReportRegionSummary.officerReports=Number of officers reports +WeeklyReportRegionSummary.officerReportPercentage=Percentage +WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports +# SORMAS to SORMAS +SormasToSormasOptions.organization=Organization +SormasToSormasOptions.withAssociatedContacts=Share associated contacts +SormasToSormasOptions.withSamples=Share samples +SormasToSormasOptions.withEventParticipants=Share event participants +SormasToSormasOptions.withImmunizations=Share immunizations +SormasToSormasOptions.handOverOwnership=Hand over the ownership +SormasToSormasOptions.pseudonymizePersonalData=Exclude personal data +SormasToSormasOptions.pseudonymizeSensitiveData=Exclude sensitive data +SormasToSormasOptions.comment=Comment +sormasToSormasErrorDialogTitle=Error while sharing with another health department +sormasToSormasListTitle=Share +sormasToSormasShare=Share +sormasToSormasReturn=Return +sormasToSormasSync=Sync +sormasToSormasRevokeShare=Revoke +sormasToSormasCaseNotShared=This case is not shared +sormasToSormasContactNotShared=This contact is not shared +sormasToSormasSampleNotShared=This sample is not shared +sormasToSormasEventNotShared=This event is not shared +sormasToSormasEventParticipantNotShared=This event participant is not shared +sormasToSormasImmunizationNotShared=This immunization is not shared +sormasToSormasSharedWith=Shared with\: +sormasToSormasOwnedBy=Owned by +sormasToSormasSharedBy=Shared by +sormasToSormasSharedDate=On +sormasToSormasSentFrom=Sent from +sormasToSormasSendLabMessage=Send to another organization +sormasToSormasOriginInfo=Sent from +BAGExport=BAG Export +# Survnet Gateway +ExternalSurveillanceToolGateway.title=Reporting Tool +ExternalSurveillanceToolGateway.send=Send to reporting tool +ExternalSurveillanceToolGateway.unableToSend=Unable to send +ExternalSurveillanceToolGateway.confirmSend=Confirm sending +ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool +ExternalSurveillanceToolGateway.confirmDelete=Confirm delete +ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d +patientDiaryRegistrationError=Could not register person in the patient diary. +patientDiaryCancelError=Could not cancel external journal follow-up +patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. +showPlacesOnMap=Show +changeUserEmail=Change user email +SurveillanceReport=Report +SurveillanceReport.reportingType=Type of reporting +SurveillanceReport.creatingUser=Creating user +SurveillanceReport.reportDate=Date of report +SurveillanceReport.dateOfDiagnosis=Date of diagnosis +SurveillanceReport.facilityRegion=Facility region +SurveillanceReport.facilityDistrict=Facility district +SurveillanceReport.facilityType=Facility type +SurveillanceReport.facility=Facility +SurveillanceReport.facilityDetails=Facility details +SurveillanceReport.notificationDetails=Details +surveillanceReportNewReport=New report +surveillanceReportNoReportsForCase=There are no reports for this case +cancelExternalFollowUpButton=Cancel external follow-up +createSymptomJournalAccountButton=Create PIA Account +registerInPatientDiaryButton=Register in CLIMEDO eDiary +symptomJournalOptionsButton=PIA eDiary +patientDiaryOptionsButton=CLIMEDO eDiary +openInSymptomJournalButton=Open in PIA +openInPatientDiaryButton=Open in CLIMEDO +cancelExternalFollowUpPopupTitle=Cancel External Follow-Up +# User role/right +exportUserRoles=Export user roles +userRights=User Rights +userRight=User Right +UserRight.caption=Caption +UserRight.description=Description +UserRight.jurisdiction=Jurisdiction +UserRight.jurisdictionOfRole=Jurisdiction of role +SormasToSormasShareRequest.uuid=Request ID +SormasToSormasShareRequest.creationDate=Request date +SormasToSormasShareRequest.dataType=Type of data +SormasToSormasShareRequest.status=Status +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address +TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_cs-CZ.properties b/sormas-api/src/main/resources/captions_cs-CZ.properties index 9a3804127d4..01f6ed56343 100644 --- a/sormas-api/src/main/resources/captions_cs-CZ.properties +++ b/sormas-api/src/main/resources/captions_cs-CZ.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Vše area=Oblast @@ -59,10 +58,9 @@ unknown=Neznámý diseaseVariantDetails=Podrobnosti o variantě choroby unassigned=Nepřiřazeno assign=Přiřadit -assignToMe = Přiřadit mně +assignToMe=Přiřadit mně endOfProcessingDate=Datum ukončení zpracování dearchiveReason=Důvod pro vyjmutí z archivu - # About about=O aplikaci aboutAdditionalInfo=Dodatečné informace @@ -76,18 +74,16 @@ aboutDataDictionary=Datový slovník (XLSX) aboutSormasWebsite=Oficiální stránka SORMAS aboutTechnicalManual=Technická příručka (PDF) aboutWhatsNew=Co je nového? -aboutLabMessageAdapter = Adaptér zpráv laboratoře -aboutServiceNotAvailable = Není k dispozici -aboutExternalSurveillanceToolGateway = Vnější brána nástroje pro sledování -aboutDataProtectionDictionary = Slovník ochrany dat (XLSX) - +aboutLabMessageAdapter=Adaptér zpráv laboratoře +aboutServiceNotAvailable=Není k dispozici +aboutExternalSurveillanceToolGateway=Vnější brána nástroje pro sledování +aboutDataProtectionDictionary=Slovník ochrany dat (XLSX) # Action actionNewAction=Nová akce actionNoActions=Neexistují žádné akce pro tento %s actionCreatingLabel=Vytvořeno v %s od %s actionLastModifiedByLabel=Aktualizováno v %s od %s actionStatusChangeDate=aktualizováno v %s - Action=Akce Action.title=Název Action.description=Popis @@ -100,14 +96,13 @@ Action.actionContext=Kontext akce Action.actionStatus=Stav akce Action.lastModifiedBy=Naposledy upravil Action.actionMeasure=Měření - # Actions actionApplyDateFilter=Použít filtr data actionArchiveInfrastructure=Archivovat actionArchiveCoreEntity=Archivovat actionAssignNewEpidNumber=Přiřadit nové epid číslo actionBack=Zpět -actionSend = Odeslat +actionSend=Odeslat actionCancel=Zrušit actionClear=Vymazat actionClearAll=Vymazat vše @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Uložit a otevřít účastníka události actionSaveAndContinue=Uložit a pokračovat actionDiscardAllAndContinue=Zahodit vše a pokračovat actionDiscardAndContinue=Zahodit a pokračovat - activityAsCaseFlightNumber=Číslo letu - ActivityAsCase=Aktivita jako případ ActivityAsCase.startDate=Začátek aktivity ActivityAsCase.endDate=Konec aktivity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Druh shroažďovaných údajů ActivityAsCase.habitationType=Typ obydlí ActivityAsCase.habitationDetails=Detaily o typu obydlí ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=Nový výsledek zkoušky - AdditionalTest=Doplňková zkouška AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arteriální/žilní krevní plyn @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Datum a čas výsledku AdditionalTest.totalBilirubin=Celkem bilirubin (μmol/L) AdditionalTest.urea=Močovina (mmol/L) AdditionalTest.wbcCount=Počet WBC (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Minulý týden @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Potvrzení laboratoře AggregateReport.deaths=Úmrtí AggregateReport.healthFacility=Zařízení AggregateReport.pointOfEntry=Místo vstupu - -areaActiveAreas = Aktivní oblasti -areaArchivedAreas = Archivované oblasti -areaAllAreas = Všechny oblasti -Area.archived = Archivováno -Area.externalId = Externí ID - +areaActiveAreas=Aktivní oblasti +areaArchivedAreas=Archivované oblasti +areaAllAreas=Všechny oblasti +Area.archived=Archivováno +Area.externalId=Externí ID # Bulk actions bulkActions=Hromadné akce -bulkEditAssignee= Upravit pověřenou osobu +bulkEditAssignee=Upravit pověřenou osobu bulkCancelFollowUp=Zrušit následná opatření bulkCaseClassification=Změnit klasifikaci případu bulkCaseOutcome=Změnit výsledek případu @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Změnit kontrolního úředníka bulkTaskStatus=Změnit stav úlohy bulkTaskAssignee=Změnit pověřenou osobu bulkTaskPriority=Změnit prioritu - # Campaign campaignActiveCampaigns=Aktivní kampaně campaignAllCampaigns=Všechny kampaně @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Výška v % campaignDashboardOrder=Pořadí campaignSearch=Hledat kampaň campaignDiagramGroupBy=Seskupit podle - Campaign=Kampaň Campaign.name=Název Campaign.description=Popis @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=Okres Campaign.community=Komunita Campaign.grouping=Seskupování - -CampaignFormData.campaign = Kampaň -CampaignFormData.campaignFormMeta = Formulář -CampaignFormData.formDate = Datum formuláře -CampaignFormData.formValuesJson = Data formuláře -CampaignFormData.area = Oblast +CampaignFormData.campaign=Kampaň +CampaignFormData.campaignFormMeta=Formulář +CampaignFormData.formDate=Datum formuláře +CampaignFormData.formValuesJson=Data formuláře +CampaignFormData.area=Oblast CampaignFormData.edit=Upravit - # CaseData caseCasesList=Seznam případů caseInfrastructureDataChanged=Údaje o infrastruktuře se změnily @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Pouze případy s rozšířenou karanténou caseFilterWithReducedQuarantine=Pouze případy se sníženou karanténou caseFilterOnlyQuarantineHelpNeeded=Pomoc potřebná v karanténě caseFilterInludeCasesFromOtherJurisdictions=Včetně případů z jiných jurisdikcí -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Pouze případy, které splňují referenční definici +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Pouze případy, které splňují referenční definici caseFilterRelatedToEvent=Pouze případy s událostmi caseFilterOnlyFromOtherInstances=Pouze případy z jiných instancí caseFilterCasesWithReinfection=Pouze případy s reinfekcí @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Pouze případy, které ještě caseFilterOnlyCasesSharedWithExternalSurvToo=Pouze případy již sdílené s nástrojem pro podávání zpráv caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Pouze případy změněné od posledního sdíleného s nástrojem pro podávání zpráv caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Pouze případy označené 'Nesdílet s nástrojem hlášení' - caseFacilityDetailsShort=Název zařízení caseNewCase=Nový případ casePlaceOfStay=Místo pobytu @@ -352,7 +335,7 @@ caseArchivedCases=Archivované případy caseAllCases=Všechny případy caseTransferCase=Případ přenosu caseTransferCases=Případy přenosu -caseReferToFacility=Předat případ do zařízení +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Vybrat existující případ caseCreateCase=Vytvořit nový případ caseDefaultView=Výchozí zobrazení @@ -374,10 +357,10 @@ convertEventParticipantToCase=Vytvořit případ z účastníka události s pozi convertContactToCase=Vytvořit případ z kontaktu s pozitivním výsledkem testu? caseSearchSpecificCase=Hledat konkrétní případ caseSearchCase=Vyhledat případ -caseSelect= Vybrat případ +caseSelect=Vybrat případ caseCreateNew=Vytvořit nový případ caseDataEnterHomeAddressNow=Zadejte domovskou adresu osoby případu - +caseCancelDeletion=Zrušit odstranění případu CaseData=Případ CaseData.additionalDetails=Obecný komentář CaseData.caseClassification=Klasifikace případů @@ -445,7 +428,7 @@ CaseData.reportLat=Nahlásit GPS šířku CaseData.reportLon=Nahlásit GPS délku CaseData.reportLatLonAccuracy=Nahlásit přesnost GPS v m CaseData.sequelae=Následky -CaseData.sequelaeDetails=Popis následků +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Bylo v minulosti provedeno očkování neštovic? CaseData.smallpoxVaccinationScar=Je přítomna vakcinační jizva neštovic? CaseData.smallpoxLastVaccinationDate=Datum posledního očkování proti neštovicím @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Referenční definice CaseData.pointOfEntryRegion=Oblast místa vstupu CaseData.pointOfEntryDistrict=Okres místa vstupu CaseData.externalData=Externí data -CaseData.reinfectionStatus = Status reinfekce - +CaseData.reinfectionStatus=Status reinfekce # CaseExport CaseExport.address=Adresa CaseExport.addressRegion=Region adresy @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Oznamující uživatel CaseExport.reportingUserRoles=Role oznamujícího uživatele CaseExport.followUpStatusChangeUserName=Odpovědný uživatel CaseExport.followUpStatusChangeUserRoles=Role odpovědného uživatele - # CaseHospitalization CaseHospitalization=Hospitalizace CaseHospitalization.admissionDate=Datum návštěvy nebo přijetí @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Začátek pobytu CaseHospitalization.intensiveCareUnitEnd=Konec pobytu CaseHospitalization.hospitalizationReason=Důvod hospitalizace CaseHospitalization.otherHospitalizationReason=Zadejte důvod - - # CaseImport caseImportErrorDescription=Popis chyby caseImportMergeCase=Přepsat existující případ změnami z importovaného případu? - # CasePreviousHospitalization CasePreviousHospitalization=Předchozí hospitalizace CasePreviousHospitalization.admissionAndDischargeDate=Datum přijetí a propuštění -CasePreviousHospitalization.admittedToHealthFacility =Byl pacient přijat v zařízení jako neodkladný? +CasePreviousHospitalization.admittedToHealthFacility=Byl pacient přijat v zařízení jako neodkladný? CasePreviousHospitalization.admissionDate=Datum přijetí CasePreviousHospitalization.description=Popis CasePreviousHospitalization.dischargeDate=Datum propuštění nebo přemístění CasePreviousHospitalization.editColumn=Upravit +CasePreviousHospitalization.region=Oblast +CasePreviousHospitalization.district=Okres +CasePreviousHospitalization.community=Komunita CasePreviousHospitalization.healthFacility=Nemocnice CasePreviousHospitalization.healthFacilityDetails=Název a popis nemocnice CasePreviousHospitalization.isolated=Izolace @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Zadejte důvod CasePreviousHospitalization.intensiveCareUnit=Zůstat na jednotce intenzivní péče CasePreviousHospitalization.intensiveCareUnitStart=Začátek pobytu CasePreviousHospitalization.intensiveCareUnitEnd=Konec pobytu - # ClinicalVisit clinicalVisitNewClinicalVisit=Nové klinické hodnocení - ClinicalVisit=Klinické hodnocení ClinicalVisit.bloodPressure=Krevní tlak ClinicalVisit.heartRate=Tepová frekvence @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Teplota ClinicalVisit.visitDateTime=Datum a čas návštěvy ClinicalVisit.visitingPerson=Účast klinického lékaře ClinicalVisit.visitRemarks=Poznámky lékaře - ClinicalVisitExport.caseUuid=ID případu ClinicalVisitExport.caseName=Název případu - columnAdditionalTests=Doplňkové testy columnDiseaseShort=Nemoc columnLastPathogenTest=Nejnovější zkouška patogenu (CT/CQ-Hodnota) columnNumberOfPendingTasks=Čekající úkoly columnVaccineName=Název očkovací látky columnVaccineManufacturer=Výrobce očkovací látky - - # Community Community=Komunita Community.archived=Archivováno Community.externalID=Externí ID - communityActiveCommunities=Aktivní komunity communityArchivedCommunities=Archivované komunity communityAllCommunities=Všechny komunity - # Configuration Configuration.Facilities=Zařízení Configuration.Outbreaks=Ohniska Configuration.PointsOfEntry=Místo vstupu Configuration.LineListing=Řádek výpisu - # Contact contactCancelFollowUp=Zrušit následná opatření contactCaseContacts=Kontakty případu @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Pouze kontakty se zdrojovými případy contactOnlyWithSourceCaseInGivenEvent=Pouze kontakty, jejichž zdrojové případy jsou propojeny s touto událostí contactFollowUpDay=Den contactQuarantineNotOrdered=Žádná karanténa není nařízena -contactPersonPhoneNumber = Telefonní číslo kontaktní osoby -contactSourceCase = Zdrojový případ +contactPersonPhoneNumber=Telefonní číslo kontaktní osoby +contactSourceCase=Zdrojový případ contactMergeDuplicates=Sloučit duplikáty contactBackToDirectory=Zpět do adresáře kontaktů contactOpenCasesGuide=Otevřít návod ke kontaktům @@ -703,7 +675,6 @@ contactOpenMergeGuide=Otevřít průvodce sloučením contactCalculateCompleteness=Vypočítat úplnost contactNumberOfDuplicatesDetected=%d potenciálních duplikátů detekováno contactFilterWithDifferentRegion=Zobrazit duplikáty s různými regiony - Contact=Kontakt Contact.additionalDetails=Obecný komentář Contact.caseClassification=Klasifikace zdrojového případu @@ -720,10 +691,10 @@ Contact.community=Odpovědná komunita Contact.contactClassification=Klasifikace kontaktů Contact.contactOfficer=Odpovědný kontaktní úředník Contact.contactOfficerUuid=Odpovědný kontaktní úředník -Contact.contactIdentificationSource = Zdroj identifikace případu -Contact.contactIdentificationSourceDetails = Detail zdroje identifikace případů -Contact.tracingApp = Trasovací aplikace -Contact.tracingAppDetails = Podrobností Trasovací aplikace, např. název +Contact.contactIdentificationSource=Zdroj identifikace případu +Contact.contactIdentificationSourceDetails=Detail zdroje identifikace případů +Contact.tracingApp=Trasovací aplikace +Contact.tracingAppDetails=Podrobností Trasovací aplikace, např. název Contact.contactProximity=Typ kontaktu Contact.contactProximityLongForm=Typ kontaktu - pokud je jich více, vyberte nejbližší kontakt Contact.contactStatus=Stav kontaktu @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Datum změny statusu následných opatření Contact.followUpStatusChangeUser=Odpovědný uživatel Contact.expectedFollowUpUntil=Očekávaná následná opatření do Contact.vaccinationStatus=Status očkování - # ContactExport ContactExport.address=Adresa ContactExport.addressDistrict=Okres adresy @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Oznamující uživatel ContactExport.reportingUserRoles=Role oznamujícího uživatele ContactExport.followUpStatusChangeUserName=Odpovědný uživatel ContactExport.followUpStatusChangeUserRoles=Role odpovědného uživatele - # Dashboard dashboardAlive=Naživu dashboardApplyCustomFilter=Použít vlastní filtr @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Počet dashboardProportion=Podíl (%) dashboardViewAsColumnChart=Zobrazit jako sloupcový graf dashboardViewAsBarChart=Zobrazit jako lištový graf - defaultRegion=Výchozí region defaultDistrict=Výchozí okres defaultCommunity=Výchozí komunita defaultFacility=Výchozí zařízení defaultLaboratory=Výchozí laboratoř defaultPointOfEntry=Výchozí bod vstupu - devModeCaseCount=Počet vytvořených případů devModeCaseDisease=Choroba případů devModeCaseDistrict=Okres případů @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Načíst výchozí nastavení devModeLoadPerformanceTestConfig=Načíst nastavení testování výkonu devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Nové případy DiseaseBurden.caseDeathCount=Úmrtnost DiseaseBurden.casesDifference=Dynamický @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Počet událostí DiseaseBurden.outbreakDistrictCount=Okresy s ohnisky DiseaseBurden.previousCaseCount=Předchozí případy - # District districtActiveDistricts=Aktivní okresy districtArchivedDistricts=Archivované okresy districtAllDistricts=Všechny okresy - District=Okres District.archived=Archivováno District.epidCode=Epid kód District.growthRate=Míra růstu District.population=Populace District.externalID=Externí ID - epiDataNoSourceContacts=Pro tento případ nebyly vytvořeny žádné kontakty - EpiData=Epidemiologické údaje EpiData.areaInfectedAnimals=Potvrzení pobytu, práce nebo cesty do oblasti, kde byla nakažená zvířata potvrzena EpiData.exposureDetailsKnown=Známé podrobnosti expozice EpiData.exposures=Expozice -EpiData.activityAsCaseDetailsKnown = Známé podrobnosti aktivity -EpiData.activitiesAsCase = Aktivity podle případu +EpiData.activityAsCaseDetailsKnown=Známé podrobnosti aktivity +EpiData.activitiesAsCase=Aktivity podle případu EpiData.highTransmissionRiskArea=Bydlení nebo práce v oblasti s vysokým rizikem přenosu nákazy, např. v uzavřeném prostředí pro bydlení a v kempech EpiData.largeOutbreaksArea=Bydlení nebo cesty do zemí/území/oblastí s větším výskytem místního přenosu EpiData.contactWithSourceCaseKnown=Kontakty se známým zdrojem případu - # Documents documentUploadDocument=Nový dokument documentNoDocuments=K tomuto %s nejsou žádné dokumenty bulkActionCreatDocuments=Vytvořit dokumenty příkazu karantény - # DocumentTemplate DocumentTemplate=Šablona dokumentu DocumentTemplate.buttonUploadTemplate=Nahrát šablonu @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Také nahrajte generované d DocumentTemplate.documentUploadWarning=Upozornění na nahrání dokumentu DocumentTemplate.fileTooBig=Dokumenty byly úspěšně vytvořeny, ale alespoň jeden dokument nemohl být nahrán na jeho entitu, protože jeho velikost přesahuje zadaný limit velikosti souboru %dMB DocumentTemplate.notUploaded=Dokumenty nelze nahrát následujícím entitám\: - # Event eventActiveEvents=Aktivní události eventArchivedEvents=Archivované události @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=Zobrazit události ve stejném zařízen eventNoDisease=Žádná nemoc eventGroups=Skupiny událostí eventGroupsMultiple=Tato událost souvisí se %s skupinami událostí - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Pouze události, které ještě nejsou sdíleny s nástrojem pro podávání zpráv eventFilterOnlyEventsSharedWithExternalSurvTool=Pouze události již sdílené s nástrojem pro podávání zpráv eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Pouze případy změněné od posledního sdílení s nástrojem pro podávání zpráv - Event=Událost Event.caseCount=Případy Event.contactCount=Kontakty @@ -1185,7 +1142,6 @@ Event.internalToken=Interní token Event.eventGroups=Skupiny Event.latestEventGroup=Poslední skupina událostí Event.eventGroupCount=Počet skupin událostí - # Event action EventAction.eventUuid=Id události EventAction.eventTitle=Název události @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Datum změny akce EventAction.actionStatus=Stav akce EventAction.actionPriority=Priorita akce EventAction.actionLastModifiedBy=Naposledy upravená akce - # Event action export EventActionExport.eventDate=Datum události - #Event export - # EventParticipant eventParticipantAddPerson=Přidat účastníka eventParticipantContactCountOnlyWithSourceCaseInEvent=Počítá pouze kontakty, jejichž zdrojový případ souvisí s touto událostí @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Vytvořit nového účastníka události eventParticipantActiveEventParticipants=Aktivní účastníci události eventParticipantAllEventParticipants=Všichni účastníci události eventParticipantArchivedEventParticipants=Účastníci archivované události - EventParticipant=Účastník události EventParticipant.contactCount=Počet kontaktů EventParticipant.event=Událost @@ -1238,7 +1190,6 @@ EventParticipant.uuid=ID účastníka události EventParticipant.region=Odpovědný region EventParticipant.district=Odpovědný okres EventParticipant.vaccinationStatus=Status očkování - #EventParticipant export EventParticipantExport.eventParticipantU=Nemoc události EventParticipantExport.eventDisease=Nemoc události @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Informace o vzorku EventParticipantExport.personNationalHealthId=Národní zdravotní Id osoby EventParticipantExport.eventParticipantInvolvmentDescription=Popis zapojení EventParticipantExport.eventParticipantUuid=ID účastníka události - # Event Group EventGroup=Skupina událostí EventGroup.uuid=Id skupiny EventGroup.name=Název skupiny EventGroup.eventCount=Počet událostí - # Expo export=Export exportBasic=Základní export @@ -1285,18 +1234,15 @@ exportCaseCustom=Vlastní export případu exportNewExportConfiguration=Nová konfigurace exportu exportEditExportConfiguration=Upravit konfiguraci exportu exportConfigurationData=Konfigurační data - ExportConfiguration.NAME=Název konfigurace ExportConfiguration.myExports=Moje exporty ExportConfiguration.sharedExports=Sdílený export ExportConfiguration.sharedToPublic=Sdíleno veřejnosti - exposureFlightNumber=Číslo letu exposureTimePeriod=Časové období exposureSourceCaseName=Název zdrojového případu - Exposure=Vystavení -Exposure.probableInfectionEnvironment= Pravděpodobné infekční prostředí +Exposure.probableInfectionEnvironment=Pravděpodobné infekční prostředí Exposure.startDate=Začátek expozice Exposure.endDate=Konec expozice Exposure.exposureType=Typ aktivity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Riziková oblast podle definice instituce pro veřejné zdrav Exposure.exposureDate=Doba expozice Exposure.exposureRole=Role Exposure.largeAttendanceNumber=Více než 300 účastníků - # Facility facilityActiveFacilities=Aktivní zařízení facilityArchivedFacilities=Archivovaná zařízení facilityAllFacilities=Všechna zařízení - Facility.CONFIGURED_FACILITY=Konfigurované zařízení Facility.NO_FACILITY=Domov nebo jiné místo Facility.OTHER_FACILITY=Ostatní zařízení - Facility=Zařízení Facility.additionalInformation=Další informace Facility.archived=Archivováno @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Veřejné vlastnictví Facility.region=Oblast Facility.type=Typ zařízení Facility.typeGroup=Kategorie zařízení -Facility.contactPersonFirstName = Jméno kontaktní osoby -Facility.contactPersonLastName = Příjmení kontaktní osoby -Facility.contactPersonPhone = Telefonní číslo kontaktní osoby -Facility.contactPersonEmail = E-mailová adresa kontaktní osoby - +Facility.contactPersonFirstName=Jméno kontaktní osoby +Facility.contactPersonLastName=Příjmení kontaktní osoby +Facility.contactPersonPhone=Telefonní číslo kontaktní osoby +Facility.contactPersonEmail=E-mailová adresa kontaktní osoby FeatureConfiguration.districtName=Okres FeatureConfiguration.enabled=Řádkový výpis povolen? FeatureConfiguration.endDate=Datum ukončení - # Formats formatNumberOfVisitsFormat=%d (%d zmeškáno) formatNumberOfVisitsLongFormat=%d návštěv (%d zmeškáno) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=ID následného opatření FollowUp.person=Následná osoba FollowUp.reportDate=Datum zprávy FollowUp.followUpUntil=Následná opatření až do - # HealthConditions HealthConditions=Zdravotní podmínky HealthConditions.tuberculosis=Tuberkulóza @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Bývalý kuřák HealthConditions.asthma=Astma HealthConditions.sickleCellDisease=Srpkovitá anémie HealthConditions.immunodeficiencyIncludingHiv=Selhání imunity včetně HIV - # Import importDetailed=Detailní import importDownloadCaseImportTemplate=Stáhnout šablonu importu případu @@ -1440,7 +1378,6 @@ importSkips=%d přeskočeno importValueSeparator=Oddělovač hodnot importCancelImport=Zrušit import infrastructureImportAllowOverwrite=Přepsat existující záznamy importovanými údaji - #Lab Message LabMessage=Zpráva Laboratoře LabMessage.labMessageDetails=Detaily zprávy laboratoře @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Odstranit nového účastníka ud LabMessage.reportId=ID zprávy LabMessage.sampleOverallTestResult=Celkový výsledek testu LabMessage.assignee=Přiřazený - +LabMessage.type=Typ labMessageFetch=Načíst zprávy laboratoře labMessageProcess=Proces labMessageNoDisease=Nenalezena žádná testovaná nákaza @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=Žádné nové zprávy nejsou k dispozici labMessageForwardedMessageFound=Byla nalezena související přeposlaná zpráva (zprávy) labMessageLabMessagesList=Seznam zpráv laboratoře labMessageRelatedEntriesFound=Související položky nalezeny - LabMessageCriteria.messageDateFrom=Datum zprávy od... LabMessageCriteria.messageDateTo=... do LabMessageCriteria.birthDateFrom=Datum narození od... LabMessageCriteria.birthDateTo=... do - #Line listing lineListing=Řádkový seznam lineListingAddLine=Přidat řádek @@ -1502,7 +1437,6 @@ lineListingEnableAll=Povolit vše lineListingDisableAllShort=Zakázat vše lineListingEndDate=Datum ukončení lineListingSetEndDateForAll=Nastavit koncové datum pro všechny - # Location Location=Poloha Location.additionalInformation=Další informace @@ -1519,38 +1453,38 @@ Location.latLon=GPS šířka a délka Location.latLonAccuracy=Přesnost GPS v m Location.longitude=GPS zem. délka Location.postalCode=PSČ -Location.district=District -Location.community=Community +Location.continent=Kontinent +Location.subcontinent=Subkontinent +Location.country=Země +Location.region=Oblast +Location.district=Okres +Location.community=Komunita Location.street=Ulice -Location.contactPersonFirstName = Jméno kontaktní osoby -Location.contactPersonLastName = Příjmení kontaktní osoby -Location.contactPersonPhone = Telefonní číslo kontaktní osoby -Location.contactPersonEmail = E-mailová adresa kontaktní osoby - +Location.contactPersonFirstName=Jméno kontaktní osoby +Location.contactPersonLastName=Příjmení kontaktní osoby +Location.contactPersonPhone=Telefonní číslo kontaktní osoby +Location.contactPersonEmail=E-mailová adresa kontaktní osoby # Login Login.doLogIn=Přihlásit se Login.login=Přihlašovací jméno Login.password=heslo Login.username=uživatelské jméno - #LoginSidebar LoginSidebar.diseaseDetection=Detekce choroby LoginSidebar.diseasePrevention=Prevence nemocí LoginSidebar.outbreakResponse=Reakce na propuknutí LoginSidebar.poweredBy=Běží na - # Messaging messagesSendSMS=Odeslat SMS messagesSentBy=Odeslal messagesNoSmsSentForCase=Neodeslána žádná SMS na osobu případu messagesNoPhoneNumberForCasePerson=Osoba případu nemá telefonní číslo -messagesSms = SMS -messagesEmail = E-mail -messagesSendingSms = Odeslat nové SMS -messagesNumberOfMissingPhoneNumbers = Počet vybraných případů bez telefonního čísla\: %s -messagesCharacters = Znaků\: %d / 160 -messagesNumberOfMessages = Č. zpráv\: %d - +messagesSms=SMS +messagesEmail=E-mail +messagesSendingSms=Odeslat nové SMS +messagesNumberOfMissingPhoneNumbers=Počet vybraných případů bez telefonního čísla\: %s +messagesCharacters=Znaků\: %d / 160 +messagesNumberOfMessages=Č. zpráv\: %d # Main Menu mainMenuAbout=O aplikaci mainMenuCampaigns=Kampaně @@ -1569,7 +1503,6 @@ mainMenuTasks=Úkoly mainMenuUsers=Uživatelé mainMenuAggregateReports=mSERS mainMenuShareRequests=Sdílené - MaternalHistory.childrenNumber=Celkový počet dětí MaternalHistory.ageAtBirth=Věk matky při narození dítěte MaternalHistory.conjunctivitis=Zánět spojivek @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Další komplikace MaternalHistory.otherComplicationsOnset=Datum nástupu MaternalHistory.otherComplicationsMonth=Měsíc těhotenství MaternalHistory.otherComplicationsDetails=Detaily o komplikacích - # Outbreak outbreakAffectedDistricts=Postižené okresy outbreakNoOutbreak=Žádné ohnisko outbreakNormal=Normální outbreakOutbreak=Ohnisko - # PathogenTest pathogenTestAdd=Přidat test patogenu pathogenTestCreateNew=Vytvořit nový test patogenu @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nový výsledek pathogenTestNewTest=Nový výsledek testu pathogenTestRemove=Odstranit tento patogen test pathogenTestSelect=Vybrat test patogenu - PathogenTest=Test patogenu PathogenTests=Testy patogenů PathogenTest.fourFoldIncreaseAntibodyTiter=4 násobné zvýšení titru protilátek @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Prostřednictvím LIMS PathogenTest.testedDiseaseVariantDetails=Podrobnosti o variantě choroby PathogenTest.externalOrderId=ID externího příkazu PathogenTest.preliminary=Předběžný - # Person personPersonsList=Seznam osob personCreateNew=Vytvořit novou osobu @@ -1652,7 +1581,6 @@ personLinkToContacts=Zobrazit kontakty pro tuto osobu personsReplaceGeoCoordinates=Také nahradí existující souřadnice. Varování\: To by mohlo nahradit souřadnice, které byly záměrně nastaveny jinak\! personsSetMissingGeoCoordinates=Nastavit chybějící geo souřadnice personsUpdated=Osoby aktualizovány - Person=Osoba Person.additionalDetails=Obecný komentář Person.address=Domovská adresa @@ -1727,33 +1655,28 @@ Person.otherSalutation=Jiné oslovení Person.birthName=Rodné jméno Person.birthCountry=Země narození Person.citizenship=Občanství - -personContactDetailOwner = Vlastník -personContactDetailOwnerName = Jméno vlastníka -personContactDetailThisPerson = Tato osoba -personContactDetailThirdParty = Shromažďovat kontaktní údaje jiné osoby nebo zařízení - -PersonContactDetail = Detail kontaktu osoby -PersonContactDetail.person = Osoba -PersonContactDetail.primaryContact = Hlavní kontaktní údaje -PersonContactDetail.personContactDetailType = Typ kontaktních údajů -PersonContactDetail.phoneNumberType = Telefonní číslo -PersonContactDetail.details = Detaily -PersonContactDetail.contactInformation = Kontaktní údaje -PersonContactDetail.additionalInformation = Další informace -PersonContactDetail.thirdParty = Od jinud -PersonContactDetail.thirdPartyRole = Úloha třetí strany -PersonContactDetail.thirdPartyName = Název třetí strany - +personContactDetailOwner=Vlastník +personContactDetailOwnerName=Jméno vlastníka +personContactDetailThisPerson=Tato osoba +personContactDetailThirdParty=Shromažďovat kontaktní údaje jiné osoby nebo zařízení +PersonContactDetail=Detail kontaktu osoby +PersonContactDetail.person=Osoba +PersonContactDetail.primaryContact=Hlavní kontaktní údaje +PersonContactDetail.personContactDetailType=Typ kontaktních údajů +PersonContactDetail.phoneNumberType=Telefonní číslo +PersonContactDetail.details=Detaily +PersonContactDetail.contactInformation=Kontaktní údaje +PersonContactDetail.additionalInformation=Další informace +PersonContactDetail.thirdParty=Od jinud +PersonContactDetail.thirdPartyRole=Úloha třetí strany +PersonContactDetail.thirdPartyName=Název třetí strany pointOfEntryActivePointsOfEntry=Aktivní vstupní body pointOfEntryArchivedPointsOfEntry=Archivované vstupní body pointOfEntryAllPointsOfEntry=Všechny vstupní body - PointOfEntry.OTHER_AIRPORT=Ostatní letiště PointOfEntry.OTHER_SEAPORT=Ostatní námořní přístav PointOfEntry.OTHER_GROUND_CROSSING=Ostatní pozemní přejezdy PointOfEntry.OTHER_POE=Ostatní vstupní místo - PointOfEntry=Místo vstupu PointOfEntry.pointOfEntryType=Typ vstupního místa PointOfEntry.active=Aktivní? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Zeměpisná šířka PointOfEntry.longitude=Zeměpisná délka PointOfEntry.externalID=Externí ID PointOfEntry.archived=Archivováno - populationDataMaleTotal=Muži celkem populationDataFemaleTotal=Ženy celkem - PortHealthInfo=Informace Přístavu zdraví PortHealthInfo.airlineName=Název letecké společnosti PortHealthInfo.flightNumber=Číslo letu @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Určete typ přepravy PortHealthInfo.departureLocation=Počáteční poloha cesty PortHealthInfo.finalDestination=Konečná destinace PortHealthInfo.details=Údaje o vstupním místě - # Prescription prescriptionNewPrescription=Nový předpis - Prescription=Předpis Prescription.additionalNotes=Doplňkové poznámky Prescription.dose=Dávka @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Typ předpisu Prescription.route=Trasa Prescription.routeDetails=Specifikace trasy Prescription.typeOfDrug=Druh léku - PrescriptionExport.caseUuid=ID případu PrescriptionExport.caseName=Název případu - # Continent continentActiveContinents=Aktivní kontinenty continentArchivedContinents=Archivované kontinenty continentAllContinents=Všechny kontinenty - Continent=Kontinent Continent.archived=Archivováno Continent.externalId=Externí ID Continent.defaultName=Výchozí název Continent.displayName=Název - # Subcontinent subcontinentActiveSubcontinents=Aktivní subkontinenty subcontinentArchivedSubcontinents=Archivované subkontinenty subcontinentAllSubcontinents=Všechny subkontinenty - Subcontinent=Subkontinent Subcontinent.archived=Archivováno Subcontinent.externalId=Externí ID Subcontinent.defaultName=Výchozí název Subcontinent.displayName=Název Subcontinent.continent=Název kontinentu - # Country countryActiveCountries=Aktivní země countryArchivedCountries=Archivované země countryAllCountries=Všechny země - Country=Země Country.archived=Archivováno Country.externalId=Externí ID @@ -1848,12 +1760,10 @@ Country.displayName=Název Country.isoCode=Kód ISO Country.unoCode=UNO code Country.subcontinent=Subkontinent - # Region regionActiveRegions=Aktivní regiony regionArchivedRegions=Archivované regiony regionAllRegions=Všechny regiony - Region=Oblast Region.archived=Archivováno Region.epidCode=Epid kód @@ -1861,7 +1771,6 @@ Region.growthRate=Míra růstu Region.population=Populace Region.externalID=Externí ID Region.country=Země - # Sample sampleCreateNew=Vytvořit nový vzorek sampleIncludeTestOnCreation=Vytvořit výsledek testu pro tento vzorek @@ -1888,7 +1797,6 @@ sampleActiveSamples=Aktivní vzorky sampleArchivedSamples=Archivované vzorky sampleAllSamples=Všechny vzorky sampleAssociationType=Typ vzorku - Sample=Vzorek Sample.additionalTestingRequested=Požadovat provedení dalších testů? Sample.additionalTestingStatus=Dodatečný status testování @@ -1941,23 +1849,22 @@ Sample.uuid=ID vzorku Sample.samplePurpose=Účel vzorku Sample.samplingReason=Důvod odběru vzorků/vyšetření Sample.samplingReasonDetails=Podrobnosti o důvodu odběru vzorků - SampleExport.additionalTestingRequested=Byly požadovány další testy? SampleExport.personAddressCaption=Adresa případu/kontaktu/osoby účastnící se akce SampleExport.personAge=Stáří případu/kontaktu/osoby účastnící se události SampleExport.caseDistrict=Okres případu SampleExport.caseCommunity=Komunita případu SampleExport.caseFacility=Zařízení případu -SampleExport.contactRegion = Region kontaktu -SampleExport.contactDistrict = Okres kontaktu -SampleExport.contactCommunity = Komunita kontaktu +SampleExport.contactRegion=Region kontaktu +SampleExport.contactDistrict=Okres kontaktu +SampleExport.contactCommunity=Komunita kontaktu SampleExport.caseOutcome=Výsledek případu SampleExport.caseRegion=Region případu SampleExport.caseReportDate=Datum zprávy o případu SampleExport.personSex=Pohlaví případu/kontaktu/události účastnící se osoby SampleExport.caseUuid=UUID případu -SampleExport.contactUuid = UUID kontaktu -SampleExport.contactReportDate = Datum hlášení kontaktu +SampleExport.contactUuid=UUID kontaktu +SampleExport.contactReportDate=Datum hlášení kontaktu SampleExport.id=SN vzorku SampleExport.sampleReportDate=Datum zprávy o vzorku SampleExport.noTestPossibleReason=Žádný možný důvod testu @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Datum a čas posledního dodatečného testu SampleExport.totalBilirubin=Celkový bilirubin posledního dodatečného testu SampleExport.urea=Močovina posledního dodatečného testu SampleExport.wbcCount=Počet WBC z posledního dodatečného testu - # Immunization Immunization=Imunizace Immunization.reportDate=Datum zprávy Immunization.externalId=Externí ID Immunization.country=Země imunizace -Immunization.disease = Nemoc -Immunization.diseaseDetails = Detaily choroby +Immunization.disease=Nemoc +Immunization.diseaseDetails=Detaily choroby Immunization.healthFacility=Zařízení Immunization.healthFacilityDetails=Název a popis zařízení -Immunization.meansOfImmunization = Prostředky imunizace -Immunization.meansOfImmunizationDetails = Detaily prostředků imunizace -Immunization.overwriteImmunizationManagementStatus = Stav správy přepsání imunizace -Immunization.immunizationManagementStatus = Stav správy -Immunization.immunizationStatus = Stav imunizace -Immunization.startDate = Datum zahájení -Immunization.endDate = Datum ukončení -Immunization.validFrom = Platné od -Immunization.validUntil = Platné do -Immunization.numberOfDoses = Počet dávek -Immunization.numberOfDosesDetails = Podrobnosti o počtu dávek -Immunization.vaccinations = Očkování -Immunization.uuid = Id imunizace -Immunization.personUuid = ID osoby -Immunization.personFirstName = Jméno -Immunization.personLastName = Příjmení -Immunization.ageAndBirthDate = Věk a datum narození -Immunization.recoveryDate = Datum uzdravení -Immunization.positiveTestResultDate = Datum prvního pozitivního výsledku testu -Immunization.previousInfection = Předchozí infekce touto chorobou -Immunization.lastInfectionDate = Datum poslední infekce -Immunization.lastVaccineType = Typ poslední očkovací látky -Immunization.firstVaccinationDate = Datum prvního očkování -Immunization.lastVaccinationDate = Datum posledního očkování -Immunization.additionalDetails = Další podrobnosti -Immunization.responsibleRegion = Odpovědný region -Immunization.responsibleDistrict = Odpovědný okres -Immunization.responsibleCommunity = Odpovědná komunita -Immunization.immunizationPeriod = Doba imunizace -immunizationImmunizationsList = Seznam imunizací +Immunization.meansOfImmunization=Prostředky imunizace +Immunization.meansOfImmunizationDetails=Detaily prostředků imunizace +Immunization.overwriteImmunizationManagementStatus=Stav správy přepsání imunizace +Immunization.immunizationManagementStatus=Stav správy +Immunization.immunizationStatus=Stav imunizace +Immunization.startDate=Datum zahájení +Immunization.endDate=Datum ukončení +Immunization.validFrom=Platné od +Immunization.validUntil=Platné do +Immunization.numberOfDoses=Počet dávek +Immunization.numberOfDosesDetails=Podrobnosti o počtu dávek +Immunization.vaccinations=Očkování +Immunization.uuid=Id imunizace +Immunization.personUuid=ID osoby +Immunization.personFirstName=Jméno +Immunization.personLastName=Příjmení +Immunization.ageAndBirthDate=Věk a datum narození +Immunization.recoveryDate=Datum uzdravení +Immunization.positiveTestResultDate=Datum prvního pozitivního výsledku testu +Immunization.previousInfection=Předchozí infekce touto chorobou +Immunization.lastInfectionDate=Datum poslední infekce +Immunization.lastVaccineType=Typ poslední očkovací látky +Immunization.firstVaccinationDate=Datum prvního očkování +Immunization.lastVaccinationDate=Datum posledního očkování +Immunization.additionalDetails=Další podrobnosti +Immunization.responsibleRegion=Odpovědný region +Immunization.responsibleDistrict=Odpovědný okres +Immunization.responsibleCommunity=Odpovědná komunita +Immunization.immunizationPeriod=Doba imunizace +immunizationImmunizationsList=Seznam imunizací linkImmunizationToCaseButton=Odkaz na Případ -openLinkedCaseToImmunizationButton = Otevřít případ -immunizationNewImmunization = Nová imunizace -immunizationKeepImmunization = Zachovat existující informace a zrušit novou imunizaci -immunizationOnlyPersonsWithOverdueImmunization = Zobrazit pouze osoby s opožděnou imunizací -immunizationOverwriteImmunization = Přepsat existující imunizaci těmito daty -immunizationCreateNewImmunization = Přesto vytvořit novou imunizaci -immunizationNoImmunizationsForPerson = Nejsou žádné imunizace pro tuto osobu - +openLinkedCaseToImmunizationButton=Otevřít případ +immunizationNewImmunization=Nová imunizace +immunizationKeepImmunization=Zachovat existující informace a zrušit novou imunizaci +immunizationOnlyPersonsWithOverdueImmunization=Zobrazit pouze osoby s opožděnou imunizací +immunizationOverwriteImmunization=Přepsat existující imunizaci těmito daty +immunizationCreateNewImmunization=Přesto vytvořit novou imunizaci +immunizationNoImmunizationsForPerson=Nejsou žádné imunizace pro tuto osobu # Statistics statisticsAddFilter=Přidat filtr statisticsAttribute=Atribut @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Typ statisticsIncidenceDivisor=Dělitel nehody statisticsDataDisplayed=Zobrazená data statisticsOpenSormasStats=Otevřít statistiky Sormas - # Symptoms symptomsLesionsLocations=Umístění lézí symptomsMaxTemperature=Maximální tělesná teplota v ° C symptomsSetClearedToNo=Nastavit na Ne symptomsSetClearedToUnknown=Nastavit na Neznámé - Symptoms=Příznaky Symptoms.abdominalPain=Bolest břicha Symptoms.alteredConsciousness=Změněná úroveň vědomí @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitace Symptoms.dizzinessStandingUp=Motání hlavy (při přechodu do sezení nebo z polohy ležícího) Symptoms.highOrLowBloodPressure=Krevní tlak je příliš vysoký nebo příliš nízký (měřený) Symptoms.urinaryRetention=Zadržování moči - # Task taskMyTasks=Moje úkoly taskNewTask=Nový úkol @@ -2284,7 +2186,6 @@ taskOfficerTasks=Úřední úkoly taskActiveTasks=Aktivní úkoly taskArchivedTasks=Archivované úkoly taskAllTasks=Všechny úkoly - Task=Úkol Task.assigneeReply=Komentáře k provedení Task.assigneeUser=Přiřazeno k @@ -2306,7 +2207,6 @@ Task.taskType=Typ úkolu Task.taskAssignee=Příjemce úkolu Task.taskPriority=Priorita úkolu Task.travelEntry=Travel entry - # TestReport TestReport=Zkušební protokol TestReport.testDateTime=Datum a čas výsledku @@ -2316,7 +2216,6 @@ TestReport.testLabName=Název laboratoře TestReport.testLabPostalCode=PSČ laboratoře TestReport.testResult=Výsledek testu TestReport.testType=Typ testu - # TravelEntry travelEntryCreateCase=Vytvořit případ travelEntryOnlyRecoveredEntries=Pouze obnovené položky @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Oficiální karanténní příkaz odesl TravelEntry.quarantineOfficialOrderSentDate=Datum odeslání oficiálního příkazu karantény TravelEntry.dateOfArrival=Datum příjezdu travelEntryTravelEntriesList=Seznam cestovních vstupů - # Treatment treatmentCreateTreatment=Vytvořit léčbu treatmentNewTreatment=Nová léčba treatmentOpenPrescription=Otevřít předpis - Treatment=Léčba Treatment.additionalNotes=Doplňkové poznámky Treatment.dose=Dávka @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Detaily léčby Treatment.treatmentType=Typ léčby Treatment.typeOfDrug=Druh léku Treatment.treatmentRoute=Trasa léčby - TreatmentExport.caseUuid=ID případu TreatmentExport.caseName=Název případu - # User userNewUser=Nový uživatel userResetPassword=Vytvořit nové heslo @@ -2402,7 +2297,6 @@ syncUsers=Synchronizovat uživatele syncErrors=%d chyb(a) syncSuccessful=%d synchronizováno syncProcessed=%d/%d Zpracováno - User=Uživatel User.active=Aktivní? User.associatedOfficer=Přidružený úředník @@ -2417,12 +2311,10 @@ User.userName=Uživatelské jméno User.userRoles=Uživatelské role User.address=Adresa User.uuid=UUID - # Vaccination -vaccinationNewVaccination = Nové očkování -vaccinationNoVaccinationsForPerson = Pro tuto osobu neexistuje žádné očkování -vaccinationNoVaccinationsForPersonAndDisease = Pro tuto osobu a nemoc neexistuje žádné očkování - +vaccinationNewVaccination=Nové očkování +vaccinationNoVaccinationsForPerson=Pro tuto osobu neexistuje žádné očkování +vaccinationNoVaccinationsForPersonAndDisease=Pro tuto osobu a nemoc neexistuje žádné očkování Vaccination=Očkování Vaccination.uuid=ID Očkování Vaccination.reportDate=Datum zprávy @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC kód Vaccination.vaccinationInfoSource=Zdroj informací o očkování Vaccination.pregnant=Těhotná Vaccination.trimester=Trimestr - # Views View.actions=Adresář akcí View.groups=Adresář skupin - View.aggregatereports=Souhrnné podávání zpráv (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Adresář kampaně View.campaign.campaigns.short=Kampaně View.campaign.campaigndata=Data kampaně @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Datový formulář kampaně View.campaign.campaigndata.dataform.short=Datový formulář View.campaign.campaignstatistics=Statistiky kampaně View.campaign.campaignstatistics.short=Statistiky kampaně - View.cases=Adresář případů View.cases.merge=Sloučit duplicitní případy View.cases.archive=Archiv případů @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Klinický kurz View.cases.maternalhistory=Historie matky View.cases.porthealthinfo=Port Health Information View.cases.visits=Návštěvy případu - View.persons=Adresář osob View.persons.data=Informace o osobě - View.configuration.communities=Konfigurace komunit View.configuration.communities.short=Komunity View.configuration.districts=Konfigurace okresů @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Údaje o obyvatelstvu View.configuration.populationdata.short=Obyvatelstvo View.configuration.linelisting=Konfigurace výpisu řádků View.configuration.linelisting.short=Řádek výpisu - View.contacts=Adresář kontaktů View.contacts.archive=Archiv kontaktů View.contacts.epidata=Epidemiologické údaje kontaktu @@ -2520,11 +2405,9 @@ View.contacts.merge=Sloučit duplicitní kontakty View.contacts.person=Kontaktní osoba View.contacts.sub= View.contacts.visits=Návštěvy kontaktu - View.dashboard.contacts=Ovládací panel kontaktů View.dashboard.surveillance=Ovládací panel pro dozor View.dashboard.campaigns=Ovládací panel kampaně - View.events=Adresář událostí View.events.archive=Archiv událostí View.events.data=Informace o události @@ -2532,36 +2415,25 @@ View.events.eventactions=Akce události View.events.eventparticipants=Účastníci události View.events.sub= View.events.eventparticipants.data=Informace o účastnících události - View.samples.labMessages=Adresář zpráv Laboratoře - View.reports=Týdenní přehledy zpráv View.reports.sub= - View.samples=Adresář vzorků View.samples.archive=Archiv vzorků View.samples.data=Informace o vzorku View.samples.sub= - View.travelEntries=Adresář pro cestovní vstupy - View.immunizations=Adresář pro imunizaci - View.statistics=Statistiky View.statistics.database-export=Export databáze - View.tasks=Správa úkolů View.tasks.archive=Archiv úkolů View.tasks.sub= - View.users=Správa uživatelů View.users.sub= - View.shareRequests=Požadavky na sdílení - # Visit visitNewVisit=Nová návštěva - Visit=Návštěva Visit.person=Navštívená osoba Visit.symptoms=Příznaky @@ -2573,24 +2445,19 @@ Visit.visitUser=Úředník návštěvy Visit.disease=Nemoc Visit.reportLat=Zeměpisná šířka hlášení Visit.reportLon=Zeměpisná délka hlášení - # WeeklyReport weeklyReportNoReport=Chybějící zpráva weeklyReportOfficerInformants=Informátoři weeklyReportsInDistrict=Týdenní zprávy v %s weeklyReportRegionOfficers=Úředníci weeklyReportRegionInformants=Informátoři - WeeklyReport.epiWeek=Epi týden WeeklyReport.year=Rok - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Nahlášené případy - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Předložení zprávy informátorem WeeklyReportInformantSummary.totalCaseCount=Případy nahlášené informátorem - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Počet informátorů WeeklyReportOfficerSummary.informantReports=Počet zpráv informátorů @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Zprávy s nulovým počtem infor WeeklyReportOfficerSummary.officer=Úředník WeeklyReportOfficerSummary.officerReportDate=Předložení zprávy úředníkem WeeklyReportOfficerSummary.totalCaseCount=Případy nahlášené úředníkem - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Počet informátorů WeeklyReportRegionSummary.informantReports=Počet zpráv informátorů @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Počet úředníků WeeklyReportRegionSummary.officerReports=Počet zpráv úředníků WeeklyReportRegionSummary.officerReportPercentage=Procento WeeklyReportRegionSummary.officerZeroReports=Zprávy s nulovým počtem úředníků - # SORMAS to SORMAS SormasToSormasOptions.organization=Organizace SormasToSormasOptions.withAssociatedContacts=Sdílet související kontakty @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Sdíleno sormasToSormasSharedDate=Na sormasToSormasSentFrom=Odesláno od sormasToSormasSendLabMessage=Poslat do jiné organizace -sormasToSormasOriginInfo = Odesláno od +sormasToSormasOriginInfo=Odesláno od BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Nástroj pro hlášení zpráv ExternalSurveillanceToolGateway.send=Odeslat do nástroje hlášení @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Potvrdit odeslání ExternalSurveillanceToolGateway.notTransferred=Dosud neodesláno do nástroje hlášení ExternalSurveillanceToolGateway.confirmDelete=Potvrdit odstranění ExternalSurveillanceToolGateway.excludeAndSend=Poslat %d z %d - patientDiaryRegistrationError=Nelze zaregistrovat osobu v deníku pacienta. patientDiaryCancelError=Nelze zrušit externí deník sledování patientDiaryPersonNotExportable=Nelze exportovat osobu do pacientova deníku. Osoba potřebuje platné datum narození a buď platné telefonní číslo nebo e-mailovou adresu. - showPlacesOnMap=Zobrazit - changeUserEmail=Změnit e-mail uživatele - SurveillanceReport=Zpráva SurveillanceReport.reportingType=Typ zprávy SurveillanceReport.creatingUser=Vytváření uživatele @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Detaily zařízení SurveillanceReport.notificationDetails=Detaily surveillanceReportNewReport=Nová zpráva surveillanceReportNoReportsForCase=Pro tento případ nejsou žádné zprávy - cancelExternalFollowUpButton=Zrušit externí sledování createSymptomJournalAccountButton=Vytvořit účet PIA registerInPatientDiaryButton=Registrace v CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Otevřít v PIA openInPatientDiaryButton=Otevřít v CLIMEDO cancelExternalFollowUpPopupTitle=Zrušit externí sledování - # User role/right exportUserRoles=Exportovat uživatelské role userRights=Uživatelská práva userRight=Uživatelská práva +UserRight.caption=Titulek UserRight.description=Popis UserRight.jurisdiction=Příslušnost UserRight.jurisdictionOfRole=Příslušnost role - SormasToSormasShareRequest.uuid=ID požadavku SormasToSormasShareRequest.creationDate=Datum požadavku SormasToSormasShareRequest.dataType=Typ dat SormasToSormasShareRequest.status=Stav -SormasToSormasShareRequest.cases = Případy -SormasToSormasShareRequest.contacts = Kontakty -SormasToSormasShareRequest.events = Události -SormasToSormasShareRequest.organizationName = Organizace odesílatele -SormasToSormasShareRequest.senderName = Jméno odesílatele -SormasToSormasShareRequest.ownershipHandedOver = Vlastnictví předáno -SormasToSormasShareRequest.comment = Komentář -SormasToSormasShareRequest.responseComment = Komentář odpovědi - -SormasToSormasPerson.personName = Jméno osoby -SormasToSormasPerson.sex = Pohlaví -SormasToSormasPerson.birthdDate = Datum narození -SormasToSormasPerson.address = Adresa - -TaskExport.personFirstName = Jméno osoby -TaskExport.personLastName = Příjmení osoby -TaskExport.personSex = Pohlaví osoby -TaskExport.personBirthDate = Datum narození osoby -TaskExport.personAddressRegion = Adresa regionu osoby -TaskExport.personAddressDistrict = Adresa okresu osoby -TaskExport.personAddressCommunity = Adresa komunity osoby -TaskExport.personAddressFacility = Adresa zařízení osoby -TaskExport.personAddressFacilityDetail = Detaily adresy zařízení osoby -TaskExport.personAddressCity = Adresa města osoby -TaskExport.personAddressStreet = Adresa ulice osoby -TaskExport.personAddressHouseNumber = Číslo domu osoby -TaskExport.personAddressPostalCode = Poštovní směrovací číslo osoby -TaskExport.personPhone = Telefon osoby -TaskExport.personPhoneOwner = Vlastník telefonu -TaskExport.personEmailAddress = E-mail osoby +SormasToSormasShareRequest.cases=Případy +SormasToSormasShareRequest.contacts=Kontakty +SormasToSormasShareRequest.events=Události +SormasToSormasShareRequest.organizationName=Organizace odesílatele +SormasToSormasShareRequest.senderName=Jméno odesílatele +SormasToSormasShareRequest.ownershipHandedOver=Vlastnictví předáno +SormasToSormasShareRequest.comment=Komentář +SormasToSormasShareRequest.responseComment=Komentář odpovědi +SormasToSormasPerson.personName=Jméno osoby +SormasToSormasPerson.sex=Pohlaví +SormasToSormasPerson.birthdDate=Datum narození +SormasToSormasPerson.address=Adresa +TaskExport.personFirstName=Jméno osoby +TaskExport.personLastName=Příjmení osoby +TaskExport.personSex=Pohlaví osoby +TaskExport.personBirthDate=Datum narození osoby +TaskExport.personAddressRegion=Adresa regionu osoby +TaskExport.personAddressDistrict=Adresa okresu osoby +TaskExport.personAddressCommunity=Adresa komunity osoby +TaskExport.personAddressFacility=Adresa zařízení osoby +TaskExport.personAddressFacilityDetail=Detaily adresy zařízení osoby +TaskExport.personAddressCity=Adresa města osoby +TaskExport.personAddressStreet=Adresa ulice osoby +TaskExport.personAddressHouseNumber=Číslo domu osoby +TaskExport.personAddressPostalCode=Poštovní směrovací číslo osoby +TaskExport.personPhone=Telefon osoby +TaskExport.personPhoneOwner=Vlastník telefonu +TaskExport.personEmailAddress=E-mail osoby TaskExport.personOtherContactDetails = Detaily kontaktu osoby diff --git a/sormas-api/src/main/resources/captions_de-CH.properties b/sormas-api/src/main/resources/captions_de-CH.properties index 9e2d0f1fef8..49d999a501d 100644 --- a/sormas-api/src/main/resources/captions_de-CH.properties +++ b/sormas-api/src/main/resources/captions_de-CH.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Alle area=Gebiet @@ -59,10 +58,9 @@ unknown=Unbekannt diseaseVariantDetails=Details zur Krankheitsvariante unassigned=Nicht zugewiesen assign=Zuweisen -assignToMe = Mir zuweisen +assignToMe=Mir zuweisen endOfProcessingDate=Verarbeitungsende-Datum dearchiveReason=Grund der Dearchivierung - # About about=Info aboutAdditionalInfo=Zusätzliche Information @@ -76,18 +74,16 @@ aboutDataDictionary=Datenbeschreibungsverzeichnis (XLSX) aboutSormasWebsite=Offizielle SORMAS-Webseite aboutTechnicalManual=Technische Anleitung (PDF) aboutWhatsNew=Neuigkeiten -aboutLabMessageAdapter = Labormeldungen Adapter -aboutServiceNotAvailable = Nicht verfügbar -aboutExternalSurveillanceToolGateway = Überwachungstool Converter -aboutDataProtectionDictionary = Datenschutz-Beschreibungsverzeichnis (XLSX) - +aboutLabMessageAdapter=Labormeldungen Adapter +aboutServiceNotAvailable=Nicht verfügbar +aboutExternalSurveillanceToolGateway=Überwachungstool Converter +aboutDataProtectionDictionary=Datenschutz-Beschreibungsverzeichnis (XLSX) # Action actionNewAction=Neue Aktion actionNoActions=Es gibt keine Aufgaben für %s actionCreatingLabel=Erstellt am %s von %s actionLastModifiedByLabel=Aktualisiert um %s von %s actionStatusChangeDate=aktualisiert am %s - Action=Aktion Action.title=Titel Action.description=Beschreibung @@ -100,14 +96,13 @@ Action.actionContext=Aktionskontext Action.actionStatus=Aktionsstatus Action.lastModifiedBy=Zuletzt geändert von Action.actionMeasure=Maßnahme - # Actions actionApplyDateFilter=Datumsfilter anwenden actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Neue EPID zuweisen actionBack=Zurück -actionSend = Senden +actionSend=Senden actionCancel=Abbrechen actionClear=Löschen actionClearAll=Alles löschen @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Speichern und Ereignisteilnehmer öffnen actionSaveAndContinue=Speichern und fortfahren actionDiscardAllAndContinue=Alles verwerfen und fortfahren actionDiscardAndContinue=Verwerfen und fortfahren - activityAsCaseFlightNumber=Flugnummer - ActivityAsCase=Betreuung/Unterbringung/Tätigkeit in Einrichtung ActivityAsCase.startDate=Start der Aktivität ActivityAsCase.endDate=Ende der Aktivität @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Details zur Art der Versammlung ActivityAsCase.habitationType=Art der Behausung/des Aufenthalts ActivityAsCase.habitationDetails=Details zur Art der Behausung/des Aufenthalts ActivityAsCase.role=Rolle - # AdditionalTest additionalTestNewTest=Neues Testergebnis - AdditionalTest=Zusätzlicher Test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterielles/venöses Blutgas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Datum und Uhrzeit des Ergebnisses AdditionalTest.totalBilirubin=Gesamt Bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=Anzahl an weißen Blutkörperchen (x10^9/L) - aggregateReportDeathsShort=T aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Letzte Woche @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Laborbestätigungen AggregateReport.deaths=Todesfälle AggregateReport.healthFacility=Einrichtung AggregateReport.pointOfEntry=Einreiseort - -areaActiveAreas = Aktive Gebiete -areaArchivedAreas = Archivierte Gebiete -areaAllAreas = Alle Gebiete -Area.archived = Archiviert -Area.externalId = Externe ID - +areaActiveAreas=Aktive Gebiete +areaArchivedAreas=Archivierte Gebiete +areaAllAreas=Alle Gebiete +Area.archived=Archiviert +Area.externalId=Externe ID # Bulk actions bulkActions=Massenbearbeitung -bulkEditAssignee= Zuweisung bearbeiten +bulkEditAssignee=Zuweisung bearbeiten bulkCancelFollowUp=Nachverfolgung abbrechen bulkCaseClassification=Falldefinitionskategorie ändern bulkCaseOutcome=Verlauf der Erkrankung des Falls ändern @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Überwachungsbeauftragte*n ändern bulkTaskStatus=Aufgabenstatus ändern bulkTaskAssignee=Zuweisung ändern bulkTaskPriority=Priorität ändern - # Campaign campaignActiveCampaigns=Aktive Kampagnen campaignAllCampaigns=Alle Kampagnen @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Höhe in % campaignDashboardOrder=Verfügung campaignSearch=Kampagne suchen campaignDiagramGroupBy=Gruppieren nach - Campaign=Kampagne Campaign.name=Name Campaign.description=Beschreibung @@ -308,14 +294,12 @@ Campaign.region=Kanton Campaign.district=Bezirk Campaign.community=Gemeinde Campaign.grouping=Gruppierung - -CampaignFormData.campaign = Kampagne -CampaignFormData.campaignFormMeta = Formular -CampaignFormData.formDate = Formulardatum -CampaignFormData.formValuesJson = Fomulardaten -CampaignFormData.area = Gebiet +CampaignFormData.campaign=Kampagne +CampaignFormData.campaignFormMeta=Formular +CampaignFormData.formDate=Formulardatum +CampaignFormData.formValuesJson=Fomulardaten +CampaignFormData.area=Gebiet CampaignFormData.edit=Bearbeiten - # CaseData caseCasesList=Fall-Liste caseInfrastructureDataChanged=Infrastrukturdaten wurden geändert @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Nur Fälle mit verlängerter Isolation caseFilterWithReducedQuarantine=Nur Fälle mit verringerter Isolation caseFilterOnlyQuarantineHelpNeeded=Massnahmen zur Gewährleistung der Versorgung caseFilterInludeCasesFromOtherJurisdictions=Fälle aus anderen Zuständigkeitsbereichen einbeziehen -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Nur Fälle mit erfüllter Referenzdefinition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Nur Fälle mit erfüllter Referenzdefinition caseFilterRelatedToEvent=Nur Fälle mit Ereignissen caseFilterOnlyFromOtherInstances=Nur Fälle von anderen Instanzen caseFilterCasesWithReinfection=Nur Fälle mit Reinfektion @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Nur Fälle, die noch nicht an d caseFilterOnlyCasesSharedWithExternalSurvToo=Nur Fälle, die bereits an die Meldesoftware gesendet wurden caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Nur Fälle, die seit der letzten Übertragung an die Meldesoftware geändert wurden caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Nur Fälle, die mit "Senden an Meldesoftware erfolgt in anderem Landkreis" markiert sind - caseFacilityDetailsShort=Name der Einrichtung caseNewCase=Neuer Fall casePlaceOfStay=Aufenthaltsort @@ -352,7 +335,7 @@ caseArchivedCases=Archivierte Fälle caseAllCases=Alle Fälle caseTransferCase=Fall übertragen caseTransferCases=Fälle übertragen -caseReferToFacility=Fall an eine Einrichtung weiterleiten +caseReferFromPointOfEntry=Fall vom Einreiseort weiterleiten casePickCase=Einen vorhandenen Fall wählen caseCreateCase=Neuen Fall erstellen caseDefaultView=Standardansicht @@ -374,10 +357,10 @@ convertEventParticipantToCase=Soll aus dem Ereignisteilnehmer mit positivem Test convertContactToCase=Soll aus dem Kontakt mit positivem Testresultat ein neuer Fall erstellt werden? caseSearchSpecificCase=Fall suchen caseSearchCase=Fall suchen -caseSelect= Fall auswählen +caseSelect=Fall auswählen caseCreateNew=Neuen Fall erstellen caseDataEnterHomeAddressNow=Heimatadresse der Fallperson jetzt eingeben - +caseCancelDeletion=Fall Löschung abbrechen CaseData=Fall CaseData.additionalDetails=Allgemeiner Kommentar CaseData.caseClassification=Falldefinitionskategorie @@ -445,7 +428,7 @@ CaseData.reportLat=Gemeldeter GPS-Breitengrad CaseData.reportLon=Gemeldeter GPS-Längengrad CaseData.reportLatLonAccuracy=GPS-Genauigkeit in m CaseData.sequelae=Folgeerkrankungen -CaseData.sequelaeDetails=Beschreiben Sie die Folgeerkrankungen +CaseData.sequelaeDetails=Folgeschäden Beschreibung CaseData.smallpoxVaccinationReceived=Wurde in der Vergangenheit eine Pockenimpfung erhalten? CaseData.smallpoxVaccinationScar=Ist eine Pockenimpfungsnarbe vorhanden? CaseData.smallpoxLastVaccinationDate=Datum der letzten Pockenimpfung @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Referenzdefinition CaseData.pointOfEntryRegion=Einreiseort Kanton CaseData.pointOfEntryDistrict=Einreiseort Bezirk CaseData.externalData=Externe Daten -CaseData.reinfectionStatus = Kategorie der Reinfektion - +CaseData.reinfectionStatus=Kategorie der Reinfektion # CaseExport CaseExport.address=Adresse CaseExport.addressRegion=Adresse Kanton @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Meldender Nutzer CaseExport.reportingUserRoles=Benutzerrolle des meldenden Nutzers CaseExport.followUpStatusChangeUserName=Verantwortlicher Benutzer CaseExport.followUpStatusChangeUserRoles=Benutzerrolle des verantwortlichen Benutzers - # CaseHospitalization CaseHospitalization=Krankenhausaufenthalt CaseHospitalization.admissionDate=Datum des Besuchs / Aufnahme @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Beginn des Aufenthalts CaseHospitalization.intensiveCareUnitEnd=Ende des Aufenthalts CaseHospitalization.hospitalizationReason=Grund für Hospitalisierung CaseHospitalization.otherHospitalizationReason=Grund spezifizieren - - # CaseImport caseImportErrorDescription=Fehlerbeschreibung caseImportMergeCase=Bestehenden Fall mit Änderungen aus dem importierten Fall überschreiben? - # CasePreviousHospitalization CasePreviousHospitalization=Vorheriger Krankenhausaufenthalt CasePreviousHospitalization.admissionAndDischargeDate=Datum der Aufnahme & Entlassung -CasePreviousHospitalization.admittedToHealthFacility =Wurde der Patient im Krankenhaus stationär aufgenommen? +CasePreviousHospitalization.admittedToHealthFacility=Wurde der Patient im Krankenhaus stationär aufgenommen? CasePreviousHospitalization.admissionDate=Datum der Aufnahme CasePreviousHospitalization.description=Beschreibung CasePreviousHospitalization.dischargeDate=Datum der Entlassung / Verlegung CasePreviousHospitalization.editColumn=Bearbeiten +CasePreviousHospitalization.region=Kanton +CasePreviousHospitalization.district=Bezirk +CasePreviousHospitalization.community=Gemeinde CasePreviousHospitalization.healthFacility=Krankenhaus CasePreviousHospitalization.healthFacilityDetails=Name und Beschreibung des Krankenhauses CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Grund spezifizieren CasePreviousHospitalization.intensiveCareUnit=Aufenthalt in der Intensivstation CasePreviousHospitalization.intensiveCareUnitStart=Beginn des Aufenthalts CasePreviousHospitalization.intensiveCareUnitEnd=Ende des Aufenthalts - # ClinicalVisit clinicalVisitNewClinicalVisit=Neue klinische Bewertung - ClinicalVisit=Klinische Bewertung ClinicalVisit.bloodPressure=Blutdruck ClinicalVisit.heartRate=Herzfrequenz @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperatur ClinicalVisit.visitDateTime=Datum und Uhrzeit des Besuches ClinicalVisit.visitingPerson=Anwesende*r Arzt/Ärztin ClinicalVisit.visitRemarks=Ärztliche Bemerkungen - ClinicalVisitExport.caseUuid=Fall-ID ClinicalVisitExport.caseName=Fall Name - columnAdditionalTests=Zusätzliche Tests columnDiseaseShort=Krankheit columnLastPathogenTest=Neuester Erregertest (CT/CQ-Wert) columnNumberOfPendingTasks=Ausstehende Aufgaben columnVaccineName=Impfstoffname columnVaccineManufacturer=Impfstoffhersteller - - # Community Community=Gemeinde Community.archived=Archiviert Community.externalID=Externe ID - communityActiveCommunities=Aktive Gemeinden communityArchivedCommunities=Archivierte Gemeinden communityAllCommunities=Alle Gemeinden - # Configuration Configuration.Facilities=Einrichtungen Configuration.Outbreaks=Ausbrüche Configuration.PointsOfEntry=Einreiseorte Configuration.LineListing=Line Listing/Zeilenauflistung - # Contact contactCancelFollowUp=Nachverfolgung abbrechen contactCaseContacts=Fallkontakte @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Nur Kontakte, deren Indexfall mit dem s contactOnlyWithSourceCaseInGivenEvent=Nur Kontakte, deren Indexfall mit diesem Ereignis verknüpft ist contactFollowUpDay=Tag contactQuarantineNotOrdered=Keine Isolation angeordnet -contactPersonPhoneNumber = Telefonnummer der Kontaktperson -contactSourceCase = Indexfall +contactPersonPhoneNumber=Telefonnummer der Kontaktperson +contactSourceCase=Indexfall contactMergeDuplicates=Duplikate zusammenführen contactBackToDirectory=Zurück zum Kontaktverzeichnis contactOpenCasesGuide=Anleitung für Kontakte öffnen @@ -703,7 +675,6 @@ contactOpenMergeGuide=Zusammenführungsanleitung öffnen contactCalculateCompleteness=Vollständigkeit berechnen contactNumberOfDuplicatesDetected=%d potentielle Duplikate erkannt contactFilterWithDifferentRegion=Duplikate mit unterschiedlichen Kantonen anzeigen - Contact=Kontakt Contact.additionalDetails=Allgemeiner Kommentar Contact.caseClassification=Falldefinitionskategorie des Indexfalls @@ -720,10 +691,10 @@ Contact.community=Zuständige Gemeinde Contact.contactClassification=Kontaktklassifikation Contact.contactOfficer=Verantwortliche*r (Gesundheitsamts-)Mitarbeiter*in Contact.contactOfficerUuid=Verantwortliche*r (Gesundheitsamts-)Mitarbeiter*in -Contact.contactIdentificationSource = Quelle der Kontaktidentifikation -Contact.contactIdentificationSourceDetails = Details zur Quelle der Kontaktidentifikation -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Details zur tracing app, z.B. Name +Contact.contactIdentificationSource=Quelle der Kontaktidentifikation +Contact.contactIdentificationSourceDetails=Details zur Quelle der Kontaktidentifikation +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Details zur tracing app, z.B. Name Contact.contactProximity=Art des Kontaktes Contact.contactProximityLongForm=Art des Kontaktes - falls mehrere zutreffen, wählen Sie die engste Nähe Contact.contactStatus=Kontaktstatus @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Datum der Nachverfolgungs-Statusänderung Contact.followUpStatusChangeUser=Verantwortlicher Benutzer Contact.expectedFollowUpUntil=Nachverfolgung erwartet bis Contact.vaccinationStatus=Impfstatus - # ContactExport ContactExport.address=Adresse ContactExport.addressDistrict=Adresse Bezirk @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Meldender Nutzer ContactExport.reportingUserRoles=Benutzerrolle des meldenden Nutzers ContactExport.followUpStatusChangeUserName=Verantwortlicher Benutzer ContactExport.followUpStatusChangeUserRoles=Benutzerrolle des verantwortlichen Benutzers - # Dashboard dashboardAlive=Lebendig dashboardApplyCustomFilter=Eigenen Filter anwenden @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Anzahl dashboardProportion=Anteil (%) dashboardViewAsColumnChart=Als Säulendiagramm anzeigen dashboardViewAsBarChart=Als Balkendiagramm anzeigen - defaultRegion=Voreingestellte Kantone defaultDistrict=Voreingestellter Bezirk defaultCommunity=Voreingestellte Gemeinde defaultFacility=Standard Einrichtung defaultLaboratory=Voreingestelltes Labor defaultPointOfEntry=Voreingestellter Einreiseort - devModeCaseCount=Anzahl der erstellten Fälle devModeCaseDisease=Krankheit des Falls devModeCaseDistrict=Bezirk der Fälle @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Standardkonfiguration laden devModeLoadPerformanceTestConfig=Performance-Test-Konfiguration laden devModeUseSeed=Seed verwenden - DiseaseBurden.caseCount=Neue Fälle DiseaseBurden.caseDeathCount=Todesfälle DiseaseBurden.casesDifference=Dynamik @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=Todesfallrate DiseaseBurden.eventCount=Anzahl von Ereignissen DiseaseBurden.outbreakDistrictCount=Ausbruchsbezirk DiseaseBurden.previousCaseCount=Vorherige Fälle - # District districtActiveDistricts=Aktive Bezirke districtArchivedDistricts=Archivierte Bezirke districtAllDistricts=Alle Bezirke - District=Bezirk District.archived=Archiviert District.epidCode=EPID-Nummer District.growthRate=Wachstumsrate District.population=Bevölkerung District.externalID=Externe ID - epiDataNoSourceContacts=Für diesen Fall wurden keine Ursprungskontakte erstellt - EpiData=Epidemiologische Daten EpiData.areaInfectedAnimals=Wohnen, Arbeiten oder Reisen in ein Gebiet, in dem infizierte Tiere bestätigt wurden EpiData.exposureDetailsKnown=Expositionsdetails bekannt EpiData.exposures=Expositionen -EpiData.activityAsCaseDetailsKnown = Details zur Aktivität bekannt -EpiData.activitiesAsCase = Aktivitäten als Fall (Betreuung/Unterbringung/Tätigkeit in Einrichtung) +EpiData.activityAsCaseDetailsKnown=Details zur Aktivität bekannt +EpiData.activitiesAsCase=Aktivitäten als Fall (Betreuung/Unterbringung/Tätigkeit in Einrichtung) EpiData.highTransmissionRiskArea=Wohnen oder Arbeiten in einem Gebiet mit hohem Übertragungsrisiko der Krankheit EpiData.largeOutbreaksArea=Wohnen oder Reisen in Länder/Territorien/Gebiete mit grösseren Ausbrüchen lokaler Transmissionen EpiData.contactWithSourceCaseKnown=Kontakte mit bekanntem Indexfall - # Documents documentUploadDocument=Neues Dokument -documentNoDocuments=Es gibt keine Dokumente für diesen %s +documentNoDocuments=Es gibt keine Dokumente für %s bulkActionCreatDocuments=Dokumente erstellen - # DocumentTemplate DocumentTemplate=Dokumentvorlage DocumentTemplate.buttonUploadTemplate=Vorlage hochladen @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Generierte Dokumente auch de DocumentTemplate.documentUploadWarning=Dokumenten-Upload Warnung DocumentTemplate.fileTooBig=Die Dokumente wurden erfolgreich generiert, aber mindestens ein Dokument konnte nicht in seine Entität hochgeladen werden, da die Dateigröße die spezifizierte Dateigrößengrenze von %dMB übersteigt DocumentTemplate.notUploaded=Dokumente konnten nicht in die folgenden Entitäten hochgeladen werden\: - # Event eventActiveEvents=Aktive Ereignisse eventArchivedEvents=Archivierte Ereignisse @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=Ereignisse innerhalb der gleichen Einrich eventNoDisease=Keine Krankheit eventGroups=Ereignisgruppen eventGroupsMultiple=Dieses Ereignis ist mit %s Ereignisgruppen verknüpft - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Nur Ereignisse, die noch nicht an die Meldesoftware gesendet wurden eventFilterOnlyEventsSharedWithExternalSurvTool=Nur Ereignisse, die bereits an die Meldesoftware gesendet wurden eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Nur Ereignisse, die seit der letzten Übertragung an die Meldesoftware geändert wurden - Event=Ereignis Event.caseCount=Fälle Event.contactCount=Kontakte @@ -1185,7 +1142,6 @@ Event.internalToken=Internes Aktenzeichen Event.eventGroups=Gruppen Event.latestEventGroup=Neueste Ereignisgruppe Event.eventGroupCount=Ereignisgruppen Anzahl - # Event action EventAction.eventUuid=Ereignis ID EventAction.eventTitle=Ereignistitel @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Änderungsdatum der Aktion EventAction.actionStatus=Aktionsstatus EventAction.actionPriority=Aktionspriorität EventAction.actionLastModifiedBy=Aktion zuletzt geändert von - # Event action export EventActionExport.eventDate=Ereignisdatum - #Event export - # EventParticipant eventParticipantAddPerson=Ereignisteilnehmer hinzufügen eventParticipantContactCountOnlyWithSourceCaseInEvent=Zählt nur Kontakte, deren Indexfall mit diesem Ereignis verbunden ist @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Neuen Ereignisteilnehmer erstellen eventParticipantActiveEventParticipants=Aktive Ereignisteilnehmer eventParticipantAllEventParticipants=Alle Ereignisteilnehmer eventParticipantArchivedEventParticipants=Archivierte Ereignisteilnehmer - EventParticipant=Ereignisteilnehmer EventParticipant.contactCount=Kontaktzahl EventParticipant.event=Ereignis @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Ereignisteilnehmer ID EventParticipant.region=Zuständiger Kanton EventParticipant.district=Zuständiger Bezirk EventParticipant.vaccinationStatus=Impfstatus - #EventParticipant export EventParticipantExport.eventParticipantU=Ereignis-Krankheit EventParticipantExport.eventDisease=Ereignis-Krankheit @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Information zur Probe EventParticipantExport.personNationalHealthId=Nationale Gesundheits-ID der Person EventParticipantExport.eventParticipantInvolvmentDescription=Beschreibung der Beteiligung EventParticipantExport.eventParticipantUuid=Ereignisteilnehmer ID - # Event Group EventGroup=Ereignisgruppe EventGroup.uuid=Gruppen-ID EventGroup.name=Gruppennname EventGroup.eventCount=Ereignis-Anzahl - # Expo export=Export exportBasic=Einfacher Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Benutzerdefinierter Fall-Export exportNewExportConfiguration=Neue Exporteinstellung exportEditExportConfiguration=Exporteinstellungen bearbeiten exportConfigurationData=Konfigurationsdaten - ExportConfiguration.NAME=Konfiguration Name ExportConfiguration.myExports=Meine Exporte ExportConfiguration.sharedExports=Geteilte Exporte ExportConfiguration.sharedToPublic=Mit Öffentlichkeit geteilt - exposureFlightNumber=Flugnummer exposureTimePeriod=Zeitraum exposureSourceCaseName=Name des Indexfalls - Exposure=Exposition -Exposure.probableInfectionEnvironment= Wahrscheinlichste infektiöse Exposition +Exposure.probableInfectionEnvironment=Wahrscheinlichste infektiöse Exposition Exposure.startDate=Beginn der Exposition Exposure.endDate=Ende der Exposition Exposure.exposureType=Art der Aktivität @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risikogebiet, wie von der öffentlichen Gesundheitsinstitution Exposure.exposureDate=Datum der Exposition Exposure.exposureRole=Rolle Exposure.largeAttendanceNumber=Öffentliche oder private Veranstaltung mit mehr als 300 Personen - # Facility facilityActiveFacilities=Aktive Einrichtungen facilityArchivedFacilities=Archivierte Einrichtungen facilityAllFacilities=Alle Einrichtungen - Facility.CONFIGURED_FACILITY=Konfigurierte Einrichtung Facility.NO_FACILITY=Zuhause oder anderer Ort Facility.OTHER_FACILITY=Andere Einrichtung - Facility=Einrichtung Facility.additionalInformation=Weitere Informationen Facility.archived=Archiviert @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Öffentliches Eigentum Facility.region=Kanton Facility.type=Art der Einrichtung Facility.typeGroup=Kategorie der Einrichtung -Facility.contactPersonFirstName = Ansprechperson Vorname -Facility.contactPersonLastName = Ansprechperson Nachname -Facility.contactPersonPhone = Telefonnummer der Ansprechperson -Facility.contactPersonEmail = E-Mail-Adresse der Ansprechperson - +Facility.contactPersonFirstName=Ansprechperson Vorname +Facility.contactPersonLastName=Ansprechperson Nachname +Facility.contactPersonPhone=Telefonnummer der Ansprechperson +Facility.contactPersonEmail=E-Mail-Adresse der Ansprechperson FeatureConfiguration.districtName=Bezirk FeatureConfiguration.enabled=Line Listing/Zeilenauflistung aktiviert? FeatureConfiguration.endDate=Enddatum - # Formats formatNumberOfVisitsFormat=%d (%d verpasst) formatNumberOfVisitsLongFormat=%d Anrufe (%d verpasst) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Nachverfolgungs-ID FollowUp.person=Nachverfolgunsperson FollowUp.reportDate=Berichtsdatum FollowUp.followUpUntil=Nachverfolgung bis - # HealthConditions HealthConditions=Gesundheitszustand HealthConditions.tuberculosis=Tuberkulose @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Ehemaliger Raucher HealthConditions.asthma=Asthma bronchiale HealthConditions.sickleCellDisease=Sichelzellenanämie HealthConditions.immunodeficiencyIncludingHiv=Immunschwäche, einschließlich HIV - # Import importDetailed=Detaillierter Import importDownloadCaseImportTemplate=Fall-Import-Vorlage herunterladen @@ -1440,7 +1378,6 @@ importSkips=%d übersprungen importValueSeparator=Wert-Trennzeichen importCancelImport=Import abbrechen infrastructureImportAllowOverwrite=Bestehende Einträge mit importierten Daten überschreiben - #Lab Message LabMessage=Labor-Nachricht LabMessage.labMessageDetails=Details zur Labor-Nachricht @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Neuen Ereignisteilnehmer, den Sie LabMessage.reportId=Meldungs-ID LabMessage.sampleOverallTestResult=Gesamttestresultat LabMessage.assignee=Zugewiesen an - +LabMessage.type=Typ labMessageFetch=Abrufen von Labormeldungen labMessageProcess=Verarbeiten labMessageNoDisease=Keine getestete Krankheit gefunden @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=Keine neuen Labormeldungen verfügbar labMessageForwardedMessageFound=Zugehörige weitergeleitete Labormeldung(en) gefunden labMessageLabMessagesList=Labormeldungen Liste labMessageRelatedEntriesFound=Zugehörige Einträge gefunden - LabMessageCriteria.messageDateFrom=Meldungsdatum von... LabMessageCriteria.messageDateTo=... bis LabMessageCriteria.birthDateFrom=Geburtsdatum von... LabMessageCriteria.birthDateTo=... bis - #Line listing lineListing=Zeilenauflistung lineListingAddLine=Zeile hinzufügen @@ -1502,7 +1437,6 @@ lineListingEnableAll=Alles aktivieren lineListingDisableAllShort=Alles deaktivieren lineListingEndDate=Enddatum lineListingSetEndDateForAll=Enddatum für alle festlegen - # Location Location=Ort Location.additionalInformation=Zusätzliche Angaben @@ -1519,38 +1453,38 @@ Location.latLon=GPS Längen- und Breitengrad Location.latLonAccuracy=GPS-Genauigkeit in m Location.longitude=GPS Längengrad Location.postalCode=Postleitzahl +Location.continent=Kontinent +Location.subcontinent=Subkontinent +Location.country=Land +Location.region=Kanton Location.district=Bezirk Location.community=Gemeinde Location.street=Strasse -Location.contactPersonFirstName = Ansprechperson Vorname -Location.contactPersonLastName = Ansprechperson Nachname -Location.contactPersonPhone = Telefonnummer der Ansprechperson -Location.contactPersonEmail = E-Mail-Adresse der Ansprechperson - +Location.contactPersonFirstName=Ansprechperson Vorname +Location.contactPersonLastName=Ansprechperson Nachname +Location.contactPersonPhone=Telefonnummer der Ansprechperson +Location.contactPersonEmail=E-Mail-Adresse der Ansprechperson # Login Login.doLogIn=Einloggen Login.login=Anmeldung Login.password=Passwort Login.username=Benutzername - #LoginSidebar LoginSidebar.diseaseDetection=Krankheitsdetektion LoginSidebar.diseasePrevention=Krankheitsvorbeugung LoginSidebar.outbreakResponse=Ausbruchantwort LoginSidebar.poweredBy=Betrieben von - # Messaging messagesSendSMS=SMS senden messagesSentBy=Gesendet von messagesNoSmsSentForCase=Keine SMS an Fall-Person gesendet messagesNoPhoneNumberForCasePerson=Fall-Person hat keine Telefonnummer -messagesSms = SMS -messagesEmail = E-Mail -messagesSendingSms = Neue SMS senden -messagesNumberOfMissingPhoneNumbers = Anzahl der ausgewählten Fälle ohne Telefonnummer\: %s -messagesCharacters = Zeichen\: %d / 160 -messagesNumberOfMessages = Nachrichtennummer\: %d - +messagesSms=SMS +messagesEmail=E-Mail +messagesSendingSms=Neue SMS senden +messagesNumberOfMissingPhoneNumbers=Anzahl der ausgewählten Fälle ohne Telefonnummer\: %s +messagesCharacters=Zeichen\: %d / 160 +messagesNumberOfMessages=Nachrichtennummer\: %d # Main Menu mainMenuAbout=Info mainMenuCampaigns=Kampagnen @@ -1569,7 +1503,6 @@ mainMenuTasks=Aufgaben mainMenuUsers=Benutzer mainMenuAggregateReports=mSERS mainMenuShareRequests=Teilen - MaternalHistory.childrenNumber=Gesamtzahl der Kinder MaternalHistory.ageAtBirth=Das Alter der Mutter bei der Geburt de*r Patient*in MaternalHistory.conjunctivitis=Konjunktivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Andere Komplikationen MaternalHistory.otherComplicationsOnset=Datum des Beginns MaternalHistory.otherComplicationsMonth=Schwangerschaftsmonat MaternalHistory.otherComplicationsDetails=Komplikationsdetails - # Outbreak outbreakAffectedDistricts=Betroffene Bezirke outbreakNoOutbreak=Kein Ausbruch outbreakNormal=Normal outbreakOutbreak=Ausbruch - # PathogenTest pathogenTestAdd=Erregertest hinzufügen pathogenTestCreateNew=Neues Erregertestergebnis erstellen @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Neues Ergebnis pathogenTestNewTest=Neues Testresultat pathogenTestRemove=Diesen Erregertest entfernen pathogenTestSelect=Erregertest auswählen - PathogenTest=Erregertest PathogenTests=Erregertests PathogenTest.fourFoldIncreaseAntibodyTiter=4-fache Erhöhung des Antikörpertiters @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Details zur Krankheitsvariante PathogenTest.externalOrderId=Externe ID/Auftragsnummer PathogenTest.preliminary=Vorläufig - # Person personPersonsList=Personenliste personCreateNew=Eine neue Person anlegen @@ -1652,7 +1581,6 @@ personLinkToContacts=Kontakte für diese Person ansehen personsReplaceGeoCoordinates=Auch bestehende Koordinaten ersetzen. Warnung\: Dies könnte Koordinaten ersetzen, die absichtlich anders gesetzt wurden\! personsSetMissingGeoCoordinates=Fehlende Geo-Koordinaten generieren personsUpdated=Aktualisierte Personen - Person=Person Person.additionalDetails=Allgemeine Bemerkung Person.address=Hausadresse @@ -1727,33 +1655,28 @@ Person.otherSalutation=Andere Anrede Person.birthName=Geburtsname Person.birthCountry=Geburtsland Person.citizenship=Staatsangehörigkeit - -personContactDetailOwner = Besitzer -personContactDetailOwnerName = Name des Besitzers -personContactDetailThisPerson = Diese Person -personContactDetailThirdParty = Kontaktdaten einer anderen Person oder Einrichtung erheben - -PersonContactDetail = Personenkontaktdetails -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primäre Kontaktdetails -PersonContactDetail.personContactDetailType = Art der Kontaktdetails -PersonContactDetail.phoneNumberType = Telefonnummer-Typ -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Kontaktinformationen -PersonContactDetail.additionalInformation = Weitere Informationen -PersonContactDetail.thirdParty = Drittperson -PersonContactDetail.thirdPartyRole = Rolle der Drittperson -PersonContactDetail.thirdPartyName = Name der Drittperson - +personContactDetailOwner=Besitzer +personContactDetailOwnerName=Name des Besitzers +personContactDetailThisPerson=Diese Person +personContactDetailThirdParty=Kontaktdaten einer anderen Person oder Einrichtung erheben +PersonContactDetail=Personenkontaktdetails +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primäre Kontaktdetails +PersonContactDetail.personContactDetailType=Art der Kontaktdetails +PersonContactDetail.phoneNumberType=Telefonnummer-Typ +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Kontaktinformationen +PersonContactDetail.additionalInformation=Weitere Informationen +PersonContactDetail.thirdParty=Drittperson +PersonContactDetail.thirdPartyRole=Rolle der Drittperson +PersonContactDetail.thirdPartyName=Name der Drittperson pointOfEntryActivePointsOfEntry=Aktive Einreiseorte pointOfEntryArchivedPointsOfEntry=Archivierte Einreiseorte pointOfEntryAllPointsOfEntry=Alle Einreiseorte - PointOfEntry.OTHER_AIRPORT=Anderer Flughafen PointOfEntry.OTHER_SEAPORT=Anderer Seehafen PointOfEntry.OTHER_GROUND_CROSSING=Anderer Bodenübergang PointOfEntry.OTHER_POE=Anderer Einreiseort - PointOfEntry=Einreiseort PointOfEntry.pointOfEntryType=Art des Einreiseorts PointOfEntry.active=Aktiv? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Breitengrad PointOfEntry.longitude=Längengrad PointOfEntry.externalID=Externe ID PointOfEntry.archived=Archiviert - populationDataMaleTotal=Männlich Gesamt populationDataFemaleTotal=Weiblich Gesamt - PortHealthInfo=Einreiseinformation PortHealthInfo.airlineName=Name der Fluggesellschaft PortHealthInfo.flightNumber=Flugnummer @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Geben Sie den Beförderungstyp an PortHealthInfo.departureLocation=Startort der Reise PortHealthInfo.finalDestination=Endziel PortHealthInfo.details=Einreiseort Details - # Prescription prescriptionNewPrescription=Neues Rezept - Prescription=Verschreibung Prescription.additionalNotes=Zusätzliche Bemerkungen Prescription.dose=Dosis @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Rezeptart Prescription.route=Applikationsart Prescription.routeDetails=Applikationsartspezifikation Prescription.typeOfDrug=Medikamententyp - PrescriptionExport.caseUuid=Fall-ID PrescriptionExport.caseName=Fall Name - # Continent continentActiveContinents=Aktive Kontinente continentArchivedContinents=Archivierte Kontinente continentAllContinents=Alle Kontinente - Continent=Kontinent Continent.archived=Archiviert Continent.externalId=Externe ID Continent.defaultName=Standardname Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Aktive Subkontinente subcontinentArchivedSubcontinents=Archivierte Subkontinente subcontinentAllSubcontinents=Alle Subkontinente - Subcontinent=Subkontinent Subcontinent.archived=Archiviert Subcontinent.externalId=Externe ID Subcontinent.defaultName=Standardname Subcontinent.displayName=Name Subcontinent.continent=Kontinentname - # Country countryActiveCountries=Aktive Länder countryArchivedCountries=Archivierte Länder countryAllCountries=Alle Länder - Country=Land Country.archived=Archiviert Country.externalId=Externe ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO-Code Country.unoCode=UNO-Code Country.subcontinent=Subkontinent - # Region regionActiveRegions=Aktive Kantone regionArchivedRegions=Archivierte Kantone regionAllRegions=Alle Kantone - Region=Kanton Region.archived=Archiviert Region.epidCode=EPID-Nummer @@ -1861,7 +1771,6 @@ Region.growthRate=Wachstumsrate Region.population=Bevölkerung Region.externalID=Externe ID Region.country=Land - # Sample sampleCreateNew=Neue Probe erstellen sampleIncludeTestOnCreation=Testergebnis für diese Probe jetzt erstellen @@ -1888,7 +1797,6 @@ sampleActiveSamples=Aktive Proben sampleArchivedSamples=Archivierte Proben sampleAllSamples=Alle Proben sampleAssociationType=Probenart - Sample=Probe Sample.additionalTestingRequested=Weitere Tests anfordern? Sample.additionalTestingStatus=Status zusätzlicher Tests @@ -1941,23 +1849,22 @@ Sample.uuid=Proben-ID Sample.samplePurpose=Zweck der Probe Sample.samplingReason=Grund für Test Sample.samplingReasonDetails=Details zum Grund der Probenentnahme - SampleExport.additionalTestingRequested=Wurden zusätzliche Tests angefordert? SampleExport.personAddressCaption=Adresse des Falls/Kontakts/Ereignisteilnehmers/in SampleExport.personAge=Alter des Falls/Kontakts/Eventteilnehmers/in SampleExport.caseDistrict=Bezirk des Falls SampleExport.caseCommunity=Gemeinde des Falles SampleExport.caseFacility=Einrichtung des Falls -SampleExport.contactRegion = Kanton des Kontaktes -SampleExport.contactDistrict = Bezirk des Kontaktes -SampleExport.contactCommunity = Gemeinde des Kontaktes +SampleExport.contactRegion=Kanton des Kontaktes +SampleExport.contactDistrict=Bezirk des Kontaktes +SampleExport.contactCommunity=Gemeinde des Kontaktes SampleExport.caseOutcome=Verlauf der Erkrankung des Falls SampleExport.caseRegion=Kanton des Falles SampleExport.caseReportDate=Fallmeldedatum SampleExport.personSex=Geschlecht des Falls/Kontakts/Ereignisteilnehmers/in SampleExport.caseUuid=Fall UUID (Universally Unique Identifier) -SampleExport.contactUuid = Kontakt-UUID -SampleExport.contactReportDate = Kontakt-Meldedatum +SampleExport.contactUuid=Kontakt-UUID +SampleExport.contactReportDate=Kontakt-Meldedatum SampleExport.id=Probe SN SampleExport.sampleReportDate=Probenmeldedatum SampleExport.noTestPossibleReason=Möglicher Grund für das Unterlassen einen Tests @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Datum und Uhrzeit des letzten Zusatztests SampleExport.totalBilirubin=Gesamtbilirubin des letzten Zusatztests SampleExport.urea=Urea des letzten zusätzlichen Tests SampleExport.wbcCount=Anzahl an weissen Blutkörperchen beim letzten zusätzlichen Test - # Immunization Immunization=Immunisierung Immunization.reportDate=Meldedatum Immunization.externalId=Externe ID Immunization.country=Immunisierungs-Land -Immunization.disease = Krankheit -Immunization.diseaseDetails = Krankheitsdetails +Immunization.disease=Krankheit +Immunization.diseaseDetails=Krankheitsdetails Immunization.healthFacility=Einrichtung Immunization.healthFacilityDetails=Name & Beschreibung der Einrichtung -Immunization.meansOfImmunization = Mittel der Immunisierung -Immunization.meansOfImmunizationDetails = Mittel der Immunisierung Details -Immunization.overwriteImmunizationManagementStatus = Immunisierungs-Management-Status überschreiben -Immunization.immunizationManagementStatus = Management Status -Immunization.immunizationStatus = Immunisierungsstatus -Immunization.startDate = Startdatum -Immunization.endDate = Enddatum -Immunization.validFrom = Gültig ab -Immunization.validUntil = Gültig bis -Immunization.numberOfDoses = Anzahl der Impfungen -Immunization.numberOfDosesDetails = Details zur Anzahl der Impfungen -Immunization.vaccinations = Impfungen -Immunization.uuid = Immunisierungs-ID -Immunization.personUuid = Personen-ID -Immunization.personFirstName = Vorname -Immunization.personLastName = Nachname -Immunization.ageAndBirthDate = Alter und Geburtsdatum -Immunization.recoveryDate = Datum der Genesung -Immunization.positiveTestResultDate = Datum des ersten positiven Testergebnisses -Immunization.previousInfection = Vorherige Infektion mit dieser Krankheit -Immunization.lastInfectionDate = Datum der letzten Infektion -Immunization.lastVaccineType = Art des letzten Impfstoffs -Immunization.firstVaccinationDate = Datum der ersten Impfung -Immunization.lastVaccinationDate = Datum der letzten Impfung -Immunization.additionalDetails = Weitere Angaben -Immunization.responsibleRegion = Zuständiger Kanton -Immunization.responsibleDistrict = Zuständiger Bezirk -Immunization.responsibleCommunity = Zuständige Gemeinde -Immunization.immunizationPeriod = Immunisierungszeitraum -immunizationImmunizationsList = Immunisierungsliste +Immunization.meansOfImmunization=Mittel der Immunisierung +Immunization.meansOfImmunizationDetails=Mittel der Immunisierung Details +Immunization.overwriteImmunizationManagementStatus=Immunisierungs-Management-Status überschreiben +Immunization.immunizationManagementStatus=Management Status +Immunization.immunizationStatus=Immunisierungsstatus +Immunization.startDate=Startdatum +Immunization.endDate=Enddatum +Immunization.validFrom=Gültig ab +Immunization.validUntil=Gültig bis +Immunization.numberOfDoses=Anzahl der Impfungen +Immunization.numberOfDosesDetails=Details zur Anzahl der Impfungen +Immunization.vaccinations=Impfungen +Immunization.uuid=Immunisierungs-ID +Immunization.personUuid=Personen-ID +Immunization.personFirstName=Vorname +Immunization.personLastName=Nachname +Immunization.ageAndBirthDate=Alter und Geburtsdatum +Immunization.recoveryDate=Datum der Genesung +Immunization.positiveTestResultDate=Datum des ersten positiven Testergebnisses +Immunization.previousInfection=Vorherige Infektion mit dieser Krankheit +Immunization.lastInfectionDate=Datum der letzten Infektion +Immunization.lastVaccineType=Art des letzten Impfstoffs +Immunization.firstVaccinationDate=Datum der ersten Impfung +Immunization.lastVaccinationDate=Datum der letzten Impfung +Immunization.additionalDetails=Weitere Angaben +Immunization.responsibleRegion=Zuständiger Kanton +Immunization.responsibleDistrict=Zuständiger Bezirk +Immunization.responsibleCommunity=Zuständige Gemeinde +Immunization.immunizationPeriod=Immunisierungszeitraum +immunizationImmunizationsList=Immunisierungsliste linkImmunizationToCaseButton=Fall verknüpfen -openLinkedCaseToImmunizationButton = Fall öffnen -immunizationNewImmunization = Neue Immunisierung -immunizationKeepImmunization = Behalten Sie die vorhandenen Informationen und verwerfen Sie die neue Immunisierung -immunizationOnlyPersonsWithOverdueImmunization = Nur Personen mit überfälliger Immunisierung anzeigen -immunizationOverwriteImmunization = Bestehende Immunisierung mit diesen Daten überschreiben -immunizationCreateNewImmunization = Die neue Immunisierung trotzdem erstellen -immunizationNoImmunizationsForPerson = Es gibt keine Immunisierungen für diese Person - +openLinkedCaseToImmunizationButton=Fall öffnen +immunizationNewImmunization=Neue Immunisierung +immunizationKeepImmunization=Behalten Sie die vorhandenen Informationen und verwerfen Sie die neue Immunisierung +immunizationOnlyPersonsWithOverdueImmunization=Nur Personen mit überfälliger Immunisierung anzeigen +immunizationOverwriteImmunization=Bestehende Immunisierung mit diesen Daten überschreiben +immunizationCreateNewImmunization=Die neue Immunisierung trotzdem erstellen +immunizationNoImmunizationsForPerson=Es gibt keine Immunisierungen für diese Person # Statistics statisticsAddFilter=Filter hinzufügen statisticsAttribute=Merkmal @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Typ statisticsIncidenceDivisor=Inzidenznenner statisticsDataDisplayed=Angezeigte Daten statisticsOpenSormasStats=Sormas-Stats öffnen - # Symptoms symptomsLesionsLocations=Lokalisierung der Läsionen symptomsMaxTemperature=Maximale Körpertemperatur in ° C symptomsSetClearedToNo=Leer auf "Nein" setzen symptomsSetClearedToUnknown=Leer auf "Unbekannt" setzen - Symptoms=Symptome Symptoms.abdominalPain=Bauchschmerzen Symptoms.alteredConsciousness=Veränderter Bewusstseinszustand @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Herzstolpern Symptoms.dizzinessStandingUp=Schwindelgefühl (beim Aufstehen aus dem Sitzen oder aus dem Liegen) Symptoms.highOrLowBloodPressure=Blutdruck zu hoch oder zu niedrig (gemessen) Symptoms.urinaryRetention=Kein Urinlösen mehr - # Task taskMyTasks=Meine Aufgaben taskNewTask=Neue Aufgabe @@ -2284,7 +2186,6 @@ taskOfficerTasks=Aufgaben der Verantwortlichen taskActiveTasks=Aktive Aufgaben taskArchivedTasks=Archivierte Aufgaben taskAllTasks=Alle Aufgaben - Task=Aufgabe Task.assigneeReply=Kommentare zur Ausführung Task.assigneeUser=Zugewiesen an @@ -2306,7 +2207,6 @@ Task.taskType=Aufgabentyp Task.taskAssignee=Zugewiesen an Task.taskPriority=Aufgabenpriorität Task.travelEntry=Einreise - # TestReport TestReport=Testbericht TestReport.testDateTime=Datum und Uhrzeit des Ergebnisses @@ -2316,7 +2216,6 @@ TestReport.testLabName=Laborname TestReport.testLabPostalCode=Labor Postleitzahl TestReport.testResult=Testergebnis TestReport.testType=Art des Tests - # TravelEntry travelEntryCreateCase=Fall erstellen travelEntryOnlyRecoveredEntries=Nur genesene Einreisende @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Verfügung verschickt? TravelEntry.quarantineOfficialOrderSentDate=Verfügung verschickt am TravelEntry.dateOfArrival=Tag der Einreise travelEntryTravelEntriesList=Einreise-Liste - # Treatment treatmentCreateTreatment=Behandlung erstellen treatmentNewTreatment=Neue Behandlung treatmentOpenPrescription=Öffne Verschreibung - Treatment=Behandlung Treatment.additionalNotes=Zusätzliche Bemerkungen Treatment.dose=Dosis @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Details der Behandlung Treatment.treatmentType=Behandlungsart Treatment.typeOfDrug=Medikamententyp Treatment.treatmentRoute=Applikationsart - TreatmentExport.caseUuid=Fall-ID TreatmentExport.caseName=Fall Name - # User userNewUser=Neuer Nutzer userResetPassword=Neues Passwort erstellen @@ -2402,7 +2297,6 @@ syncUsers=Benutzer synchronisieren syncErrors=%d Fehler syncSuccessful=%d synchronisiert syncProcessed=%d/%d verarbeitet - User=Benutzer User.active=Aktiv? User.associatedOfficer=Verbundener Beauftragte*r @@ -2417,12 +2311,10 @@ User.userName=Benutzername User.userRoles=Benutzerrollen User.address=Adresse User.uuid=UUID - # Vaccination -vaccinationNewVaccination = Neue Impfung -vaccinationNoVaccinationsForPerson = Es gibt keine Impfungen für diese Person -vaccinationNoVaccinationsForPersonAndDisease = Es gibt keine Impfungen für diese Person und Krankheit - +vaccinationNewVaccination=Neue Impfung +vaccinationNoVaccinationsForPerson=Es gibt keine Impfungen für diese Person +vaccinationNoVaccinationsForPersonAndDisease=Es gibt keine Impfungen für diese Person und Krankheit Vaccination=Impfung Vaccination.uuid=Impfungs-ID Vaccination.reportDate=Meldedatum @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=Anatomisch-Therapeutisch-Chemischen ( ATC ) Klassifik Vaccination.vaccinationInfoSource=Impf-Informationsquelle Vaccination.pregnant=Schwanger Vaccination.trimester=Trimester - # Views View.actions=Aktionsverzeichnis View.groups=Gruppenverzeichnis - View.aggregatereports=Zusammenfassende Berichterstattung (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Kampagnen-Verzeichnis View.campaign.campaigns.short=Kampagnen View.campaign.campaigndata=Kampagnendaten @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Kampagnendaten-Formular View.campaign.campaigndata.dataform.short=Datenformular View.campaign.campaignstatistics=Kampagnenstatistik View.campaign.campaignstatistics.short=Kampagnenstatistik - View.cases=Fallverzeichnis View.cases.merge=Doppelte Fälle zusammenführen View.cases.archive=Fallarchiv @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Klinischer Verlauf View.cases.maternalhistory=Vorgeschichte der Mutter View.cases.porthealthinfo=Einreiseinformation View.cases.visits=Besuche des Falls - View.persons=Personenverzeichnis View.persons.data=Personeninformationen - View.configuration.communities=Gemeinden-Einstellungen View.configuration.communities.short=Gemeinden View.configuration.districts=Bezirk-Konfiguration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Bevölkerungsdaten View.configuration.populationdata.short=Bevölkerung View.configuration.linelisting=Line Listing/Zeilenauflistung Einstellungen View.configuration.linelisting.short=Line Listing/Zeilenauflistung - View.contacts=Kontaktverzeichnis View.contacts.archive=Kontaktarchiv View.contacts.epidata=Epidemiologische Daten des Kontakts @@ -2520,11 +2405,9 @@ View.contacts.merge=Doppelte Kontakte zusammenführen View.contacts.person=Kontakt Person View.contacts.sub= View.contacts.visits=Kontakt Anrufe - View.dashboard.contacts=Kontaktübersicht View.dashboard.surveillance=Überwachungsübersicht View.dashboard.campaigns=Kampagnen-Dashboard - View.events=Ereignisverzeichnis View.events.archive=Ereignis-Archiv View.events.data=Ereignisinformation @@ -2532,36 +2415,25 @@ View.events.eventactions=Ereignisaktionen View.events.eventparticipants=Ereignisteilnehmer View.events.sub= View.events.eventparticipants.data=Informationen zum Ereignisteilnehmer - View.samples.labMessages=Labormeldungen Verzeichnis - View.reports=Wöchentliche Berichte View.reports.sub= - View.samples=Probenverzeichnis View.samples.archive=Probenarchiv View.samples.data=Probeninformation View.samples.sub= - View.travelEntries=Einreiseverzeichnis - View.immunizations=Immunisierungsverzeichnis - View.statistics=Statistik View.statistics.database-export=Datenbank-Export - View.tasks=Aufgabenverwaltung View.tasks.archive=Aufgabenarchiv View.tasks.sub= - View.users=Benutzerverwaltung View.users.sub= - View.shareRequests=Anfragen zum Teilen - # Visit visitNewVisit=Neuer Anruf - Visit=Anruf Visit.person=Angerufene Person Visit.symptoms=Symptome @@ -2573,24 +2445,19 @@ Visit.visitUser=Anrufende/r Beauftragte*r Visit.disease=Krankheit Visit.reportLat=Breitengrad melden Visit.reportLon=Längengrad melden - # WeeklyReport weeklyReportNoReport=Fehlender Bericht weeklyReportOfficerInformants=Informant*innen weeklyReportsInDistrict=Wöchentliche Berichte in %s weeklyReportRegionOfficers=Beauftragte*r weeklyReportRegionInformants=Informant*innen - WeeklyReport.epiWeek=Epi Woche WeeklyReport.year=Jahr - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Gemeldete Fälle - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informantenberichteinreichung WeeklyReportInformantSummary.totalCaseCount=Fälle von Informant*in gemeldet - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Anzahl der Informant*innen WeeklyReportOfficerSummary.informantReports=Anzahl der Informantenberichte @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Anzahl der Informanten-Null-Beri WeeklyReportOfficerSummary.officer=Bearbeiter*in WeeklyReportOfficerSummary.officerReportDate=Beauftragtenberichtseinreichung WeeklyReportOfficerSummary.totalCaseCount=Fälle von der/dem Beauftragten gemeldet - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Anzahl der Informant*innen WeeklyReportRegionSummary.informantReports=Anzahl der Informantenberichte @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Anzahl der Beauftragten WeeklyReportRegionSummary.officerReports=Anzahl der Beauftragtenberichte WeeklyReportRegionSummary.officerReportPercentage=Prozent WeeklyReportRegionSummary.officerZeroReports=Anzahl der Beauftragten-Null-Berichte - # SORMAS to SORMAS SormasToSormasOptions.organization=Ziel SormasToSormasOptions.withAssociatedContacts=Verknüpfte Kontakte teilen @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Geteilt von sormasToSormasSharedDate=Am sormasToSormasSentFrom=Gesendet von sormasToSormasSendLabMessage=An eine anderes Amt senden -sormasToSormasOriginInfo = Gesendet von +sormasToSormasOriginInfo=Gesendet von BAGExport=BAG-Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Meldender Nutzer ExternalSurveillanceToolGateway.send=An Berichtswerkzeug senden @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Senden bestätigen ExternalSurveillanceToolGateway.notTransferred=Noch nicht an das Berichtswerkzeug gesendet ExternalSurveillanceToolGateway.confirmDelete=Löschen bestätigen ExternalSurveillanceToolGateway.excludeAndSend=%d von %d senden - patientDiaryRegistrationError=Person konnte nicht im Symptomtagebuch registriert werden. patientDiaryCancelError=Follow-up im externen Symptomtagebuch konnte nicht abgebrochen werden patientDiaryPersonNotExportable=Die Person kann nicht in das Symptomtagebuch exportiert werden. Die Person benötigt ein gültiges Geburtsdatum und entweder eine gültige Telefonnummer oder E-Mail Adresse. - showPlacesOnMap=Anzeigen - changeUserEmail=Benutzer-E-Mail ändern - SurveillanceReport=Meldung SurveillanceReport.reportingType=Art des Meldenden SurveillanceReport.creatingUser=Erstellender Nutzer @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Einrichtungsdetails SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=Neue Meldung surveillanceReportNoReportsForCase=Es gibt keine Meldungen für diesen Fall - cancelExternalFollowUpButton=Externe Nachverfolgung abbrechen createSymptomJournalAccountButton=Symptomtagebuch-Account erstellen registerInPatientDiaryButton=Im Symptomtagebuch (Climedo) registrieren @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=Symptomtagebuch (Climedo) openInSymptomJournalButton=Im Symptomtagebuch öffnen openInPatientDiaryButton=Im Symptomtagebuch öffnen (Climedo) cancelExternalFollowUpPopupTitle=Externe Nachverfolgung abbrechen - # User role/right exportUserRoles=Benutzerrollen exportieren userRights=Benutzerrechte userRight=Benutzerrecht +UserRight.caption=Bezeichnung UserRight.description=Beschreibung UserRight.jurisdiction=Zuständigkeitsbereich UserRight.jurisdictionOfRole=Zuständigkeitsbereich der Rolle - SormasToSormasShareRequest.uuid=Anfrage ID SormasToSormasShareRequest.creationDate=Anfragedatum SormasToSormasShareRequest.dataType=Datentyp SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Fälle -SormasToSormasShareRequest.contacts = Kontakte -SormasToSormasShareRequest.events = Ereignisse -SormasToSormasShareRequest.organizationName = Absenderorganisation -SormasToSormasShareRequest.senderName = Absendername -SormasToSormasShareRequest.ownershipHandedOver = Besitz übergeben -SormasToSormasShareRequest.comment = Kommentar -SormasToSormasShareRequest.responseComment = Antwortkommentar - -SormasToSormasPerson.personName = Personenname -SormasToSormasPerson.sex = Geschlecht -SormasToSormasPerson.birthdDate = Geburtsdatum -SormasToSormasPerson.address = Adresse - -TaskExport.personFirstName = Vorname der Person -TaskExport.personLastName = Nachname der Person -TaskExport.personSex = Geschlecht der Person -TaskExport.personBirthDate = Geburtsdatum der Person -TaskExport.personAddressRegion = Kanton der Personenadresse -TaskExport.personAddressDistrict = Bezirk der Personenadresse -TaskExport.personAddressCommunity = Gemeinde der Personenadresse -TaskExport.personAddressFacility = Einrichtung der Personenadresse -TaskExport.personAddressFacilityDetail = Einrichtungsdetails der Personenadresse -TaskExport.personAddressCity = Stadt der Personenadresse -TaskExport.personAddressStreet = Strasse der Personenadresse -TaskExport.personAddressHouseNumber = Hausnummer der Personenadresse -TaskExport.personAddressPostalCode = Postleitzahl der Personenadresse -TaskExport.personPhone = Telefonnummer der Person -TaskExport.personPhoneOwner = Telefonbesitzer des Telefons der Person -TaskExport.personEmailAddress = E-Mail Adresse der Person +SormasToSormasShareRequest.cases=Fälle +SormasToSormasShareRequest.contacts=Kontakte +SormasToSormasShareRequest.events=Ereignisse +SormasToSormasShareRequest.organizationName=Absenderorganisation +SormasToSormasShareRequest.senderName=Absendername +SormasToSormasShareRequest.ownershipHandedOver=Besitz übergeben +SormasToSormasShareRequest.comment=Kommentar +SormasToSormasShareRequest.responseComment=Antwortkommentar +SormasToSormasPerson.personName=Personenname +SormasToSormasPerson.sex=Geschlecht +SormasToSormasPerson.birthdDate=Geburtsdatum +SormasToSormasPerson.address=Adresse +TaskExport.personFirstName=Vorname der Person +TaskExport.personLastName=Nachname der Person +TaskExport.personSex=Geschlecht der Person +TaskExport.personBirthDate=Geburtsdatum der Person +TaskExport.personAddressRegion=Kanton der Personenadresse +TaskExport.personAddressDistrict=Bezirk der Personenadresse +TaskExport.personAddressCommunity=Gemeinde der Personenadresse +TaskExport.personAddressFacility=Einrichtung der Personenadresse +TaskExport.personAddressFacilityDetail=Einrichtungsdetails der Personenadresse +TaskExport.personAddressCity=Stadt der Personenadresse +TaskExport.personAddressStreet=Strasse der Personenadresse +TaskExport.personAddressHouseNumber=Hausnummer der Personenadresse +TaskExport.personAddressPostalCode=Postleitzahl der Personenadresse +TaskExport.personPhone=Telefonnummer der Person +TaskExport.personPhoneOwner=Telefonbesitzer des Telefons der Person +TaskExport.personEmailAddress=E-Mail Adresse der Person TaskExport.personOtherContactDetails = Kontaktdetails der Person diff --git a/sormas-api/src/main/resources/captions_de-DE.properties b/sormas-api/src/main/resources/captions_de-DE.properties index 4506e33bcd5..2d354e22288 100644 --- a/sormas-api/src/main/resources/captions_de-DE.properties +++ b/sormas-api/src/main/resources/captions_de-DE.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Alle area=Gebiet @@ -59,10 +58,9 @@ unknown=Unbekannt diseaseVariantDetails=Details zur Krankheitsvariante unassigned=Nicht zugewiesen assign=Zuweisen -assignToMe = Mir zuweisen +assignToMe=Mir zuweisen endOfProcessingDate=Verarbeitungsende-Datum -dearchiveReason=Grund der Dearchivierung - +dearchiveReason=Grund des Wiedereröffnens # About about=Info aboutAdditionalInfo=Zusätzliche Information @@ -76,18 +74,16 @@ aboutDataDictionary=Datenbeschreibungsverzeichnis (XLSX) aboutSormasWebsite=Offizielle SORMAS-Webseite aboutTechnicalManual=Technische Anleitung (PDF) aboutWhatsNew=Neuigkeiten -aboutLabMessageAdapter = DEMIS Adapter -aboutServiceNotAvailable = Nicht verfügbar -aboutExternalSurveillanceToolGateway = SurvNet Converter -aboutDataProtectionDictionary = Datenschutz-Beschreibungsverzeichnis (XLSX) - +aboutLabMessageAdapter=DEMIS Adapter +aboutServiceNotAvailable=Nicht verfügbar +aboutExternalSurveillanceToolGateway=SurvNet Converter +aboutDataProtectionDictionary=Datenschutz-Beschreibungsverzeichnis (XLSX) # Action actionNewAction=Neue Aktion actionNoActions=Es gibt keine Aktionen für dieses %s actionCreatingLabel=Erstellt am %s von %s actionLastModifiedByLabel=Aktualisiert um %s von %s actionStatusChangeDate=aktualisiert am %s - Action=Aktion Action.title=Titel Action.description=Beschreibung @@ -100,14 +96,13 @@ Action.actionContext=Aktionskontext Action.actionStatus=Aktionsstatus Action.lastModifiedBy=Zuletzt geändert von Action.actionMeasure=Maßnahme - # Actions actionApplyDateFilter=Datumsfilter anwenden -actionArchiveInfrastructure=Archive -actionArchiveCoreEntity=Archive +actionArchiveInfrastructure=Archivieren +actionArchiveCoreEntity=Abschließen actionAssignNewEpidNumber=Neue EPID zuweisen actionBack=Zurück -actionSend = Senden +actionSend=Senden actionCancel=Abbrechen actionClear=Löschen actionClearAll=Alles löschen @@ -116,7 +111,7 @@ actionConfirm=Bestätigen actionContinue=Weiter actionCreate=Erstellen actionDearchiveInfrastructure=De-Archivieren -actionDearchiveCoreEntity=De-Archivieren +actionDearchiveCoreEntity=Wiedereröffnen actionDelete=Löschen actionDeselectAll=Keine auswählen actionDeselectAndContinue=Demarkieren und fortsetzen @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Speichern und Ereignisteilnehmer öffnen actionSaveAndContinue=Speichern und fortfahren actionDiscardAllAndContinue=Alles verwerfen und fortfahren actionDiscardAndContinue=Verwerfen und fortfahren - activityAsCaseFlightNumber=Flugnummer - ActivityAsCase=Betreuung/Unterbringung/Tätigkeit in Einrichtung ActivityAsCase.startDate=Start der Aktivität ActivityAsCase.endDate=Ende der Aktivität @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Details zur Art der Versammlung ActivityAsCase.habitationType=Art des Wohnens/ des Aufenthalts ActivityAsCase.habitationDetails=Details zur Art des Wohnens/ des Aufenthalts ActivityAsCase.role=Rolle - # AdditionalTest additionalTestNewTest=Neues Testresultat - AdditionalTest=Zusätzlicher Test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterielles/venöses Blutgas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Datum und Uhrzeit des Ergebnisses AdditionalTest.totalBilirubin=Gesamt Bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=Anzahl an weißen Blutkörperchen (x10^9/L) - aggregateReportDeathsShort=T aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Letzte Woche @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Laborbestätigungen AggregateReport.deaths=Todesfälle AggregateReport.healthFacility=Einrichtung AggregateReport.pointOfEntry=Einreiseort - -areaActiveAreas = Aktive Gebiete -areaArchivedAreas = Archivierte Gebiete -areaAllAreas = Alle Gebiete -Area.archived = Archiviert -Area.externalId = Externe ID - +areaActiveAreas=Aktive Gebiete +areaArchivedAreas=Archivierte Gebiete +areaAllAreas=Alle Gebiete +Area.archived=Archiviert +Area.externalId=Externe ID # Bulk actions bulkActions=Massenbearbeitung -bulkEditAssignee= Zuweisung bearbeiten +bulkEditAssignee=Zuweisung bearbeiten bulkCancelFollowUp=Nachverfolgung abbrechen bulkCaseClassification=Falldefinitionskategorie ändern bulkCaseOutcome=Verlauf der Erkrankung des Falls ändern @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Überwachungsbeauftragte*n ändern bulkTaskStatus=Aufgabenstatus ändern bulkTaskAssignee=Zuweisung ändern bulkTaskPriority=Priorität ändern - # Campaign campaignActiveCampaigns=Aktive Kampagnen campaignAllCampaigns=Alle Kampagnen @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Höhe in % campaignDashboardOrder=Verfügung campaignSearch=Kampagne suchen campaignDiagramGroupBy=Gruppieren nach - Campaign=Kampagne Campaign.name=Name Campaign.description=Beschreibung @@ -308,14 +294,12 @@ Campaign.region=Bundesland Campaign.district=Landkreis/Kreisfreie Stadt Campaign.community=Gemeinde Campaign.grouping=Gruppierung - -CampaignFormData.campaign = Kampagne -CampaignFormData.campaignFormMeta = Formular -CampaignFormData.formDate = Formulardatum -CampaignFormData.formValuesJson = Fomulardaten -CampaignFormData.area = Gebiet +CampaignFormData.campaign=Kampagne +CampaignFormData.campaignFormMeta=Formular +CampaignFormData.formDate=Formulardatum +CampaignFormData.formValuesJson=Fomulardaten +CampaignFormData.area=Gebiet CampaignFormData.edit=Bearbeiten - # CaseData caseCasesList=Fall-Liste caseInfrastructureDataChanged=Infrastrukturdaten wurden geändert @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Nur Fälle mit verlängerter Isolation caseFilterWithReducedQuarantine=Nur Fälle mit verkürzter Isolation caseFilterOnlyQuarantineHelpNeeded=Maßnahmen zur Gewährleistung der Versorgung caseFilterInludeCasesFromOtherJurisdictions=Fälle aus anderen Zuständigkeitsbereichen einbeziehen -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Nur Fälle mit erfüllter Referenzdefinition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Nur Fälle mit erfüllter Referenzdefinition caseFilterRelatedToEvent=Nur Fälle mit Ereignissen caseFilterOnlyFromOtherInstances=Nur Fälle von anderen Instanzen caseFilterCasesWithReinfection=Nur Fälle mit Reinfektion @@ -343,16 +327,15 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Nur Fälle, die noch nicht an d caseFilterOnlyCasesSharedWithExternalSurvToo=Nur Fälle, die bereits an die Meldesoftware gesendet wurden caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Nur Fälle, die seit der letzten Übertragung an die Meldesoftware geändert wurden caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Nur Fälle, die mit "Senden an die Meldesoftware verhindern" markiert sind - caseFacilityDetailsShort=Name der Einrichtung caseNewCase=Neuer Fall casePlaceOfStay=Aufenthaltsort caseActiveCases=Aktive Fälle -caseArchivedCases=Archivierte Fälle +caseArchivedCases=Abgeschlossene Fälle caseAllCases=Alle Fälle caseTransferCase=Fall übertragen caseTransferCases=Fälle übertragen -caseReferToFacility=Fall an eine Einrichtung weiterleiten +caseReferFromPointOfEntry=Fall vom Einreiseort weiterleiten casePickCase=Einen vorhandenen Fall wählen caseCreateCase=Neuen Fall erstellen caseDefaultView=Standardansicht @@ -374,10 +357,10 @@ convertEventParticipantToCase=Möchten Sie einen Fall für den Ereignisteilnehme convertContactToCase=Soll ein Fall aus dem Kontakt mit positivem Testresultat erstellt werden? caseSearchSpecificCase=Fall suchen caseSearchCase=Fall suchen -caseSelect= Fall auswählen +caseSelect=Fall auswählen caseCreateNew=Neuen Fall erstellen caseDataEnterHomeAddressNow=Heimatadresse der Fallperson jetzt eingeben - +caseCancelDeletion=Fall Löschung abbrechen CaseData=Fall CaseData.additionalDetails=Allgemeiner Kommentar CaseData.caseClassification=Falldefinitionskategorie @@ -445,7 +428,7 @@ CaseData.reportLat=Gemeldeter GPS-Breitengrad CaseData.reportLon=Gemeldeter GPS-Längengrad CaseData.reportLatLonAccuracy=GPS-Genauigkeit in m CaseData.sequelae=Folgeschäden -CaseData.sequelaeDetails=Beschreiben Sie die Folgeschäden +CaseData.sequelaeDetails=Folgeschäden Beschreibung CaseData.smallpoxVaccinationReceived=Wurde in der Vergangenheit eine Pockenimpfung erhalten? CaseData.smallpoxVaccinationScar=Ist eine Pockenimpfungsnarbe vorhanden? CaseData.smallpoxLastVaccinationDate=Datum der letzten Pockenimpfung @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Referenzdefinition CaseData.pointOfEntryRegion=Einreiseort Bundesland CaseData.pointOfEntryDistrict=Einreiseort Landkreis CaseData.externalData=Externe Daten -CaseData.reinfectionStatus = Kategorie der Reinfektion - +CaseData.reinfectionStatus=Kategorie der Reinfektion # CaseExport CaseExport.address=Adresse CaseExport.addressRegion=Adresse Bundesland @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Meldender Nutzer CaseExport.reportingUserRoles=Benutzerrolle des meldenden Nutzers CaseExport.followUpStatusChangeUserName=Verantwortlicher Benutzer CaseExport.followUpStatusChangeUserRoles=Benutzerrolle des verantwortlichen Benutzers - # CaseHospitalization CaseHospitalization=Krankenhausaufenthalt CaseHospitalization.admissionDate=Datum der Aufnahme @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Beginn des Aufenthalts CaseHospitalization.intensiveCareUnitEnd=Ende des Aufenthalts CaseHospitalization.hospitalizationReason=Grund für Hospitalisierung CaseHospitalization.otherHospitalizationReason=Grund spezifizieren - - # CaseImport caseImportErrorDescription=Fehlerbeschreibung caseImportMergeCase=Bestehenden Fall mit Änderungen aus dem importierten Fall überschreiben? - # CasePreviousHospitalization CasePreviousHospitalization=Vorheriger Krankenhausaufenthalt CasePreviousHospitalization.admissionAndDischargeDate=Datum der Aufnahme & Entlassung -CasePreviousHospitalization.admittedToHealthFacility =Wurde der Patient im Krankenhaus stationär aufgenommen? +CasePreviousHospitalization.admittedToHealthFacility=Wurde der Patient im Krankenhaus stationär aufgenommen? CasePreviousHospitalization.admissionDate=Datum der Aufnahme CasePreviousHospitalization.description=Beschreibung CasePreviousHospitalization.dischargeDate=Datum der Entlassung / Verlegung CasePreviousHospitalization.editColumn=Bearbeiten +CasePreviousHospitalization.region=Bundesland +CasePreviousHospitalization.district=Landkreis/Kreisfreie Stadt +CasePreviousHospitalization.community=Gemeinde CasePreviousHospitalization.healthFacility=Krankenhaus CasePreviousHospitalization.healthFacilityDetails=Krankenhausname & Beschreibung CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Grund spezifizieren CasePreviousHospitalization.intensiveCareUnit=Intensivstation CasePreviousHospitalization.intensiveCareUnitStart=Beginn des Aufenthalts CasePreviousHospitalization.intensiveCareUnitEnd=Ende des Aufenthalts - # ClinicalVisit clinicalVisitNewClinicalVisit=Neue klinische Bewertung - ClinicalVisit=Klinische Bewertung ClinicalVisit.bloodPressure=Blutdruck ClinicalVisit.heartRate=Herzfrequenz @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperatur ClinicalVisit.visitDateTime=Datum und Uhrzeit des Besuches ClinicalVisit.visitingPerson=Anwesende*r Arzt/Ärztin ClinicalVisit.visitRemarks=Ärztliche Bemerkungen - ClinicalVisitExport.caseUuid=Fall-ID ClinicalVisitExport.caseName=Fall Name - columnAdditionalTests=Zusätzliche Tests columnDiseaseShort=Krankheit columnLastPathogenTest=Neuester Erregertest (CT/CQ-Wert) columnNumberOfPendingTasks=Ausstehende Aufgaben columnVaccineName=Impfstoffname columnVaccineManufacturer=Impfstoffhersteller - - # Community Community=Gemeinde Community.archived=Archiviert Community.externalID=Externe ID - communityActiveCommunities=Aktive Gemeinden communityArchivedCommunities=Archivierte Gemeinden communityAllCommunities=Alle Gemeinden - # Configuration Configuration.Facilities=Einrichtungen Configuration.Outbreaks=Ausbrüche Configuration.PointsOfEntry=Einreiseorte Configuration.LineListing=Line Listing/Zeilenauflistung - # Contact contactCancelFollowUp=Nachverfolgung abbrechen contactCaseContacts=Fallkontakte @@ -672,7 +644,7 @@ contactResumeFollowUp=Nachverfolgung fortsetzen contactSelect=Kontakt auswählen contactCreateNew=Neuen Kontakt erstellen contactActiveContacts=Aktive Kontakte -contactArchivedContacts=Archivierte Kontakte +contactArchivedContacts=Abgeschlossene Kontakte contactAllContacts=Alle Kontakte contactContactsOverview=Kontakte contactDetailedOverview=Detailliert @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Nur Kontakte, deren Indexfall mit dem s contactOnlyWithSourceCaseInGivenEvent=Nur Kontakte, deren Indexfall mit diesem Ereignis verknüpft ist contactFollowUpDay=Tag contactQuarantineNotOrdered=Keine Quarantäne verordnet -contactPersonPhoneNumber = Telefonnummer der Kontaktperson -contactSourceCase = Indexfall +contactPersonPhoneNumber=Telefonnummer der Kontaktperson +contactSourceCase=Indexfall contactMergeDuplicates=Duplikate zusammenführen contactBackToDirectory=Zurück zum Kontaktverzeichnis contactOpenCasesGuide=Anleitung für Kontakte öffnen @@ -703,7 +675,6 @@ contactOpenMergeGuide=Zusammenführungsanleitung öffnen contactCalculateCompleteness=Vollständigkeit berechnen contactNumberOfDuplicatesDetected=%d potentielle Duplikate erkannt contactFilterWithDifferentRegion=Duplikate mit unterschiedlichen Bundesländern anzeigen - Contact=Kontakt Contact.additionalDetails=Allgemeiner Kommentar Contact.caseClassification=Falldefinitionskategorie des Indexfalls @@ -720,10 +691,10 @@ Contact.community=Zuständige Gemeinde Contact.contactClassification=Kontaktklassifikation Contact.contactOfficer=Verantwortliche*r Kontaktbeauftragte*r Contact.contactOfficerUuid=Verantwortliche*r Kontaktbeauftragte*r -Contact.contactIdentificationSource = Kontaktidentifikationsquelle -Contact.contactIdentificationSourceDetails = Detallierte Kontaktidentifikationsquelle -Contact.tracingApp = Kontakterfassungs-App -Contact.tracingAppDetails = Details Tracking App, z.B. Name +Contact.contactIdentificationSource=Kontaktidentifikationsquelle +Contact.contactIdentificationSourceDetails=Detallierte Kontaktidentifikationsquelle +Contact.tracingApp=Kontakterfassungs-App +Contact.tracingAppDetails=Details Tracking App, z.B. Name Contact.contactProximity=Art des Kontaktes Contact.contactProximityLongForm=Art des Kontaktes - falls mehrere zutreffen, wählen Sie die engste Nähe Contact.contactStatus=Kontaktstatus @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Datum der Nachverfolgungs-Statusänderung Contact.followUpStatusChangeUser=Verantwortlicher Benutzer Contact.expectedFollowUpUntil=Nachverfolgung erwartet bis Contact.vaccinationStatus=Impfstatus - # ContactExport ContactExport.address=Adresse ContactExport.addressDistrict=Adresse Landkreis @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Meldender Nutzer ContactExport.reportingUserRoles=Benutzerrolle des meldenden Nutzers ContactExport.followUpStatusChangeUserName=Verantwortlicher Benutzer ContactExport.followUpStatusChangeUserRoles=Benutzerrolle des verantwortlichen Benutzers - # Dashboard dashboardAlive=Lebendig dashboardApplyCustomFilter=Eigenen Filter anwenden @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Anzahl dashboardProportion=Anteil (%) dashboardViewAsColumnChart=Als Säulendiagramm anzeigen dashboardViewAsBarChart=Als Balkendiagramm anzeigen - defaultRegion=Voreingestellte Bundesländer defaultDistrict=Voreingestellter Landkreis defaultCommunity=Voreingestellte Gemeinde defaultFacility=Standard Einrichtung defaultLaboratory=Voreingestelltes Labor defaultPointOfEntry=Voreingestellter Einreiseort - devModeCaseCount=Anzahl der erstellten Fälle devModeCaseDisease=Krankheit des Falls devModeCaseDistrict=Landkreis der Fälle @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Standardkonfiguration laden devModeLoadPerformanceTestConfig=Performance-Test-Konfiguration laden devModeUseSeed=Seed verwenden - DiseaseBurden.caseCount=Neue Fälle DiseaseBurden.caseDeathCount=Todesfälle DiseaseBurden.casesDifference=Dynamik @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=Todesfallrate DiseaseBurden.eventCount=Anzahl von Ereignissen DiseaseBurden.outbreakDistrictCount=Ausbruchslandkreise DiseaseBurden.previousCaseCount=Vorherige Fälle - # District districtActiveDistricts=Aktive Landkreise districtArchivedDistricts=Archivierte Landkreise districtAllDistricts=Alle Landkreise - District=Landkreis/Kreisfreie Stadt District.archived=Archiviert District.epidCode=EPID-Nummer District.growthRate=Wachstumsrate District.population=Bevölkerung District.externalID=Externe ID - epiDataNoSourceContacts=Für diesen Fall wurden keine Ursprungskontakte erstellt - EpiData=Epidemiologische Daten EpiData.areaInfectedAnimals=Wohnen, Arbeiten oder Reisen in ein Gebiet, in dem infizierte Tiere bestätigt wurden EpiData.exposureDetailsKnown=Expositionsdetails bekannt EpiData.exposures=Expositionen -EpiData.activityAsCaseDetailsKnown = Details zur Betreuung/Unterbringung/Tätigkeit in Einrichtung bekannt -EpiData.activitiesAsCase = Betreuung/Unterbringung/Tätigkeit in Einrichtung +EpiData.activityAsCaseDetailsKnown=Details zur Betreuung/Unterbringung/Tätigkeit in Einrichtung bekannt +EpiData.activitiesAsCase=Betreuung/Unterbringung/Tätigkeit in Einrichtung EpiData.highTransmissionRiskArea=Wohnen oder Arbeiten in einem Gebiet mit hohem Übertragungsrisiko der Krankheit, z.B. in geschlossenen Wohn- und Camp-ähnlichen Umgebungen EpiData.largeOutbreaksArea=Wohnen oder Reisen in Ländern/Territorien/Gebieten mit größeren Ausbrüchen lokaler Transmissionen EpiData.contactWithSourceCaseKnown=Kontakte mit Indexfall bekannt - # Documents documentUploadDocument=Hochladen documentNoDocuments=Es gibt keine Dokumente für diesen %s bulkActionCreatDocuments=Dokumente erstellen - # DocumentTemplate DocumentTemplate=Dokumentvorlage DocumentTemplate.buttonUploadTemplate=Vorlage hochladen @@ -1068,10 +1028,9 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Generierte Dokumente auch de DocumentTemplate.documentUploadWarning=Dokumenten-Upload Warnung DocumentTemplate.fileTooBig=Die Dokumente wurden erfolgreich generiert, aber mindestens ein Dokument konnte nicht in seine Entität hochgeladen werden, da die Dateigröße die spezifizierte Dateigrößengrenze von %dMB übersteigt DocumentTemplate.notUploaded=Dokumente konnten nicht in die folgenden Entitäten hochgeladen werden\: - # Event eventActiveEvents=Aktive Ereignisse -eventArchivedEvents=Archivierte Ereignisse +eventArchivedEvents=Abgeschlossene Ereignisse eventAllEvents=Alle Ereignisse eventActiveGroups=Aktive Gruppen eventArchivedGroups=Archivierte Gruppen @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=Ereignisse innerhalb der gleichen Einrich eventNoDisease=Keine Krankheit eventGroups=Ereignisgruppen eventGroupsMultiple=Dieses Ereignis ist mit %s Ereignisgruppen verknüpft - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Nur Ereignisse, die noch nicht an die Meldesoftware gesendet wurden eventFilterOnlyEventsSharedWithExternalSurvTool=Nur Ereignisse, die bereits an die Meldesoftware gesendet wurden eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Nur Ereignisse, die seit der letzten Übertragung an die Meldesoftware geändert wurden - Event=Ereignis Event.caseCount=Fälle Event.contactCount=Kontakte @@ -1185,7 +1142,6 @@ Event.internalToken=Herdkennung (Internes Aktenzeichen) Event.eventGroups=Gruppen Event.latestEventGroup=Neueste Ereignisgruppe Event.eventGroupCount=Ereignisgruppen Anzahl - # Event action EventAction.eventUuid=Ereignis ID EventAction.eventTitle=Ereignistitel @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Änderungsdatum der Aktion EventAction.actionStatus=Aktionsstatus EventAction.actionPriority=Aktionspriorität EventAction.actionLastModifiedBy=Aktion zuletzt geändert von - # Event action export EventActionExport.eventDate=Datum des Ereignisses - #Event export - # EventParticipant eventParticipantAddPerson=Ereignisteilnehmer hinzufügen eventParticipantContactCountOnlyWithSourceCaseInEvent=Zählt nur Kontakte, deren Indexfall mit diesem Ereignis verbunden ist @@ -1220,8 +1173,7 @@ eventParticipantSelect=Ereignisteilnehmer auswählen eventParticipantCreateNew=Neuen Ereignisteilnehmer erstellen eventParticipantActiveEventParticipants=Aktive Ereignisteilnehmer eventParticipantAllEventParticipants=Alle Ereignisteilnehmer -eventParticipantArchivedEventParticipants=Archivierte Ereignisteilnehmer - +eventParticipantArchivedEventParticipants=Abgeschlossene Ereignisteilnehmer EventParticipant=Ereignisteilnehmer EventParticipant.contactCount=Anzahl der Kontakte EventParticipant.event=Ereignis @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Ereignisteilnehmer ID EventParticipant.region=Zuständiges Bundesland EventParticipant.district=Zuständige/r Landkreis/Kreisfreie Stadt EventParticipant.vaccinationStatus=Impfstatus - #EventParticipant export EventParticipantExport.eventParticipantU=Ereignis Krankheit EventParticipantExport.eventDisease=Ereignis Krankheit @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Probeninformation EventParticipantExport.personNationalHealthId=Krankenversicherungsnummer der Person EventParticipantExport.eventParticipantInvolvmentDescription=Beschreibung der Beteiligung EventParticipantExport.eventParticipantUuid=Ereignisteilnehmer ID - # Event Group EventGroup=Ereignisgruppe EventGroup.uuid=Gruppen-ID EventGroup.name=Gruppennname EventGroup.eventCount=Ereignis-Anzahl - # Expo export=Export exportBasic=Einfacher Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Benutzerdefinierter Fall-Export exportNewExportConfiguration=Neue Exporteinstellung exportEditExportConfiguration=Exporteinstellungen bearbeiten exportConfigurationData=Konfigurationsdaten - ExportConfiguration.NAME=Konfiguration Name ExportConfiguration.myExports=Meine Exporte ExportConfiguration.sharedExports=Geteilte Exporte ExportConfiguration.sharedToPublic=Exportkonfiguration geteilt - exposureFlightNumber=Flugnummer exposureTimePeriod=Zeitraum exposureSourceCaseName=Name des Indexfalls - Exposure=Exposition -Exposure.probableInfectionEnvironment= Wahrscheinliches Infektionsumfeld +Exposure.probableInfectionEnvironment=Wahrscheinliches Infektionsumfeld Exposure.startDate=Beginn der Exposition Exposure.endDate=Ende der Exposition Exposure.exposureType=Art der Aktivität @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risikogebiet, wie von der öffentlichen Gesundheitsinstitution Exposure.exposureDate=Datum der Exposition Exposure.exposureRole=Rolle Exposure.largeAttendanceNumber=Mehr als 300 Teilnehmer - # Facility facilityActiveFacilities=Aktive Einrichtungen facilityArchivedFacilities=Archivierte Einrichtungen facilityAllFacilities=Alle Einrichtungen - Facility.CONFIGURED_FACILITY=Konfigurierte Einrichtung Facility.NO_FACILITY=Zuhause oder anderer Ort Facility.OTHER_FACILITY=Andere Einrichtung - Facility=Einrichtung Facility.additionalInformation=Weitere Informationen Facility.archived=Archiviert @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Öffentliches Eigentum Facility.region=Bundesland Facility.type=Art der Einrichtung Facility.typeGroup=Einrichtungskategorie -Facility.contactPersonFirstName = Ansprechperson Vorname -Facility.contactPersonLastName = Ansprechperson Nachname -Facility.contactPersonPhone = Telefonnummer der Ansprechperson -Facility.contactPersonEmail = E-Mail-Adresse der Ansprechperson - +Facility.contactPersonFirstName=Ansprechperson Vorname +Facility.contactPersonLastName=Ansprechperson Nachname +Facility.contactPersonPhone=Telefonnummer der Ansprechperson +Facility.contactPersonEmail=E-Mail-Adresse der Ansprechperson FeatureConfiguration.districtName=Landkreis FeatureConfiguration.enabled=Line Listing/Zeilenauflistung aktiviert? FeatureConfiguration.endDate=Enddatum - # Formats formatNumberOfVisitsFormat=%d (%d verpasst) formatNumberOfVisitsLongFormat=%d Anrufe (%d verpasst) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Nachverfolgungs ID FollowUp.person=Nachverfolgungsperson FollowUp.reportDate=Meldedatum FollowUp.followUpUntil=Nachverfolgung bis - # HealthConditions HealthConditions=Gesundheitszustand HealthConditions.tuberculosis=Tuberkulose @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Ehemaliger Raucher HealthConditions.asthma=Asthma bronchiale HealthConditions.sickleCellDisease=Sichelzellenanämie HealthConditions.immunodeficiencyIncludingHiv=Immunschwäche, einschließlich HIV - # Import importDetailed=Detaillierter Import importDownloadCaseImportTemplate=Fall-Import-Vorlage herunterladen @@ -1440,7 +1378,6 @@ importSkips=%d übersprungen importValueSeparator=Wert-Trennzeichen importCancelImport=Import abbrechen infrastructureImportAllowOverwrite=Bestehende Einträge mit importierten Daten überschreiben - #Lab Message LabMessage=Labormeldung LabMessage.labMessageDetails=Details zur Labormeldung @@ -1473,20 +1410,18 @@ labMessage.deleteNewlyCreatedEventParticipant=Neuen Ereignisteilnehmer, den Sie LabMessage.reportId=Meldungs-ID LabMessage.sampleOverallTestResult=Gesamttestresultat LabMessage.assignee=Zugewiesen an - +LabMessage.type=Typ labMessageFetch=Labormeldungen abrufen labMessageProcess=Verarbeiten labMessageNoDisease=Keine getestete Krankheit gefunden -labMessageNoNewMessages=Keine neuen Labormeldungen verfügbar +labMessageNoNewMessages=Keine neuen Meldungen verfügbar labMessageForwardedMessageFound=Zugehörige weitergeleitete Labormeldung(en) gefunden labMessageLabMessagesList=Labormeldungen Liste labMessageRelatedEntriesFound=Zugehörige Einträge gefunden - LabMessageCriteria.messageDateFrom=Meldungsdatum von... LabMessageCriteria.messageDateTo=... bis LabMessageCriteria.birthDateFrom=Geburtsdatum von... LabMessageCriteria.birthDateTo=... bis - #Line listing lineListing=Zeilenauflistung lineListingAddLine=Zeile hinzufügen @@ -1502,7 +1437,6 @@ lineListingEnableAll=Alles aktivieren lineListingDisableAllShort=Alles deaktivieren lineListingEndDate=Enddatum lineListingSetEndDateForAll=Enddatum für alle festlegen - # Location Location=Ort Location.additionalInformation=Weitere Informationen @@ -1519,38 +1453,38 @@ Location.latLon=GPS Längen- und Breitengrad Location.latLonAccuracy=GPS-Genauigkeit in m Location.longitude=GPS Längengrad Location.postalCode=Postleitzahl +Location.continent=Kontinent +Location.subcontinent=Subkontinent +Location.country=Land +Location.region=Bundesland Location.district=Landkreis/Kreisfreie Stadt Location.community=Gemeinde Location.street=Straße -Location.contactPersonFirstName = Ansprechperson Vorname -Location.contactPersonLastName = Ansprechperson Nachname -Location.contactPersonPhone = Telefonnummer der Ansprechperson -Location.contactPersonEmail = E-Mail-Adresse der Ansprechperson - +Location.contactPersonFirstName=Ansprechperson Vorname +Location.contactPersonLastName=Ansprechperson Nachname +Location.contactPersonPhone=Telefonnummer der Ansprechperson +Location.contactPersonEmail=E-Mail-Adresse der Ansprechperson # Login Login.doLogIn=Einloggen Login.login=Anmeldung Login.password=Passwort Login.username=Benutzername - #LoginSidebar LoginSidebar.diseaseDetection=Krankheitsdetektion LoginSidebar.diseasePrevention=Krankheitsvorbeugung LoginSidebar.outbreakResponse=Ausbruchantwort LoginSidebar.poweredBy=Betrieben von - # Messaging messagesSendSMS=SMS senden messagesSentBy=Gesendet von messagesNoSmsSentForCase=Keine SMS an Fall-Person gesendet messagesNoPhoneNumberForCasePerson=Fall-Person hat keine Telefonnummer -messagesSms = SMS -messagesEmail = E-Mail -messagesSendingSms = Neue SMS senden -messagesNumberOfMissingPhoneNumbers = Anzahl der ausgewählten Fälle ohne Telefonnummer\: %s -messagesCharacters = Zeichen\: %d / 160 -messagesNumberOfMessages = Nachrichtennummer\: %d - +messagesSms=SMS +messagesEmail=E-Mail +messagesSendingSms=Neue SMS senden +messagesNumberOfMissingPhoneNumbers=Anzahl der ausgewählten Fälle ohne Telefonnummer\: %s +messagesCharacters=Zeichen\: %d / 160 +messagesNumberOfMessages=Nachrichtennummer\: %d # Main Menu mainMenuAbout=Info mainMenuCampaigns=Kampagnen @@ -1569,7 +1503,6 @@ mainMenuTasks=Aufgaben mainMenuUsers=Benutzer mainMenuAggregateReports=mSERS mainMenuShareRequests=Übergaben - MaternalHistory.childrenNumber=Gesamtzahl der Kinder MaternalHistory.ageAtBirth=Das Alter der Mutter bei der Geburt de*r Patient*in MaternalHistory.conjunctivitis=Konjunktivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Andere Komplikationen MaternalHistory.otherComplicationsOnset=Datum des Beginns MaternalHistory.otherComplicationsMonth=Schwangerschaftsmonat MaternalHistory.otherComplicationsDetails=Komplikationsdetails - # Outbreak outbreakAffectedDistricts=Betroffene Landkreise outbreakNoOutbreak=Kein Ausbruch outbreakNormal=Normal outbreakOutbreak=Ausbruch - # PathogenTest pathogenTestAdd=Erregertest hinzufügen pathogenTestCreateNew=Neues Erregertestergebnis erstellen @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Neues Ergebnis pathogenTestNewTest=Neues Testresultat pathogenTestRemove=Diesen Erregertest entfernen pathogenTestSelect=Erregertest auswählen - PathogenTest=Erregertest PathogenTests=Erregertests PathogenTest.fourFoldIncreaseAntibodyTiter=4-fache Erhöhung des Antikörpertiters @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via DEMIS PathogenTest.testedDiseaseVariantDetails=Details zur Krankheitsvariante PathogenTest.externalOrderId=Externe verknüpfte Auftragsnummer PathogenTest.preliminary=Vorläufig - # Person personPersonsList=Personenliste personCreateNew=Eine neue Person anlegen @@ -1652,7 +1581,6 @@ personLinkToContacts=Kontakte für diese Person ansehen personsReplaceGeoCoordinates=Auch bestehende Koordinaten ersetzen. Warnung\: Dies könnte Koordinaten ersetzen, die absichtlich anders gesetzt wurden\! personsSetMissingGeoCoordinates=Fehlende Geo-Koordinaten generieren personsUpdated=Aktualisierte Personen - Person=Person Person.additionalDetails=Allgemeiner Kommentar Person.address=Heimatadresse @@ -1727,33 +1655,28 @@ Person.otherSalutation=Andere Anrede Person.birthName=Geburtsname Person.birthCountry=Geburtsland Person.citizenship=Staatsangehörigkeit - -personContactDetailOwner = Besitzer -personContactDetailOwnerName = Name des Besitzers -personContactDetailThisPerson = Diese Person -personContactDetailThirdParty = Kontaktdaten einer anderen Person oder Einrichtung erheben - -PersonContactDetail = Personenkontaktdetails -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primäre Kontaktdetails -PersonContactDetail.personContactDetailType = Art der Kontaktdetails -PersonContactDetail.phoneNumberType = Telefonnummer-Typ -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Kontaktinformationen -PersonContactDetail.additionalInformation = Weitere Informationen -PersonContactDetail.thirdParty = Dritter -PersonContactDetail.thirdPartyRole = Rolle des Dritten -PersonContactDetail.thirdPartyName = Name des Dritten - +personContactDetailOwner=Besitzer +personContactDetailOwnerName=Name des Besitzers +personContactDetailThisPerson=Diese Person +personContactDetailThirdParty=Kontaktdaten einer anderen Person oder Einrichtung erheben +PersonContactDetail=Personenkontaktdetails +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primäre Kontaktdetails +PersonContactDetail.personContactDetailType=Art der Kontaktdetails +PersonContactDetail.phoneNumberType=Telefonnummer-Typ +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Kontaktinformationen +PersonContactDetail.additionalInformation=Weitere Informationen +PersonContactDetail.thirdParty=Dritter +PersonContactDetail.thirdPartyRole=Rolle des Dritten +PersonContactDetail.thirdPartyName=Name des Dritten pointOfEntryActivePointsOfEntry=Aktive Einreiseorte pointOfEntryArchivedPointsOfEntry=Archivierte Einreiseorte pointOfEntryAllPointsOfEntry=Alle Einreiseorte - PointOfEntry.OTHER_AIRPORT=Anderer Flughafen PointOfEntry.OTHER_SEAPORT=Anderer Seehafen PointOfEntry.OTHER_GROUND_CROSSING=Anderer Grenzübergang/Landweg PointOfEntry.OTHER_POE=Anderer Einreiseort - PointOfEntry=Einreiseort PointOfEntry.pointOfEntryType=Art des Einreiseorts PointOfEntry.active=Aktiv? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Breitengrad PointOfEntry.longitude=Längengrad PointOfEntry.externalID=Externe ID PointOfEntry.archived=Archiviert - populationDataMaleTotal=Männlich Gesamt populationDataFemaleTotal=Weiblich Gesamt - PortHealthInfo=Einreiseinformation PortHealthInfo.airlineName=Name der Fluggesellschaft PortHealthInfo.flightNumber=Flugnummer @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Geben Sie den Beförderungstyp an PortHealthInfo.departureLocation=Abreiseort PortHealthInfo.finalDestination=Reiseziel PortHealthInfo.details=Einreiseort Details - # Prescription prescriptionNewPrescription=Neue Verschreibung - Prescription=Verschreibung Prescription.additionalNotes=Zusätzliche Bemerkungen Prescription.dose=Dosis @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Rezeptart Prescription.route=Applikationsart Prescription.routeDetails=Applikationsartspezifikation Prescription.typeOfDrug=Medikamententyp - PrescriptionExport.caseUuid=Fall-ID PrescriptionExport.caseName=Fall Name - # Continent continentActiveContinents=Aktive Kontinente continentArchivedContinents=Archivierte Kontinente continentAllContinents=Alle Kontinente - Continent=Kontinent Continent.archived=Archiviert Continent.externalId=Externe ID Continent.defaultName=Standardname Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Aktive Subkontinente subcontinentArchivedSubcontinents=Archivierte Subkontinente subcontinentAllSubcontinents=Alle Subkontinente - Subcontinent=Subkontinent Subcontinent.archived=Archiviert Subcontinent.externalId=Externe ID Subcontinent.defaultName=Standardname Subcontinent.displayName=Name Subcontinent.continent=Kontinentname - # Country countryActiveCountries=Aktive Länder countryArchivedCountries=Archivierte Länder countryAllCountries=Alle Länder - Country=Land Country.archived=Archiviert Country.externalId=Externe ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO Code Country.unoCode=UNO Code Country.subcontinent=Subkontinent - # Region regionActiveRegions=Aktive Bundesländer regionArchivedRegions=Archivierte Bundesländer regionAllRegions=Alle Bundesländer - Region=Bundesland Region.archived=Archiviert Region.epidCode=EPID-Nummer @@ -1861,7 +1771,6 @@ Region.growthRate=Wachstumsrate Region.population=Bevölkerung Region.externalID=Externe ID Region.country=Land - # Sample sampleCreateNew=Neue Probe erstellen sampleIncludeTestOnCreation=Testergebnis für diese Probe jetzt erstellen @@ -1888,7 +1797,6 @@ sampleActiveSamples=Aktive Proben sampleArchivedSamples=Archivierte Proben sampleAllSamples=Alle Proben sampleAssociationType=Probenart - Sample=Probe Sample.additionalTestingRequested=Weitere Tests anfordern? Sample.additionalTestingStatus=Status zusätzlicher Tests @@ -1941,23 +1849,22 @@ Sample.uuid=Proben-ID Sample.samplePurpose=Zweck der Probe Sample.samplingReason=Grund für Probenentnahme/Testen Sample.samplingReasonDetails=Details zum Grund der Probenentnahme - SampleExport.additionalTestingRequested=Wurden zusätzliche Tests angefordert? SampleExport.personAddressCaption=Adresse von Fall/Kontakt/Ereignisteilnehmer/in SampleExport.personAge=Alter von Fall/Kontakt/Eventteilnehmer/in SampleExport.caseDistrict=Landkreis des Falls SampleExport.caseCommunity=Gemeinde des Falles SampleExport.caseFacility=Einrichtung des Falls -SampleExport.contactRegion = Bundesland des Kontaktes -SampleExport.contactDistrict = Landkreis des Kontaktes -SampleExport.contactCommunity = Gemeinde des Kontaktes +SampleExport.contactRegion=Bundesland des Kontaktes +SampleExport.contactDistrict=Landkreis des Kontaktes +SampleExport.contactCommunity=Gemeinde des Kontaktes SampleExport.caseOutcome=Verlauf der Erkrankung des Falls SampleExport.caseRegion=Bundesland des Falles SampleExport.caseReportDate=Fallmeldedatum SampleExport.personSex=Geschlecht von Fall/Kontakt/Ereignisteilnehmer/in SampleExport.caseUuid=Fall UUID (Universally Unique Identifier) -SampleExport.contactUuid = Kontakt-UUID -SampleExport.contactReportDate = Kontakt-Meldedatum +SampleExport.contactUuid=Kontakt-UUID +SampleExport.contactReportDate=Kontakt-Meldedatum SampleExport.id=Probe SN SampleExport.sampleReportDate=Probenmeldedatum SampleExport.noTestPossibleReason=Möglicher Grund für das Unterlassen einen Tests @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Datum und Uhrzeit des letzten Zusatztests SampleExport.totalBilirubin=Gesamtbilirubin des letzten Zusatztests SampleExport.urea=Urea des letzten zusätzlichen Tests SampleExport.wbcCount=Anzahl an weißen Blutkörperchen beim letzten zusätzlichen Test - # Immunization Immunization=Immunisierung Immunization.reportDate=Meldedatum Immunization.externalId=Externe ID Immunization.country=Immunisierungs-Land -Immunization.disease = Krankheit -Immunization.diseaseDetails = Krankheitsdetails +Immunization.disease=Krankheit +Immunization.diseaseDetails=Krankheitsdetails Immunization.healthFacility=Einrichtung Immunization.healthFacilityDetails=Name & Beschreibung der Einrichtung -Immunization.meansOfImmunization = Mittel der Immunisierung -Immunization.meansOfImmunizationDetails = Mittel der Immunisierung Details -Immunization.overwriteImmunizationManagementStatus = Immunisierungs-Management-Status überschreiben -Immunization.immunizationManagementStatus = Management Status -Immunization.immunizationStatus = Immunisierungsstatus -Immunization.startDate = Startdatum -Immunization.endDate = Enddatum -Immunization.validFrom = Gültig ab -Immunization.validUntil = Gültig bis -Immunization.numberOfDoses = Erwartete Anzahl der Impfungen -Immunization.numberOfDosesDetails = Details zur Anzahl der Impfungen -Immunization.vaccinations = Impfungen -Immunization.uuid = Immunisierungs-ID -Immunization.personUuid = Personen-ID -Immunization.personFirstName = Vorname -Immunization.personLastName = Nachname -Immunization.ageAndBirthDate = Alter und Geburtsdatum -Immunization.recoveryDate = Datum der Genesung -Immunization.positiveTestResultDate = Datum des ersten positiven Testergebnisses -Immunization.previousInfection = Vorherige Infektion mit dieser Krankheit -Immunization.lastInfectionDate = Datum der letzten Infektion -Immunization.lastVaccineType = Art des letzten Impfstoffs -Immunization.firstVaccinationDate = Datum der ersten Impfung -Immunization.lastVaccinationDate = Datum der letzten Impfung -Immunization.additionalDetails = Weitere Angaben -Immunization.responsibleRegion = Zuständiges Bundesland -Immunization.responsibleDistrict = Zuständige/r Landkreis/Kreisfreie Stadt -Immunization.responsibleCommunity = Zuständige Gemeinde -Immunization.immunizationPeriod = Immunisierungszeitraum -immunizationImmunizationsList = Immunisierungsliste +Immunization.meansOfImmunization=Mittel der Immunisierung +Immunization.meansOfImmunizationDetails=Mittel der Immunisierung Details +Immunization.overwriteImmunizationManagementStatus=Immunisierungs-Management-Status überschreiben +Immunization.immunizationManagementStatus=Management Status +Immunization.immunizationStatus=Immunisierungsstatus +Immunization.startDate=Startdatum +Immunization.endDate=Enddatum +Immunization.validFrom=Gültig ab +Immunization.validUntil=Gültig bis +Immunization.numberOfDoses=Erwartete Anzahl der Impfungen +Immunization.numberOfDosesDetails=Details zur Anzahl der Impfungen +Immunization.vaccinations=Impfungen +Immunization.uuid=Immunisierungs-ID +Immunization.personUuid=Personen-ID +Immunization.personFirstName=Vorname +Immunization.personLastName=Nachname +Immunization.ageAndBirthDate=Alter und Geburtsdatum +Immunization.recoveryDate=Datum der Genesung +Immunization.positiveTestResultDate=Datum des ersten positiven Testergebnisses +Immunization.previousInfection=Vorherige Infektion mit dieser Krankheit +Immunization.lastInfectionDate=Datum der letzten Infektion +Immunization.lastVaccineType=Art des letzten Impfstoffs +Immunization.firstVaccinationDate=Datum der ersten Impfung +Immunization.lastVaccinationDate=Datum der letzten Impfung +Immunization.additionalDetails=Weitere Angaben +Immunization.responsibleRegion=Zuständiges Bundesland +Immunization.responsibleDistrict=Zuständige/r Landkreis/Kreisfreie Stadt +Immunization.responsibleCommunity=Zuständige Gemeinde +Immunization.immunizationPeriod=Immunisierungszeitraum +immunizationImmunizationsList=Immunisierungsliste linkImmunizationToCaseButton=Fall verknüpfen -openLinkedCaseToImmunizationButton = Fall öffnen -immunizationNewImmunization = Neue Immunisierung -immunizationKeepImmunization = Behalten Sie die vorhandenen Informationen und verwerfen Sie die neue Immunisierung -immunizationOnlyPersonsWithOverdueImmunization = Nur Personen mit überfälliger Immunisierung anzeigen -immunizationOverwriteImmunization = Bestehende Immunisierung mit diesen Daten überschreiben -immunizationCreateNewImmunization = Die neue Immunisierung trotzdem erstellen -immunizationNoImmunizationsForPerson = Es gibt keine Immunisierungen für diese Person - +openLinkedCaseToImmunizationButton=Fall öffnen +immunizationNewImmunization=Neue Immunisierung +immunizationKeepImmunization=Behalten Sie die vorhandenen Informationen und verwerfen Sie die neue Immunisierung +immunizationOnlyPersonsWithOverdueImmunization=Nur Personen mit überfälliger Immunisierung anzeigen +immunizationOverwriteImmunization=Bestehende Immunisierung mit diesen Daten überschreiben +immunizationCreateNewImmunization=Die neue Immunisierung trotzdem erstellen +immunizationNoImmunizationsForPerson=Es gibt keine Immunisierungen für diese Person # Statistics statisticsAddFilter=Filter hinzufügen statisticsAttribute=Merkmal @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Typ statisticsIncidenceDivisor=Inzidenznenner statisticsDataDisplayed=Angezeigte Daten statisticsOpenSormasStats=Sormas-Stats öffnen - # Symptoms symptomsLesionsLocations=Lokalisierung der Läsionen symptomsMaxTemperature=Maximale Körpertemperatur in ° C symptomsSetClearedToNo=Leer auf Nein setzen symptomsSetClearedToUnknown=Leer auf Unbekannt setzen - Symptoms=Symptome Symptoms.abdominalPain=Abdominalschmerzen Symptoms.alteredConsciousness=Veränderter Bewusstseinszustand @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Herzstolpern Symptoms.dizzinessStandingUp=Schwindel (beim Aufstehen aus dem Sitzen und Liegen) Symptoms.highOrLowBloodPressure=Blutdruck zu hoch oder zu tief (gemessen) Symptoms.urinaryRetention=Kein Urinlösen mehr - # Task taskMyTasks=Meine Aufgaben taskNewTask=Neue Aufgabe @@ -2284,7 +2186,6 @@ taskOfficerTasks=Aufgaben der Mitarbeiter taskActiveTasks=Aktive Aufgaben taskArchivedTasks=Archivierte Aufgaben taskAllTasks=Alle Aufgaben - Task=Aufgabe Task.assigneeReply=Kommentare zur Ausführung Task.assigneeUser=Zugewiesen an @@ -2306,7 +2207,6 @@ Task.taskType=Aufgabentyp Task.taskAssignee=Zugewiesen an Task.taskPriority=Aufgabenpriorität Task.travelEntry=Einreise - # TestReport TestReport=Testbericht TestReport.testDateTime=Datum und Uhrzeit des Ergebnisses @@ -2316,7 +2216,6 @@ TestReport.testLabName=Laborname TestReport.testLabPostalCode=Labor Postleitzahl TestReport.testResult=Testergebnis TestReport.testType=Art des Tests - # TravelEntry travelEntryCreateCase=Fall erstellen travelEntryOnlyRecoveredEntries=Nur genesene Einreisende @@ -2325,7 +2224,7 @@ travelEntryOnlyEntriesTestedNegative=Nur negativ getestete Einreisende travelEntryOnlyEntriesConvertedToCase=Nur in Fälle konvertierte Einreisen travelEntryOpenResultingCase=Fall zu dieser Einreise öffnen travelEntryActiveTravelEntries=Aktive Einreisen -travelEntryArchivedTravelEntries=Archivierte Einreisen +travelEntryArchivedTravelEntries=Abgeschlossene Einreisen travelEntryAllTravelEntries=Alle Einreisen travelEntriesNoTravelEntriesForPerson=Es gibt keine Einreisen für diese Person TravelEntry=Einreise @@ -2367,14 +2266,12 @@ TravelEntry.quarantineExtended=Quarantäne verlängert? TravelEntry.quarantineReduced=Quarantänezeitraum verkürzt? TravelEntry.quarantineOfficialOrderSent=Offizieller Quarantänebescheid versendet? TravelEntry.quarantineOfficialOrderSentDate=Offizieller Quarantänebescheid wurde versendet am -TravelEntry.dateOfArrival=Tag der Einreise +TravelEntry.dateOfArrival=Einreisedatum travelEntryTravelEntriesList=Einreise-Liste - # Treatment treatmentCreateTreatment=Behandlung erstellen treatmentNewTreatment=Neue Behandlung treatmentOpenPrescription=Öffne Verschreibung - Treatment=Behandlung Treatment.additionalNotes=Zusätzliche Bemerkungen Treatment.dose=Dosis @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Details der Behandlung Treatment.treatmentType=Behandlungsart Treatment.typeOfDrug=Medikamententyp Treatment.treatmentRoute=Applikationsart - TreatmentExport.caseUuid=Fall-ID TreatmentExport.caseName=Fall Name - # User userNewUser=Neuer Nutzer userResetPassword=Neues Passwort erstellen @@ -2402,7 +2297,6 @@ syncUsers=Benutzer synchronisieren syncErrors=%d Fehler syncSuccessful=%d synchronisiert syncProcessed=%d/%d verarbeitet - User=Benutzer User.active=Aktiv? User.associatedOfficer=Verbundener Beauftragte*r @@ -2417,12 +2311,10 @@ User.userName=Benutzername User.userRoles=Benutzerrollen User.address=Adresse User.uuid=UUID - # Vaccination -vaccinationNewVaccination = Neue Impfung -vaccinationNoVaccinationsForPerson = Es gibt keine Impfungen für diese Person -vaccinationNoVaccinationsForPersonAndDisease = Es gibt keine Impfungen für diese Person und Krankheit - +vaccinationNewVaccination=Neue Impfung +vaccinationNoVaccinationsForPerson=Es gibt keine Impfungen für diese Person +vaccinationNoVaccinationsForPersonAndDisease=Es gibt keine Impfungen für diese Person und Krankheit Vaccination=Impfung Vaccination.uuid=Impfungs-ID Vaccination.reportDate=Meldedatum @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC-Code Vaccination.vaccinationInfoSource=Impf-Informationsquelle Vaccination.pregnant=Schwanger Vaccination.trimester=Trimester - # Views View.actions=Aktionsverzeichnis View.groups=Gruppenverzeichnis - View.aggregatereports=Zusammenfassende Berichterstattung (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Kampagnen-Verzeichnis View.campaign.campaigns.short=Kampagnen View.campaign.campaigndata=Kampagnendaten @@ -2457,10 +2346,9 @@ View.campaign.campaigndata.dataform=Kampagnendaten-Formular View.campaign.campaigndata.dataform.short=Datenformular View.campaign.campaignstatistics=Kampagnenstatistik View.campaign.campaignstatistics.short=Kampagnenstatistik - View.cases=Fallverzeichnis View.cases.merge=Doppelte Fälle zusammenführen -View.cases.archive=Fallarchiv +View.cases.archive=Fallabschlüsse View.cases.contacts=Fallkontakte View.cases.data=Fallinformationen View.cases.epidata=Epidemiologische Falldaten @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Klinischer Verlauf View.cases.maternalhistory=Vorgeschichte der Mutter View.cases.porthealthinfo=Einreiseinformation View.cases.visits=Fall Besuche - View.persons=Personenverzeichnis View.persons.data=Personeninformation - View.configuration.communities=Gemeinden-Einstellungen View.configuration.communities.short=Gemeinden View.configuration.districts=Landkreis-Konfiguration @@ -2511,57 +2397,43 @@ View.configuration.populationdata=Bevölkerungsdaten View.configuration.populationdata.short=Bevölkerung View.configuration.linelisting=Line Listing/Zeilenauflistung Einstellungen View.configuration.linelisting.short=Line Listing/Zeilenauflistung - View.contacts=Kontaktverzeichnis -View.contacts.archive=Kontaktarchiv +View.contacts.archive=Kontaktabschlüsse View.contacts.epidata=Kontakt Epidemiologische Daten View.contacts.data=Kontaktinformationen View.contacts.merge=Doppelte Kontakte zusammenführen View.contacts.person=Kontakt Person View.contacts.sub= View.contacts.visits=Kontakt Anrufe - View.dashboard.contacts=Kontaktübersicht View.dashboard.surveillance=Überwachungsübersicht View.dashboard.campaigns=Kampagnen-Dashboard - View.events=Ereignisverzeichnis -View.events.archive=Ereignis-Archiv +View.events.archive=Ereignisabschlüsse View.events.data=Ereignisinformation View.events.eventactions=Ereignisaktionen View.events.eventparticipants=Ereignisteilnehmer View.events.sub= View.events.eventparticipants.data=Informationen des Ereignisteilnehmers - View.samples.labMessages=Labormeldungen Verzeichnis - View.reports=Wöchentliche Berichte View.reports.sub= - View.samples=Probenverzeichnis View.samples.archive=Probenarchiv View.samples.data=Probeninformation View.samples.sub= - View.travelEntries=Einreiseverzeichnis - View.immunizations=Immunisierungsverzeichnis - View.statistics=Statistik View.statistics.database-export=Datenbank-Export - View.tasks=Aufgabenverwaltung View.tasks.archive=Aufgabenarchiv View.tasks.sub= - View.users=Benutzerverwaltung View.users.sub= - View.shareRequests=Anfragen zur Übergabe - # Visit visitNewVisit=Neuer Anruf - Visit=Anruf Visit.person=Angerufene Person Visit.symptoms=Symptome @@ -2573,24 +2445,19 @@ Visit.visitUser=Anrufende/r Beauftragte*r Visit.disease=Krankheit Visit.reportLat=Breitengrad melden Visit.reportLon=Längengrad melden - # WeeklyReport weeklyReportNoReport=Fehlender Bericht weeklyReportOfficerInformants=Informant*innen weeklyReportsInDistrict=Wöchentliche Berichte in %s weeklyReportRegionOfficers=Beauftragte*r weeklyReportRegionInformants=Informant*innen - WeeklyReport.epiWeek=Epi Woche WeeklyReport.year=Jahr - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Gemeldete Fälle - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informantenberichteinreichung WeeklyReportInformantSummary.totalCaseCount=Fälle von Informant*in gemeldet - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Anzahl der Informant*innen WeeklyReportOfficerSummary.informantReports=Anzahl der Informantenberichte @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Anzahl der Informanten-Null-Beri WeeklyReportOfficerSummary.officer=Bearbeiter*in WeeklyReportOfficerSummary.officerReportDate=Beauftragtenberichtseinreichung WeeklyReportOfficerSummary.totalCaseCount=Fälle von der/dem Beauftragten gemeldet - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Anzahl der Informant*innen WeeklyReportRegionSummary.informantReports=Anzahl der Informantenberichte @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Anzahl der Beauftragten WeeklyReportRegionSummary.officerReports=Anzahl der Beauftragtenberichte WeeklyReportRegionSummary.officerReportPercentage=Prozent WeeklyReportRegionSummary.officerZeroReports=Anzahl der Beauftragten-Null-Berichte - # SORMAS to SORMAS SormasToSormasOptions.organization=Gesundheitsamt SormasToSormasOptions.withAssociatedContacts=Verknüpfte Kontakte übergeben @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Geteilt von sormasToSormasSharedDate=Am sormasToSormasSentFrom=Gesendet von sormasToSormasSendLabMessage=An eine anderes Amt senden -sormasToSormasOriginInfo = Gesendet von +sormasToSormasOriginInfo=Gesendet von BAGExport=BAG-Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Meldesoftware ExternalSurveillanceToolGateway.send=Senden @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Senden bestätigen ExternalSurveillanceToolGateway.notTransferred=Noch nicht an die Meldesoftware gesendet ExternalSurveillanceToolGateway.confirmDelete=Löschen bestätigen ExternalSurveillanceToolGateway.excludeAndSend=%d von %d senden - patientDiaryRegistrationError=Person konnte nicht im Symptomtagebuch registriert werden. patientDiaryCancelError=Follow-up im externen Symptomtagebuch konnte nicht abgebrochen werden patientDiaryPersonNotExportable=Die Person kann nicht in das Symptomtagebuch exportiert werden. Die Person benötigt ein gültiges Geburtsdatum und entweder eine gültige Telefonnummer oder E-Mail Adresse. - showPlacesOnMap=Anzeigen - changeUserEmail=Benutzer-E-Mail ändern - SurveillanceReport=Meldung SurveillanceReport.reportingType=Art des Meldenden SurveillanceReport.creatingUser=Erstellender Nutzer @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Einrichtungsdetails SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=Neue Meldung surveillanceReportNoReportsForCase=Es gibt keine Meldungen für diesen Fall - cancelExternalFollowUpButton=Externe Nachverfolgung abbrechen createSymptomJournalAccountButton=Im Symptomtagebuch registrieren registerInPatientDiaryButton=Im Symptomtagebuch registrieren @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=Symptomtagebuch openInSymptomJournalButton=Im Symptomtagebuch öffnen openInPatientDiaryButton=Im Symptomtagebuch öffnen cancelExternalFollowUpPopupTitle=Externe Nachverfolgung abbrechen - # User role/right exportUserRoles=Benutzerrollen exportieren userRights=Benutzerrechte userRight=Benutzerrecht +UserRight.caption=Bezeichnung UserRight.description=Beschreibung UserRight.jurisdiction=Zuständigkeitsbereich UserRight.jurisdictionOfRole=Zuständigkeitsbereich der Rolle - SormasToSormasShareRequest.uuid=Anfrage ID SormasToSormasShareRequest.creationDate=Anfragedatum SormasToSormasShareRequest.dataType=Datentyp SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Fälle -SormasToSormasShareRequest.contacts = Kontakte -SormasToSormasShareRequest.events = Ereignisse -SormasToSormasShareRequest.organizationName = Absender Gesundheitsamt -SormasToSormasShareRequest.senderName = Absendername -SormasToSormasShareRequest.ownershipHandedOver = Besitz übergeben -SormasToSormasShareRequest.comment = Kommentar -SormasToSormasShareRequest.responseComment = Antwortkommentar - -SormasToSormasPerson.personName = Personenname -SormasToSormasPerson.sex = Geschlecht -SormasToSormasPerson.birthdDate = Geburtsdatum -SormasToSormasPerson.address = Adresse - -TaskExport.personFirstName = Vorname der Person -TaskExport.personLastName = Nachname der Person -TaskExport.personSex = Geschlecht der Person -TaskExport.personBirthDate = Geburtsdatum der Person -TaskExport.personAddressRegion = Bundesland der Personenadresse -TaskExport.personAddressDistrict = Landkreis/Kreisfreie Stadt der Personenadresse -TaskExport.personAddressCommunity = Gemeinde der Personenadresse -TaskExport.personAddressFacility = Einrichtung der Personenadresse -TaskExport.personAddressFacilityDetail = Einrichtungsdetails der Personenadresse -TaskExport.personAddressCity = Stadt der Personenadresse -TaskExport.personAddressStreet = Straße der Personenadresse -TaskExport.personAddressHouseNumber = Hausnummer der Personenadresse -TaskExport.personAddressPostalCode = Postleitzahl der Personenadresse -TaskExport.personPhone = Telefonnummer der Person -TaskExport.personPhoneOwner = Telefonbesitzer des Telefons der Person -TaskExport.personEmailAddress = E-Mail Adresse der Person +SormasToSormasShareRequest.cases=Fälle +SormasToSormasShareRequest.contacts=Kontakte +SormasToSormasShareRequest.events=Ereignisse +SormasToSormasShareRequest.organizationName=Absender Gesundheitsamt +SormasToSormasShareRequest.senderName=Absendername +SormasToSormasShareRequest.ownershipHandedOver=Besitz übergeben +SormasToSormasShareRequest.comment=Kommentar +SormasToSormasShareRequest.responseComment=Antwortkommentar +SormasToSormasPerson.personName=Personenname +SormasToSormasPerson.sex=Geschlecht +SormasToSormasPerson.birthdDate=Geburtsdatum +SormasToSormasPerson.address=Adresse +TaskExport.personFirstName=Vorname der Person +TaskExport.personLastName=Nachname der Person +TaskExport.personSex=Geschlecht der Person +TaskExport.personBirthDate=Geburtsdatum der Person +TaskExport.personAddressRegion=Bundesland der Personenadresse +TaskExport.personAddressDistrict=Landkreis/Kreisfreie Stadt der Personenadresse +TaskExport.personAddressCommunity=Gemeinde der Personenadresse +TaskExport.personAddressFacility=Einrichtung der Personenadresse +TaskExport.personAddressFacilityDetail=Einrichtungsdetails der Personenadresse +TaskExport.personAddressCity=Stadt der Personenadresse +TaskExport.personAddressStreet=Straße der Personenadresse +TaskExport.personAddressHouseNumber=Hausnummer der Personenadresse +TaskExport.personAddressPostalCode=Postleitzahl der Personenadresse +TaskExport.personPhone=Telefonnummer der Person +TaskExport.personPhoneOwner=Telefonbesitzer des Telefons der Person +TaskExport.personEmailAddress=E-Mail Adresse der Person TaskExport.personOtherContactDetails = Kontaktdetails der Person diff --git a/sormas-api/src/main/resources/captions_en-AF.properties b/sormas-api/src/main/resources/captions_en-AF.properties index ff2cfb30dd8..1ca40febb47 100644 --- a/sormas-api/src/main/resources/captions_en-AF.properties +++ b/sormas-api/src/main/resources/captions_en-AF.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Region @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Sub Cluster AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active regions -areaArchivedAreas = Archived regions -areaAllAreas = All regions -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active regions +areaArchivedAreas=Archived regions +areaAllAreas=All regions +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Province Campaign.district=District Campaign.community=Cluster Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Region +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Region CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Sub Cluster name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address province @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active clusters communityArchivedCommunities=Archived clusters communityAllCommunities=All clusters - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible cluster Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Province defaultDistrict=Default District defaultCommunity=Default cluster defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Province Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active provinces regionArchivedRegions=Archived provinces regionAllRegions=All provinces - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Cluster of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Province of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Cluster of contact +SampleExport.contactRegion=Province of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Cluster of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Province of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Clusters Configuration View.configuration.communities.short=Clusters View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_en-GH.properties b/sormas-api/src/main/resources/captions_en-GH.properties index 87f30d95a8a..f508d45455e 100644 --- a/sormas-api/src/main/resources/captions_en-GH.properties +++ b/sormas-api/src/main/resources/captions_en-GH.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change district disease control officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Sub District Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active sub districts communityArchivedCommunities=Archived sub districts communityAllCommunities=All sub districts - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible sub district Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible district disease control officer Contact.contactOfficerUuid=Responsible district disease control officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Sub District defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Sub district of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Sub district of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Sub district of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_en-NG.properties b/sormas-api/src/main/resources/captions_en-NG.properties index e62e15ab5e8..8c5cf8e6dff 100644 --- a/sormas-api/src/main/resources/captions_en-NG.properties +++ b/sormas-api/src/main/resources/captions_en-NG.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=State Campaign.district=LGA Campaign.community=Ward Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address state @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active wards communityArchivedCommunities=Archived wards communityAllCommunities=All wards - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing states - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible ward Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address LGA @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default State defaultDistrict=Default LGA defaultCommunity=Default Ward defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=LGA of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak LGAs DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active LGAs districtArchivedDistricts=Archived LGAs districtAllDistricts=All LGAs - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible state EventParticipant.district=Responsible LGA EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=State Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=LGA FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected LGAs outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active states regionArchivedRegions=Archived states regionAllRegions=All states - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=LGA of case SampleExport.caseCommunity=Ward of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = State of contact -SampleExport.contactDistrict = LGA of contact -SampleExport.contactCommunity = Ward of contact +SampleExport.contactRegion=State of contact +SampleExport.contactDistrict=LGA of contact +SampleExport.contactCommunity=Ward of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=State of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=LGAs Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_es-CU.properties b/sormas-api/src/main/resources/captions_es-CU.properties index 3116de7c45d..ff71ea93b4c 100644 --- a/sormas-api/src/main/resources/captions_es-CU.properties +++ b/sormas-api/src/main/resources/captions_es-CU.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Todo area=Zona @@ -59,10 +58,9 @@ unknown=Desconocido diseaseVariantDetails=Detalles de variante de enfermedad unassigned=Sin asignar assign=Asignar -assignToMe = Asignar a mí +assignToMe=Asignar a mí endOfProcessingDate=Fecha de fin de procesamiento dearchiveReason=Razón de desarchivado - # About about=Acerca de aboutAdditionalInfo=Información adicional @@ -76,18 +74,16 @@ aboutDataDictionary=Diccionario de datos (XLSX) aboutSormasWebsite=Sitio web oficial de SORMAS aboutTechnicalManual=Manual técnico (PDF) aboutWhatsNew=¿Qué hay de nuevo? -aboutLabMessageAdapter = Adaptador de mensajes de laboratorio -aboutServiceNotAvailable = No disponible -aboutExternalSurveillanceToolGateway = Puerta de enlace de la herramienta de vigilancia externa -aboutDataProtectionDictionary = Diccionario de protección de datos (XLSX) - +aboutLabMessageAdapter=Adaptador de mensajes de laboratorio +aboutServiceNotAvailable=No disponible +aboutExternalSurveillanceToolGateway=Puerta de enlace de la herramienta de vigilancia externa +aboutDataProtectionDictionary=Diccionario de protección de datos (XLSX) # Action actionNewAction=Nueva acción actionNoActions=No hay acciones para este %s actionCreatingLabel=Creado en %s por %s actionLastModifiedByLabel=Actualizado en %s por %s actionStatusChangeDate=actualizado en %s - Action=Acción Action.title=Título Action.description=Descripción @@ -100,14 +96,13 @@ Action.actionContext=Contexto de la acción Action.actionStatus=Estado de la acción Action.lastModifiedBy=Última modificación por Action.actionMeasure=Medida - # Actions actionApplyDateFilter=Aplicar filtro de fecha actionArchiveInfrastructure=Archivar actionArchiveCoreEntity=Archivar actionAssignNewEpidNumber=Asignar nuevo número de epid actionBack=Atrás -actionSend = Enviar +actionSend=Enviar actionCancel=Cancelar actionClear=Limpiar actionClearAll=Limpiar todo @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Guardar y abrir participante de evento actionSaveAndContinue=Guardar y continuar actionDiscardAllAndContinue=Descartar todo y continuar actionDiscardAndContinue=Descartar y continuar - activityAsCaseFlightNumber=Número de vuelo - ActivityAsCase=Actividad como caso ActivityAsCase.startDate=Inicio de la actividad ActivityAsCase.endDate=Fin de la actividad @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Detalles del tipo de reunión ActivityAsCase.habitationType=Tipo de vivienda ActivityAsCase.habitationDetails=Detalles del tipo de vivienda ActivityAsCase.role=Rol - # AdditionalTest additionalTestNewTest=Nuevo resultado de prueba - AdditionalTest=Prueba adicional AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Gasometría Arterial o Venosa @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Fecha y hora del resultado AdditionalTest.totalBilirubin=Bilirrubina total (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=Número de leucocitos (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Última semana @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Confirmaciones de laboratorio AggregateReport.deaths=Muertes AggregateReport.healthFacility=Centro de salud AggregateReport.pointOfEntry=Punto de entrada - -areaActiveAreas = Zonas activas -areaArchivedAreas = Zonas archivadas -areaAllAreas = Todas las zonas -Area.archived = Archivado -Area.externalId = ID externa - +areaActiveAreas=Zonas activas +areaArchivedAreas=Zonas archivadas +areaAllAreas=Todas las zonas +Area.archived=Archivado +Area.externalId=ID externa # Bulk actions bulkActions=Acciones en masa -bulkEditAssignee= Editar responsable +bulkEditAssignee=Editar responsable bulkCancelFollowUp=Cancelar seguimiento bulkCaseClassification=Cambiar clasificación de casos bulkCaseOutcome=Cambiar resultado del caso @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Cambiar funcionario de vigilancia bulkTaskStatus=Cambiar estado de tarea bulkTaskAssignee=Cambiar encargado bulkTaskPriority=Cambiar prioridad - # Campaign campaignActiveCampaigns=Campañas activas campaignAllCampaigns=Todas las campañas @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Altura en % campaignDashboardOrder=Pedido campaignSearch=Buscar campaña campaignDiagramGroupBy=Agrupar por - Campaign=Campaña Campaign.name=Nombre Campaign.description=Descripción @@ -308,14 +294,12 @@ Campaign.region=Provincia Campaign.district=Municipio Campaign.community=Área de salud Campaign.grouping=Agrupamiento - -CampaignFormData.campaign = Campaña -CampaignFormData.campaignFormMeta = Formulario -CampaignFormData.formDate = Fecha del formulario -CampaignFormData.formValuesJson = Datos de formulario -CampaignFormData.area = Zona +CampaignFormData.campaign=Campaña +CampaignFormData.campaignFormMeta=Formulario +CampaignFormData.formDate=Fecha del formulario +CampaignFormData.formValuesJson=Datos de formulario +CampaignFormData.area=Zona CampaignFormData.edit=Editar - # CaseData caseCasesList=Lista de casos caseInfrastructureDataChanged=Los datos de infraestructura han cambiado @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Sólo casos con cuarentena extendida caseFilterWithReducedQuarantine=Sólo casos con cuarentena reducida caseFilterOnlyQuarantineHelpNeeded=Ayuda necesaria en cuarentena caseFilterInludeCasesFromOtherJurisdictions=Incluir casos de otras jurisdicciones -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Solo casos con definición de referencia cumplida +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Solo casos con definición de referencia cumplida caseFilterRelatedToEvent=Sólo casos con eventos caseFilterOnlyFromOtherInstances=Solo casos de otras instancias caseFilterCasesWithReinfection=Solo casos con reinfección @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Sólo casos aún no compartidos caseFilterOnlyCasesSharedWithExternalSurvToo=Sólo casos ya compartidos con la herramienta de reporte caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Sólo casos modificados desde la última vez que se compartieron con la herramienta de reporte caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Solo casos marcados con 'No compartir con la herramienta de reporte' - caseFacilityDetailsShort=Nombre de la instalación caseNewCase=Nuevo caso casePlaceOfStay=Lugar de estancia @@ -352,7 +335,7 @@ caseArchivedCases=Casos archivados caseAllCases=Todos los casos caseTransferCase=Transferir caso caseTransferCases=Transferir casos -caseReferToFacility=Remitir caso a una instalación +caseReferFromPointOfEntry=Remitir caso desde punto de entrada casePickCase=Elegir un caso existente caseCreateCase=Crear un nuevo caso caseDefaultView=Vista por defecto @@ -374,10 +357,10 @@ convertEventParticipantToCase=¿Crear caso del participante de evento con result convertContactToCase=¿Crear caso del contacto con resultado de prueba positivo? caseSearchSpecificCase=Buscar caso específico caseSearchCase=Buscar caso -caseSelect= Seleccionar caso +caseSelect=Seleccionar caso caseCreateNew=Crear nuevo caso caseDataEnterHomeAddressNow=Ingrese ahora la dirección personal del caso - +caseCancelDeletion=Cancelar eliminación de caso CaseData=Caso CaseData.additionalDetails=Comentario general CaseData.caseClassification=Clasificación de casos @@ -445,7 +428,7 @@ CaseData.reportLat=Latitud GPS del informe CaseData.reportLon=Longitud GPS del informe CaseData.reportLatLonAccuracy=Precisión GPS del informe en m CaseData.sequelae=Secuelas -CaseData.sequelaeDetails=Describir secuelas +CaseData.sequelaeDetails=Descripción de secuelas CaseData.smallpoxVaccinationReceived=¿Vacunación contra la viruela recibida en el pasado? CaseData.smallpoxVaccinationScar=¿Presenta cicatriz de vacunación contra la viruela? CaseData.smallpoxLastVaccinationDate=Fecha de la última vacunación contra la viruela @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Definición de referencia CaseData.pointOfEntryRegion=Provincia del punto de entrada CaseData.pointOfEntryDistrict=Municipio del punto de entrada CaseData.externalData=Datos externos -CaseData.reinfectionStatus = Estado de reinfección - +CaseData.reinfectionStatus=Estado de reinfección # CaseExport CaseExport.address=Dirección CaseExport.addressRegion=Provincia de la dirección @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Usuario informante CaseExport.reportingUserRoles=Roles del usuario informante CaseExport.followUpStatusChangeUserName=Usuario responsable CaseExport.followUpStatusChangeUserRoles=Roles del usuario responsable - # CaseHospitalization CaseHospitalization=Hospitalización CaseHospitalization.admissionDate=Fecha de visita o admisión @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Inicio de la estancia CaseHospitalization.intensiveCareUnitEnd=Final de la estancia CaseHospitalization.hospitalizationReason=Motivo de la hospitalización CaseHospitalization.otherHospitalizationReason=Especificar motivo - - # CaseImport caseImportErrorDescription=Descripción del error caseImportMergeCase=¿Sobrescribir el caso existente con los cambios del caso importado? - # CasePreviousHospitalization CasePreviousHospitalization=Hospitalización anterior CasePreviousHospitalization.admissionAndDischargeDate=Fecha de admisión & alta -CasePreviousHospitalization.admittedToHealthFacility =¿El paciente se admitió en la instalación como paciente internado? +CasePreviousHospitalization.admittedToHealthFacility=¿El paciente se admitió en la instalación como paciente internado? CasePreviousHospitalization.admissionDate=Fecha de admisión CasePreviousHospitalization.description=Descripción CasePreviousHospitalization.dischargeDate=Fecha de alta o transferencia CasePreviousHospitalization.editColumn=Editar +CasePreviousHospitalization.region=Provincia +CasePreviousHospitalization.district=Municipio +CasePreviousHospitalization.community=Área de Salud CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Nombre & descripción del hospital CasePreviousHospitalization.isolated=Aislamiento @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Especificar motivo CasePreviousHospitalization.intensiveCareUnit=Estancia en la unidad de cuidados intensivos CasePreviousHospitalization.intensiveCareUnitStart=Inicio de la estancia CasePreviousHospitalization.intensiveCareUnitEnd=Final de la estancia - # ClinicalVisit clinicalVisitNewClinicalVisit=Nueva evaluación clínica - ClinicalVisit=Evaluación clínica ClinicalVisit.bloodPressure=Presión sanguínea ClinicalVisit.heartRate=Frecuencia cardíaca @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperatura ClinicalVisit.visitDateTime=Fecha y hora de la visita ClinicalVisit.visitingPerson=Médico que atiende ClinicalVisit.visitRemarks=Observaciones del médico - ClinicalVisitExport.caseUuid=ID del caso ClinicalVisitExport.caseName=Nombre del caso - columnAdditionalTests=Pruebas adicionales columnDiseaseShort=Enfermedad columnLastPathogenTest=Última prueba de patógeno (Valor CT/CQ) columnNumberOfPendingTasks=Tareas pendientes columnVaccineName=Nombre de vacuna columnVaccineManufacturer=Fabricante de vacuna - - # Community Community=Área de salud Community.archived=Archivado Community.externalID=ID externa - communityActiveCommunities=Áreas de salud activas communityArchivedCommunities=Áreas de salud archivadas communityAllCommunities=Todas las áreas de salud - # Configuration Configuration.Facilities=Instalaciones Configuration.Outbreaks=Brotes Configuration.PointsOfEntry=Puntos de entrada Configuration.LineListing=Listado de líneas - # Contact contactCancelFollowUp=Cancelar seguimiento contactCaseContacts=Contactos del caso @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Sólo contactos con caso de origen vinc contactOnlyWithSourceCaseInGivenEvent=Sólo contactos cuyo caso de origen está vinculado a este evento contactFollowUpDay=Día contactQuarantineNotOrdered=No hay cuarentena ordenada -contactPersonPhoneNumber = Número telefónico del contacto -contactSourceCase = Caso de origen +contactPersonPhoneNumber=Número telefónico del contacto +contactSourceCase=Caso de origen contactMergeDuplicates=Combinar duplicados contactBackToDirectory=Volver al directorio de contactos contactOpenCasesGuide=Abrir guía de contactos @@ -703,7 +675,6 @@ contactOpenMergeGuide=Abrir guía de combinación contactCalculateCompleteness=Calcular completitud contactNumberOfDuplicatesDetected=%d potenciales duplicados detectados contactFilterWithDifferentRegion=Mostrar duplicados con provincias diferentes - Contact=Contacto Contact.additionalDetails=Comentario general Contact.caseClassification=Clasificación del caso de origen @@ -720,10 +691,10 @@ Contact.community=Área de salud responsable Contact.contactClassification=Clasificación del contacto Contact.contactOfficer=Funcionario de contacto responsable Contact.contactOfficerUuid=Funcionario de contacto responsable -Contact.contactIdentificationSource = Fuente de identificación de contacto -Contact.contactIdentificationSourceDetails = Detalles de la fuente de identificación de contacto -Contact.tracingApp = Aplicación de seguimiento -Contact.tracingAppDetails = Detalles de la aplicación de seguimiento, por ejemplo, nombre +Contact.contactIdentificationSource=Fuente de identificación de contacto +Contact.contactIdentificationSourceDetails=Detalles de la fuente de identificación de contacto +Contact.tracingApp=Aplicación de seguimiento +Contact.tracingAppDetails=Detalles de la aplicación de seguimiento, por ejemplo, nombre Contact.contactProximity=Tipo de contacto Contact.contactProximityLongForm=Tipo de contacto - si son varios, elegir la proximidad de contacto más cercana Contact.contactStatus=Estado del contacto @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Fecha de cambio de estado de seguimiento Contact.followUpStatusChangeUser=Usuario responsable Contact.expectedFollowUpUntil=Seguimiento esperado hasta Contact.vaccinationStatus=Estado de vacunación - # ContactExport ContactExport.address=Dirección ContactExport.addressDistrict=Municipio de la dirección @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Usuario informante ContactExport.reportingUserRoles=Roles del usuario informante ContactExport.followUpStatusChangeUserName=Usuario responsable ContactExport.followUpStatusChangeUserRoles=Roles del usuario responsable - # Dashboard dashboardAlive=Vivo dashboardApplyCustomFilter=Aplicar filtro personalizado @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Conteo dashboardProportion=Proporción (%) dashboardViewAsColumnChart=Ver como gráfico de columnas dashboardViewAsBarChart=Ver como gráfico de barras - defaultRegion=Provincia por defecto defaultDistrict=Municipio por defecto defaultCommunity=Área de salud por defecto defaultFacility=Instalación por defecto defaultLaboratory=Laboratorio por defecto defaultPointOfEntry=Punto de entrada por defecto - devModeCaseCount=Número de casos generados devModeCaseDisease=Enfermedad de los casos devModeCaseDistrict=Municipio de los casos @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Semilla generadora devModeLoadDefaultConfig=Cargar configuración predeterminada devModeLoadPerformanceTestConfig=Cargar configuración de prueba de rendimiento devModeUseSeed=Usar semilla - DiseaseBurden.caseCount=Nuevos casos DiseaseBurden.caseDeathCount=Muertes DiseaseBurden.casesDifference=Dinámica @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=TL DiseaseBurden.eventCount=Número de eventos DiseaseBurden.outbreakDistrictCount=Municipios con brote DiseaseBurden.previousCaseCount=Casos anteriores - # District districtActiveDistricts=Municipios activos districtArchivedDistricts=Municipios archivados districtAllDistricts=Todos los municipios - District=Municipio District.archived=Archivado District.epidCode=Código epid District.growthRate=Tasa de crecimiento District.population=Población District.externalID=ID externa - epiDataNoSourceContacts=No se han creado contactos de origen para este caso - EpiData=Datos epidemiológicos EpiData.areaInfectedAnimals=Reside, trabaja o viaja a una zona donde se han confirmado animales infectados EpiData.exposureDetailsKnown=Detalles de exposición conocidos EpiData.exposures=Exposiciones -EpiData.activityAsCaseDetailsKnown = Detalles conocidos de la actividad -EpiData.activitiesAsCase = Actividades como caso +EpiData.activityAsCaseDetailsKnown=Detalles conocidos de la actividad +EpiData.activitiesAsCase=Actividades como caso EpiData.highTransmissionRiskArea=Reside o trabaja en una zona con alto riesgo de transmisión de la enfermedad, por ejemplo, entornos residenciales cerrados, campamentos y similares EpiData.largeOutbreaksArea=Reside en, o viaja a, países/territorios/zonas que experimentan brotes mayores de transmisión local EpiData.contactWithSourceCaseKnown=Contactos con el caso de origen conocidos - # Documents documentUploadDocument=Nuevo documento documentNoDocuments=No hay documentos para este %s bulkActionCreatDocuments=Crear documentos para orden de cuarentena - # DocumentTemplate DocumentTemplate=Plantilla de documento DocumentTemplate.buttonUploadTemplate=Cargar plantilla @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=También subir los documento DocumentTemplate.documentUploadWarning=Aviso de subida de documento DocumentTemplate.fileTooBig=Los documentos se generaron con éxito, pero al menos un documento no pudo ser subido a su entidad porque su tamaño de archivo supera el límite de tamaño de archivo especificado de %dMB DocumentTemplate.notUploaded=No se pudieron subir documentos a las siguientes entidades\: - # Event eventActiveEvents=Eventos activos eventArchivedEvents=Eventos archivados @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=Ver eventos dentro del mismo centro eventNoDisease=Sin enfermedad eventGroups=Grupos de eventos eventGroupsMultiple=Este evento está relacionado a %s grupos de eventos - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Sólo eventos aún no compartidos con la herramienta de reporte eventFilterOnlyEventsSharedWithExternalSurvTool=Sólo eventos ya compartidos con la herramienta de reporte eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Sólo eventos modificados desde la última vez que se compartieron con la herramienta de reporte - Event=Evento Event.caseCount=Casos Event.contactCount=Contactos @@ -1185,7 +1142,6 @@ Event.internalToken=Token interno Event.eventGroups=Grupos Event.latestEventGroup=Último grupo de eventos Event.eventGroupCount=Número de grupos de eventos - # Event action EventAction.eventUuid=ID de evento EventAction.eventTitle=Título de evento @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Fecha de modificación de acción EventAction.actionStatus=Estado de acción EventAction.actionPriority=Prioridad de acción EventAction.actionLastModifiedBy=Última modificación de la acción por - # Event action export EventActionExport.eventDate=Fecha del evento - #Event export - # EventParticipant eventParticipantAddPerson=Añadir participante eventParticipantContactCountOnlyWithSourceCaseInEvent=Solo cuenta contactos cuyo caso de origen está relacionado a este evento @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Crear nuevo participante de evento eventParticipantActiveEventParticipants=Participantes de evento activos eventParticipantAllEventParticipants=Todos los participantes de evento eventParticipantArchivedEventParticipants=Participantes de evento archivados - EventParticipant=Participante de evento EventParticipant.contactCount=Número de contactos EventParticipant.event=Evento @@ -1238,7 +1190,6 @@ EventParticipant.uuid=ID del participante del evento EventParticipant.region=Provincia responsable EventParticipant.district=Municipio responsable EventParticipant.vaccinationStatus=Estado de vacunación - #EventParticipant export EventParticipantExport.eventParticipantU=Enfermedad del evento EventParticipantExport.eventDisease=Enfermedad del evento @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Información de muestras EventParticipantExport.personNationalHealthId=Carnet de identidad EventParticipantExport.eventParticipantInvolvmentDescription=Descripción de la participación EventParticipantExport.eventParticipantUuid=ID del participante del evento - # Event Group EventGroup=Grupo de eventos EventGroup.uuid=Id de grupo EventGroup.name=Nombre de grupo EventGroup.eventCount=Número de eventos - # Expo export=Exportar exportBasic=Exportación básica @@ -1285,18 +1234,15 @@ exportCaseCustom=Exportación personalizada de casos exportNewExportConfiguration=Nueva configuración de exportación exportEditExportConfiguration=Editar configuración de exportación exportConfigurationData=Datos de configuración - ExportConfiguration.NAME=Nombre de la configuración ExportConfiguration.myExports=Mis exportaciones ExportConfiguration.sharedExports=Exportaciones compartidas ExportConfiguration.sharedToPublic=Compartido al público - exposureFlightNumber=Número de vuelo exposureTimePeriod=Periodo de tiempo exposureSourceCaseName=Nombre del caso de origen - Exposure=Exposición -Exposure.probableInfectionEnvironment= Entorno de infección probable +Exposure.probableInfectionEnvironment=Entorno de infección probable Exposure.startDate=Inicio de la exposición Exposure.endDate=Fin de la exposición Exposure.exposureType=Tipo de actividad @@ -1348,16 +1294,13 @@ Exposure.riskArea=Zona de riesgo definida por la institución de salud pública Exposure.exposureDate=Fecha de exposición Exposure.exposureRole=Rol Exposure.largeAttendanceNumber=Más de 300 asistentes - # Facility facilityActiveFacilities=Instalaciones activas facilityArchivedFacilities=Instalaciones archivadas facilityAllFacilities=Todas las instalaciones - Facility.CONFIGURED_FACILITY=Instalación configurada Facility.NO_FACILITY=Casa u otro lugar Facility.OTHER_FACILITY=Otra instalación - Facility=Instalación Facility.additionalInformation=Información adicional Facility.archived=Archivado @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Propiedad pública Facility.region=Provincia Facility.type=Tipo de instalación Facility.typeGroup=Categoría de instalación -Facility.contactPersonFirstName = Nombre de la persona de contacto -Facility.contactPersonLastName = Apellidos de la persona de contacto -Facility.contactPersonPhone = Número telefónico de la persona de contacto -Facility.contactPersonEmail = Dirección de correo electrónico de la persona de contacto - +Facility.contactPersonFirstName=Nombre de la persona de contacto +Facility.contactPersonLastName=Apellidos de la persona de contacto +Facility.contactPersonPhone=Número telefónico de la persona de contacto +Facility.contactPersonEmail=Dirección de correo electrónico de la persona de contacto FeatureConfiguration.districtName=Municipio FeatureConfiguration.enabled=¿Listado de líneas habilitado? FeatureConfiguration.endDate=Fecha final - # Formats formatNumberOfVisitsFormat=%d (%d perdidas) formatNumberOfVisitsLongFormat=%d visitas (%d perdidas) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=ID de seguimiento FollowUp.person=Persona en seguimiento FollowUp.reportDate=Fecha del informe FollowUp.followUpUntil=Seguimiento hasta - # HealthConditions HealthConditions=Condiciones de salud HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Ex fumador HealthConditions.asthma=Asma HealthConditions.sickleCellDisease=Enfermedad de células falciformes HealthConditions.immunodeficiencyIncludingHiv=Inmunodeficiencia, incluido el VIH - # Import importDetailed=Importación detallada importDownloadCaseImportTemplate=Descargar Plantilla de Importación de Casos @@ -1440,7 +1378,6 @@ importSkips=%d omitidos importValueSeparator=Separador de valores importCancelImport=Cancelar importación infrastructureImportAllowOverwrite=Sobrescribir las entradas existentes con datos importados - #Lab Message LabMessage=Mensaje de laboratorio LabMessage.labMessageDetails=Detalles del mensaje de laboratorio @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Eliminar el nuevo participante de LabMessage.reportId=ID de informe LabMessage.sampleOverallTestResult=Resultado global de la prueba LabMessage.assignee=Responsable - +LabMessage.type=Tipo labMessageFetch=Obtener mensajes de laboratorio labMessageProcess=Proceso labMessageNoDisease=No se encontró ninguna enfermedad probada @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No hay nuevos mensajes disponibles labMessageForwardedMessageFound=Se encontraron mensajes de laboratorio relacionados reenviados labMessageLabMessagesList=Lista de mensajes de laboratorio labMessageRelatedEntriesFound=Se encontraron entradas relacionadas - LabMessageCriteria.messageDateFrom=Fecha de mensaje desde... LabMessageCriteria.messageDateTo=... hasta LabMessageCriteria.birthDateFrom=Fecha de nacimiento desde... LabMessageCriteria.birthDateTo=... hasta - #Line listing lineListing=Listado de líneas lineListingAddLine=Añadir línea @@ -1502,7 +1437,6 @@ lineListingEnableAll=Habilitar todo lineListingDisableAllShort=Deshabilitar todo lineListingEndDate=Fecha final lineListingSetEndDateForAll=Establecer fecha final para todo - # Location Location=Ubicación Location.additionalInformation=Información adicional @@ -1519,38 +1453,38 @@ Location.latLon=Lat y lon GPS Location.latLonAccuracy=Precisión GPS en m Location.longitude=Longitud GPS Location.postalCode=Código postal +Location.continent=Continente +Location.subcontinent=Subcontinente +Location.country=País +Location.region=Provincia Location.district=Municipio Location.community=Área de salud Location.street=Calle -Location.contactPersonFirstName = Nombre de la persona de contacto -Location.contactPersonLastName = Apellidos de la persona de contacto -Location.contactPersonPhone = Número telefónico de la persona de contacto -Location.contactPersonEmail = Dirección de correo electrónico de la persona de contacto - +Location.contactPersonFirstName=Nombre de la persona de contacto +Location.contactPersonLastName=Apellidos de la persona de contacto +Location.contactPersonPhone=Número telefónico de la persona de contacto +Location.contactPersonEmail=Dirección de correo electrónico de la persona de contacto # Login Login.doLogIn=Iniciar sesión Login.login=Inicio de sesión Login.password=contraseña Login.username=nombre de usuario - #LoginSidebar LoginSidebar.diseaseDetection=Detección de enfermedades LoginSidebar.diseasePrevention=Prevención de enfermedades LoginSidebar.outbreakResponse=Respuesta a brote LoginSidebar.poweredBy=Provisto por - # Messaging messagesSendSMS=Enviar SMS messagesSentBy=Enviado por messagesNoSmsSentForCase=Ningún SMS enviado a la persona caso messagesNoPhoneNumberForCasePerson=La persona caso no tiene número telefónico -messagesSms = SMS -messagesEmail = Correo electrónico -messagesSendingSms = Enviar nuevo SMS -messagesNumberOfMissingPhoneNumbers = Número de casos seleccionados sin número telefónico\: %s -messagesCharacters = Caracteres\: %d / 160 -messagesNumberOfMessages = Nº de mensajes\: %d - +messagesSms=SMS +messagesEmail=Correo electrónico +messagesSendingSms=Enviar nuevo SMS +messagesNumberOfMissingPhoneNumbers=Número de casos seleccionados sin número telefónico\: %s +messagesCharacters=Caracteres\: %d / 160 +messagesNumberOfMessages=Nº de mensajes\: %d # Main Menu mainMenuAbout=Acerca de mainMenuCampaigns=Campañas @@ -1569,7 +1503,6 @@ mainMenuTasks=Tareas mainMenuUsers=Usuarios mainMenuAggregateReports=mSERS mainMenuShareRequests=Comparticiones - MaternalHistory.childrenNumber=Número total de hijos MaternalHistory.ageAtBirth=Edad de la madre al nacer el paciente infantil MaternalHistory.conjunctivitis=Conjuntivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Otras complicaciones MaternalHistory.otherComplicationsOnset=Fecha de Inicio de Síntomas MaternalHistory.otherComplicationsMonth=Mes de embarazo MaternalHistory.otherComplicationsDetails=Detalles de la complicación - # Outbreak outbreakAffectedDistricts=Municipios afectados outbreakNoOutbreak=Sin brote outbreakNormal=Normal outbreakOutbreak=Brote - # PathogenTest pathogenTestAdd=Añadir prueba de patógeno pathogenTestCreateNew=Crear nueva prueba de patógeno @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nuevo resultado pathogenTestNewTest=Nuevo resultado de prueba pathogenTestRemove=Eliminar esta prueba de patógeno pathogenTestSelect=Seleccionar prueba de patógeno - PathogenTest=Prueba de patógeno PathogenTests=Pruebas de patógeno PathogenTest.fourFoldIncreaseAntibodyTiter=Incremento de 4 veces del título de anticuerpos @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Vía LIMS PathogenTest.testedDiseaseVariantDetails=Detalles de variante de enfermedad PathogenTest.externalOrderId=ID de solicitud externa PathogenTest.preliminary=Preliminar - # Person personPersonsList=Lista de personas personCreateNew=Crear una nueva persona @@ -1652,7 +1581,6 @@ personLinkToContacts=Ver contactos de esta persona personsReplaceGeoCoordinates=También reemplazar las coordenadas existentes. Advertencia\: ¡Esto podría reemplazar coordenadas que fueron configuradas intencionalmente de forma diferente\! personsSetMissingGeoCoordinates=Establecer geo-coordenadas faltantes personsUpdated=Personas actualizadas - Person=Persona Person.additionalDetails=Comentario general Person.address=Dirección domiciliaria @@ -1727,33 +1655,28 @@ Person.otherSalutation=Otro encabezamiento Person.birthName=Nombre Person.birthCountry=País de origen Person.citizenship=Ciudadanía - -personContactDetailOwner = Propietario -personContactDetailOwnerName = Nombre del propietario -personContactDetailThisPerson = Esta persona -personContactDetailThirdParty = Recopilar datos de contacto de otra persona o centro - -PersonContactDetail = Datos de contacto de la persona -PersonContactDetail.person = Persona -PersonContactDetail.primaryContact = Datos de contacto primarios -PersonContactDetail.personContactDetailType = Detalles del tipo de contacto -PersonContactDetail.phoneNumberType = Tipo de número telefónico -PersonContactDetail.details = Detalles -PersonContactDetail.contactInformation = Información de contacto -PersonContactDetail.additionalInformation = Información adicional -PersonContactDetail.thirdParty = Tercero -PersonContactDetail.thirdPartyRole = Rol de tercero -PersonContactDetail.thirdPartyName = Nombre de tercero - +personContactDetailOwner=Propietario +personContactDetailOwnerName=Nombre del propietario +personContactDetailThisPerson=Esta persona +personContactDetailThirdParty=Recopilar datos de contacto de otra persona o centro +PersonContactDetail=Datos de contacto de la persona +PersonContactDetail.person=Persona +PersonContactDetail.primaryContact=Datos de contacto primarios +PersonContactDetail.personContactDetailType=Detalles del tipo de contacto +PersonContactDetail.phoneNumberType=Tipo de número telefónico +PersonContactDetail.details=Detalles +PersonContactDetail.contactInformation=Información de contacto +PersonContactDetail.additionalInformation=Información adicional +PersonContactDetail.thirdParty=Tercero +PersonContactDetail.thirdPartyRole=Rol de tercero +PersonContactDetail.thirdPartyName=Nombre de tercero pointOfEntryActivePointsOfEntry=Puntos de entrada activos pointOfEntryArchivedPointsOfEntry=Puntos de entrada archivados pointOfEntryAllPointsOfEntry=Todos los puntos de entrada - PointOfEntry.OTHER_AIRPORT=Otro aeropuerto PointOfEntry.OTHER_SEAPORT=Otro puerto marítimo PointOfEntry.OTHER_GROUND_CROSSING=Otro cruce fronterizo terrestre PointOfEntry.OTHER_POE=Otro punto de entrada - PointOfEntry=Punto de entrada PointOfEntry.pointOfEntryType=Tipo de punto de entrada PointOfEntry.active=¿Activo? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitud PointOfEntry.longitude=Longitud PointOfEntry.externalID=ID externa PointOfEntry.archived=Archivado - populationDataMaleTotal=Total masculino populationDataFemaleTotal=Total femenino - PortHealthInfo=Información de salud portuaria PortHealthInfo.airlineName=Nombre de la aerolínea PortHealthInfo.flightNumber=Número de vuelo @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Especificar el tipo de transporte PortHealthInfo.departureLocation=Punto de partida del viaje PortHealthInfo.finalDestination=Destino final PortHealthInfo.details=Detalles del punto de entrada - # Prescription prescriptionNewPrescription=Nueva prescripción - Prescription=Prescripción Prescription.additionalNotes=Notas adicionales Prescription.dose=Dosis @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Tipo de prescripción Prescription.route=Vía Prescription.routeDetails=Especificación de la vía Prescription.typeOfDrug=Tipo de medicamento - PrescriptionExport.caseUuid=ID del caso PrescriptionExport.caseName=Nombre del caso - # Continent continentActiveContinents=Continentes activos continentArchivedContinents=Continentes archivados continentAllContinents=Todos los continentes - Continent=Continente Continent.archived=Archivado Continent.externalId=ID externo Continent.defaultName=Nombre por defecto Continent.displayName=Nombre - # Subcontinent subcontinentActiveSubcontinents=Subcontinentes activos subcontinentArchivedSubcontinents=Subcontinentes archivados subcontinentAllSubcontinents=Todos los subcontinentes - Subcontinent=Subcontinente Subcontinent.archived=Archivado Subcontinent.externalId=ID externo Subcontinent.defaultName=Nombre por defecto Subcontinent.displayName=Nombre Subcontinent.continent=Nombre de continente - # Country countryActiveCountries=Países activos countryArchivedCountries=Países archivados countryAllCountries=Todos los países - Country=País Country.archived=Archivado Country.externalId=ID externa @@ -1848,12 +1760,10 @@ Country.displayName=Nombre Country.isoCode=Código ISO Country.unoCode=Código UNO Country.subcontinent=Subcontinente - # Region regionActiveRegions=Provincias activas regionArchivedRegions=Provincias archivadas regionAllRegions=Todas las provincias - Region=Provincia Region.archived=Archivado Region.epidCode=Código epid @@ -1861,7 +1771,6 @@ Region.growthRate=Tasa de crecimiento Region.population=Población Region.externalID=ID externa Region.country=País - # Sample sampleCreateNew=Crear nueva muestra sampleIncludeTestOnCreation=Crear resultado de prueba para esta muestra ahora @@ -1888,7 +1797,6 @@ sampleActiveSamples=Muestras activas sampleArchivedSamples=Muestras archivadas sampleAllSamples=Todas las muestras sampleAssociationType=Tipo de muestra - Sample=Muestra Sample.additionalTestingRequested=¿Solicitar la realización de pruebas adicionales? Sample.additionalTestingStatus=Estado de las pruebas adicionales @@ -1941,23 +1849,22 @@ Sample.uuid=Id de la muestra Sample.samplePurpose=Propósito de la muestra Sample.samplingReason=Motivo de muestreo/pruebas Sample.samplingReasonDetails=Detalles del motivo de muestreo - SampleExport.additionalTestingRequested=¿Se solicitaron pruebas adicionales? SampleExport.personAddressCaption=Dirección de caso/contacto/participante del evento SampleExport.personAge=Edad de caso/contacto/participante del evento SampleExport.caseDistrict=Municipio del caso SampleExport.caseCommunity=Área de salud del caso SampleExport.caseFacility=Instalación del caso -SampleExport.contactRegion = Provincia del contacto -SampleExport.contactDistrict = Municipio del contacto -SampleExport.contactCommunity = Área de salud del contacto +SampleExport.contactRegion=Provincia del contacto +SampleExport.contactDistrict=Municipio del contacto +SampleExport.contactCommunity=Área de salud del contacto SampleExport.caseOutcome=Resultado del caso SampleExport.caseRegion=Provincia del caso SampleExport.caseReportDate=Fecha de informe del caso SampleExport.personSex=Sexo de caso/contacto/participante del evento SampleExport.caseUuid=UUID del caso -SampleExport.contactUuid = UUID del contacto -SampleExport.contactReportDate = Fecha de informe del contacto +SampleExport.contactUuid=UUID del contacto +SampleExport.contactReportDate=Fecha de informe del contacto SampleExport.id=Número de serie de la muestra SampleExport.sampleReportDate=Fecha de informe de la muestra SampleExport.noTestPossibleReason=Posible motivo para la falta de la prueba @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Fecha y hora de la última prueba adicional SampleExport.totalBilirubin=Bilirrubina total de la última prueba adicional SampleExport.urea=Urea de la última prueba adicional SampleExport.wbcCount=Número de leucocitos de la última prueba adicional - # Immunization Immunization=Inmunización Immunization.reportDate=Fecha de informe Immunization.externalId=ID externo Immunization.country=País de inmunización -Immunization.disease = Enfermedad -Immunization.diseaseDetails = Detalles de la enfermedad +Immunization.disease=Enfermedad +Immunization.diseaseDetails=Detalles de la enfermedad Immunization.healthFacility=Centro de salud Immunization.healthFacilityDetails=Nombre & descripción del centro de salud -Immunization.meansOfImmunization = Medios de inmunización -Immunization.meansOfImmunizationDetails = Detalles de los medios de inmunización -Immunization.overwriteImmunizationManagementStatus = Sobrescribir el estado de gestión de inmunización -Immunization.immunizationManagementStatus = Estado de gestión -Immunization.immunizationStatus = Estado de inmunización -Immunization.startDate = Fecha de inicio -Immunization.endDate = Fecha final -Immunization.validFrom = Válido desde -Immunization.validUntil = Válido hasta -Immunization.numberOfDoses = Número de dosis -Immunization.numberOfDosesDetails = Detalles de número de dosis -Immunization.vaccinations = Vacunaciones -Immunization.uuid = Id de inmunización -Immunization.personUuid = Id de persona -Immunization.personFirstName = Nombre -Immunization.personLastName = Apellidos -Immunization.ageAndBirthDate = Edad y fecha de nacimiento -Immunization.recoveryDate = Fecha de recuperación -Immunization.positiveTestResultDate = Fecha del primer resultado de prueba positivo -Immunization.previousInfection = Infección anterior con esta enfermedad -Immunization.lastInfectionDate = Fecha de la última infección -Immunization.lastVaccineType = Tipo de la última vacuna -Immunization.firstVaccinationDate = Fecha de la primera vacunación -Immunization.lastVaccinationDate = Fecha de la última vacunación -Immunization.additionalDetails = Detalles adicionales -Immunization.responsibleRegion = Provincia responsable -Immunization.responsibleDistrict = Municipio responsable -Immunization.responsibleCommunity = Área de salud responsable -Immunization.immunizationPeriod = Período de inmunización -immunizationImmunizationsList = Lista de inmunizaciones +Immunization.meansOfImmunization=Medios de inmunización +Immunization.meansOfImmunizationDetails=Detalles de los medios de inmunización +Immunization.overwriteImmunizationManagementStatus=Sobrescribir el estado de gestión de inmunización +Immunization.immunizationManagementStatus=Estado de gestión +Immunization.immunizationStatus=Estado de inmunización +Immunization.startDate=Fecha de inicio +Immunization.endDate=Fecha final +Immunization.validFrom=Válido desde +Immunization.validUntil=Válido hasta +Immunization.numberOfDoses=Número de dosis +Immunization.numberOfDosesDetails=Detalles de número de dosis +Immunization.vaccinations=Vacunaciones +Immunization.uuid=Id de inmunización +Immunization.personUuid=Id de persona +Immunization.personFirstName=Nombre +Immunization.personLastName=Apellidos +Immunization.ageAndBirthDate=Edad y fecha de nacimiento +Immunization.recoveryDate=Fecha de recuperación +Immunization.positiveTestResultDate=Fecha del primer resultado de prueba positivo +Immunization.previousInfection=Infección anterior con esta enfermedad +Immunization.lastInfectionDate=Fecha de la última infección +Immunization.lastVaccineType=Tipo de la última vacuna +Immunization.firstVaccinationDate=Fecha de la primera vacunación +Immunization.lastVaccinationDate=Fecha de la última vacunación +Immunization.additionalDetails=Detalles adicionales +Immunization.responsibleRegion=Provincia responsable +Immunization.responsibleDistrict=Municipio responsable +Immunization.responsibleCommunity=Área de salud responsable +Immunization.immunizationPeriod=Período de inmunización +immunizationImmunizationsList=Lista de inmunizaciones linkImmunizationToCaseButton=Vincular caso -openLinkedCaseToImmunizationButton = Abrir caso -immunizationNewImmunization = Nueva inmunización -immunizationKeepImmunization = Conservar la información existente y descartar la nueva inmunización -immunizationOnlyPersonsWithOverdueImmunization = Mostrar sólo personas con inmunización atrasada -immunizationOverwriteImmunization = Sobrescribir la inmunización existente con estos datos -immunizationCreateNewImmunization = Crear la nueva inmunización de todos modos -immunizationNoImmunizationsForPerson = No hay inmunizaciones para esta persona - +openLinkedCaseToImmunizationButton=Abrir caso +immunizationNewImmunization=Nueva inmunización +immunizationKeepImmunization=Conservar la información existente y descartar la nueva inmunización +immunizationOnlyPersonsWithOverdueImmunization=Mostrar sólo personas con inmunización atrasada +immunizationOverwriteImmunization=Sobrescribir la inmunización existente con estos datos +immunizationCreateNewImmunization=Crear la nueva inmunización de todos modos +immunizationNoImmunizationsForPerson=No hay inmunizaciones para esta persona # Statistics statisticsAddFilter=Añadir filtro statisticsAttribute=Atributo @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Tipo statisticsIncidenceDivisor=Divisor de incidencia statisticsDataDisplayed=Datos mostrados statisticsOpenSormasStats=Abrir Sormas-Stats - # Symptoms symptomsLesionsLocations=Localización de las lesiones symptomsMaxTemperature=Temperatura corporal máxima en °C symptomsSetClearedToNo=Marcar limpios como No symptomsSetClearedToUnknown=Marcar limpios como Desconocido - Symptoms=Síntomas Symptoms.abdominalPain=Dolor abdominal Symptoms.alteredConsciousness=Nivel de conciencia alterado @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitaciones Symptoms.dizzinessStandingUp=Mareo (al ponerse de pie desde una posición de sentado o acostado) Symptoms.highOrLowBloodPressure=Presión sanguínea demasiado alta o demasiado baja (medida) Symptoms.urinaryRetention=Retención urinaria - # Task taskMyTasks=Mis tareas taskNewTask=Nueva tarea @@ -2284,7 +2186,6 @@ taskOfficerTasks=Tareas de funcionario taskActiveTasks=Tareas activas taskArchivedTasks=Tareas archivadas taskAllTasks=Todas las tareas - Task=Tarea Task.assigneeReply=Comentarios sobre la ejecución Task.assigneeUser=Asignada a @@ -2306,7 +2207,6 @@ Task.taskType=Tipo de tarea Task.taskAssignee=Encargado de tarea Task.taskPriority=Prioridad de tarea Task.travelEntry=Entrada de viaje - # TestReport TestReport=Informe de prueba TestReport.testDateTime=Fecha y hora del resultado @@ -2316,7 +2216,6 @@ TestReport.testLabName=Nombre del laboratorio TestReport.testLabPostalCode=Código postal del laboratorio TestReport.testResult=Resultado de prueba TestReport.testType=Tipo de prueba - # TravelEntry travelEntryCreateCase=Crear caso travelEntryOnlyRecoveredEntries=Sólo entradas recuperadas @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=¿Orden de cuarentena oficial enviada? TravelEntry.quarantineOfficialOrderSentDate=Fecha de envío de la orden de cuarentena oficial TravelEntry.dateOfArrival=Fecha de llegada travelEntryTravelEntriesList=Lista de entradas de viaje - # Treatment treatmentCreateTreatment=Crear tratamiento treatmentNewTreatment=Nuevo tratamiento treatmentOpenPrescription=Abrir prescripción - Treatment=Tratamiento Treatment.additionalNotes=Notas adicionales Treatment.dose=Dosis @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Detalles del tratamiento Treatment.treatmentType=Tipo de tratamiento Treatment.typeOfDrug=Tipo de medicamento Treatment.treatmentRoute=Ruta del tratamiento - TreatmentExport.caseUuid=ID del caso TreatmentExport.caseName=Nombre del caso - # User userNewUser=Nuevo usuario userResetPassword=Crear nueva contraseña @@ -2402,7 +2297,6 @@ syncUsers=Sincronizar usuarios syncErrors=%d error(es) syncSuccessful=%d sincronizados syncProcessed=%d/%d procesados - User=Usuario User.active=¿Activo? User.associatedOfficer=Funcionario asociado @@ -2417,12 +2311,10 @@ User.userName=Nombre de usuario User.userRoles=Roles de usuario User.address=Dirección User.uuid=UUID - # Vaccination -vaccinationNewVaccination = Nueva vacunación -vaccinationNoVaccinationsForPerson = No hay vacunaciones para esta persona -vaccinationNoVaccinationsForPersonAndDisease = No hay vacunaciones para esta persona y enfermedad - +vaccinationNewVaccination=Nueva vacunación +vaccinationNoVaccinationsForPerson=No hay vacunaciones para esta persona +vaccinationNoVaccinationsForPersonAndDisease=No hay vacunaciones para esta persona y enfermedad Vaccination=Vacunación Vaccination.uuid=ID de vacunación Vaccination.reportDate=Fecha del informe @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=Código ATC Vaccination.vaccinationInfoSource=Fuente de información de vacunación Vaccination.pregnant=Embarazada Vaccination.trimester=Trimestre - # Views View.actions=Directorio de acciones View.groups=Directorio de grupos - View.aggregatereports=Informes agregados (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Directorio de campañas View.campaign.campaigns.short=Campañas View.campaign.campaigndata=Datos de campaña @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Formulario de datos de campaña View.campaign.campaigndata.dataform.short=Formulario de datos View.campaign.campaignstatistics=Estadísticas de campaña View.campaign.campaignstatistics.short=Estadísticas de campaña - View.cases=Directorio de casos View.cases.merge=Combinar casos duplicados View.cases.archive=Archivo de casos @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Curso clínico View.cases.maternalhistory=Historial materno View.cases.porthealthinfo=Información de salud portuaria View.cases.visits=Visitas de casos - View.persons=Directorio de personas View.persons.data=Información de la persona - View.configuration.communities=Configuración de áreas de salud View.configuration.communities.short=Áreas de salud View.configuration.districts=Configuración de municipios @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Datos de población View.configuration.populationdata.short=Población View.configuration.linelisting=Configuración del listado de líneas View.configuration.linelisting.short=Listado de líneas - View.contacts=Directorio de contactos View.contacts.archive=Archivo de contactos View.contacts.epidata=Datos epidemiológicos de contacto @@ -2520,11 +2405,9 @@ View.contacts.merge=Combinar contactos duplicados View.contacts.person=Persona del contacto View.contacts.sub= View.contacts.visits=Visitas del contacto - View.dashboard.contacts=Tablero de control de contactos View.dashboard.surveillance=Tablero de control de vigilancia View.dashboard.campaigns=Tablero de control de campañas - View.events=Directorio de eventos View.events.archive=Archivo de eventos View.events.data=Información del evento @@ -2532,36 +2415,25 @@ View.events.eventactions=Acciones del evento View.events.eventparticipants=Participantes del evento View.events.sub= View.events.eventparticipants.data=Información de participante de evento - View.samples.labMessages=Directorio de mensajes de laboratorio - View.reports=Informes semanales View.reports.sub= - View.samples=Directorio de muestras View.samples.archive=Archivo de muestras View.samples.data=Información de la muestra View.samples.sub= - View.travelEntries=Directorio de entradas de viaje - View.immunizations=Directorio de inmunización - View.statistics=Estadísticas View.statistics.database-export=Exportar base de datos - View.tasks=Gestión de tareas View.tasks.archive=Archivo de tareas View.tasks.sub= - View.users=Gestión de usuarios View.users.sub= - View.shareRequests=Solicitudes de compartir - # Visit visitNewVisit=Nueva visita - Visit=Visita Visit.person=Persona visitada Visit.symptoms=Síntomas @@ -2573,24 +2445,19 @@ Visit.visitUser=Funcionario visitante Visit.disease=Enfermedad Visit.reportLat=Latitud del informe Visit.reportLon=Longitud del informe - # WeeklyReport weeklyReportNoReport=Informe faltante weeklyReportOfficerInformants=Informantes weeklyReportsInDistrict=Informes semanales en %s weeklyReportRegionOfficers=Funcionarios weeklyReportRegionInformants=Informantes - WeeklyReport.epiWeek=Semana Epi WeeklyReport.year=Año - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Casos reportados - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Envío de informe del informante WeeklyReportInformantSummary.totalCaseCount=Casos reportados por informante - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Número de informantes WeeklyReportOfficerSummary.informantReports=Número de informes de informantes @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Número de informes cero de info WeeklyReportOfficerSummary.officer=Funcionario WeeklyReportOfficerSummary.officerReportDate=Envío de informe de funcionario WeeklyReportOfficerSummary.totalCaseCount=Casos reportados por funcionario - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Número de informantes WeeklyReportRegionSummary.informantReports=Número de informes de informantes @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Número de funcionarios WeeklyReportRegionSummary.officerReports=Número de informes de funcionarios WeeklyReportRegionSummary.officerReportPercentage=Porcentaje WeeklyReportRegionSummary.officerZeroReports=Número de informes cero de funcionarios - # SORMAS to SORMAS SormasToSormasOptions.organization=Organización SormasToSormasOptions.withAssociatedContacts=Compartir contactos asociados @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Compartido por sormasToSormasSharedDate=En sormasToSormasSentFrom=Enviado desde sormasToSormasSendLabMessage=Enviar a otra organización -sormasToSormasOriginInfo = Enviado desde +sormasToSormasOriginInfo=Enviado desde BAGExport=Exportar BAG - # Survnet Gateway ExternalSurveillanceToolGateway.title=Herramienta de reporte ExternalSurveillanceToolGateway.send=Enviar a la herramienta de reporte @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirmar envío ExternalSurveillanceToolGateway.notTransferred=Aún no se ha enviado a la herramienta de reporte ExternalSurveillanceToolGateway.confirmDelete=Confirmar eliminación ExternalSurveillanceToolGateway.excludeAndSend=Enviar %d de %d - patientDiaryRegistrationError=No se pudo registrar a la persona en el diario de pacientes. patientDiaryCancelError=No se pudo cancelar el seguimiento de diario externo patientDiaryPersonNotExportable=No se puede exportar la persona al diario de pacientes. La persona necesita una fecha de nacimiento válida y un número telefónico o dirección de correo electrónico válidos. - showPlacesOnMap=Mostrar - changeUserEmail=Cambiar correo electrónico de usuario - SurveillanceReport=Informe SurveillanceReport.reportingType=Tipo de reporte SurveillanceReport.creatingUser=Creando usuario @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Detalles del centro SurveillanceReport.notificationDetails=Detalles surveillanceReportNewReport=Nuevo informe surveillanceReportNoReportsForCase=No hay informes para este caso - cancelExternalFollowUpButton=Cancelar seguimiento externo createSymptomJournalAccountButton=Crear cuenta PIA registerInPatientDiaryButton=Registrarse en CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Abrir en PIA openInPatientDiaryButton=Abrir en CLIMEDO cancelExternalFollowUpPopupTitle=Cancelar seguimiento externo - # User role/right exportUserRoles=Exportar roles de usuario userRights=Derechos de usuario userRight=Derecho de usuario +UserRight.caption=Leyenda UserRight.description=Descripción UserRight.jurisdiction=Jurisdicción UserRight.jurisdictionOfRole=Jurisdicción del rol - SormasToSormasShareRequest.uuid=ID de solicitud SormasToSormasShareRequest.creationDate=Fecha de solicitud SormasToSormasShareRequest.dataType=Tipo de datos SormasToSormasShareRequest.status=Estado -SormasToSormasShareRequest.cases = Casos -SormasToSormasShareRequest.contacts = Contactos -SormasToSormasShareRequest.events = Eventos -SormasToSormasShareRequest.organizationName = Organización del remitente -SormasToSormasShareRequest.senderName = Nombre del remitente -SormasToSormasShareRequest.ownershipHandedOver = Responsabilidad transferida -SormasToSormasShareRequest.comment = Comentario -SormasToSormasShareRequest.responseComment = Comentario de respuesta - -SormasToSormasPerson.personName = Nombre de la persona -SormasToSormasPerson.sex = Sexo -SormasToSormasPerson.birthdDate = Fecha de nacimiento -SormasToSormasPerson.address = Dirección - -TaskExport.personFirstName = Nombre de la persona -TaskExport.personLastName = Apellidos de la persona -TaskExport.personSex = Sexo de la persona -TaskExport.personBirthDate = Fecha de nacimiento de la persona -TaskExport.personAddressRegion = Provincia de la persona -TaskExport.personAddressDistrict = Municipio de la persona -TaskExport.personAddressCommunity = Área de salud de la persona -TaskExport.personAddressFacility = Centro de salud de la persona -TaskExport.personAddressFacilityDetail = Detalles del centro de salud de la persona -TaskExport.personAddressCity = Ciudad de la persona -TaskExport.personAddressStreet = Calle de la persona -TaskExport.personAddressHouseNumber = Número de domicilio de la persona -TaskExport.personAddressPostalCode = Código postal de la persona -TaskExport.personPhone = Teléfono de la persona -TaskExport.personPhoneOwner = Propietario del teléfono de la persona -TaskExport.personEmailAddress = Dirección de correo electrónico de la persona +SormasToSormasShareRequest.cases=Casos +SormasToSormasShareRequest.contacts=Contactos +SormasToSormasShareRequest.events=Eventos +SormasToSormasShareRequest.organizationName=Organización del remitente +SormasToSormasShareRequest.senderName=Nombre del remitente +SormasToSormasShareRequest.ownershipHandedOver=Responsabilidad transferida +SormasToSormasShareRequest.comment=Comentario +SormasToSormasShareRequest.responseComment=Comentario de respuesta +SormasToSormasPerson.personName=Nombre de la persona +SormasToSormasPerson.sex=Sexo +SormasToSormasPerson.birthdDate=Fecha de nacimiento +SormasToSormasPerson.address=Dirección +TaskExport.personFirstName=Nombre de la persona +TaskExport.personLastName=Apellidos de la persona +TaskExport.personSex=Sexo de la persona +TaskExport.personBirthDate=Fecha de nacimiento de la persona +TaskExport.personAddressRegion=Provincia de la persona +TaskExport.personAddressDistrict=Municipio de la persona +TaskExport.personAddressCommunity=Área de salud de la persona +TaskExport.personAddressFacility=Centro de salud de la persona +TaskExport.personAddressFacilityDetail=Detalles del centro de salud de la persona +TaskExport.personAddressCity=Ciudad de la persona +TaskExport.personAddressStreet=Calle de la persona +TaskExport.personAddressHouseNumber=Número de domicilio de la persona +TaskExport.personAddressPostalCode=Código postal de la persona +TaskExport.personPhone=Teléfono de la persona +TaskExport.personPhoneOwner=Propietario del teléfono de la persona +TaskExport.personEmailAddress=Dirección de correo electrónico de la persona TaskExport.personOtherContactDetails = Datos de contacto de la persona diff --git a/sormas-api/src/main/resources/captions_es-EC.properties b/sormas-api/src/main/resources/captions_es-EC.properties index 511f7889691..fda42a04a37 100644 --- a/sormas-api/src/main/resources/captions_es-EC.properties +++ b/sormas-api/src/main/resources/captions_es-EC.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Todo area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Diccionario de datos (XLSX) aboutSormasWebsite=Sitio web oficial de SORMAS aboutTechnicalManual=Manual técnico (PDF) aboutWhatsNew=¿Qué hay de nuevo? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Aplicar filtro de fecha actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Asignar nuevo número de epidemia actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancelar actionClear=Limpiar actionClearAll=Limpiar todo @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=Nuevo resultado de prueba - AdditionalTest=Prueba adicional AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Gasometría arterial venosa @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Fecha/hora del resultado AdditionalTest.totalBilirubin=Total bilirrubina (umol/L) AdditionalTest.urea=Úrea (mmol/L) AdditionalTest.wbcCount=Conteo WBC (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Semana anterior @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Confirmaciones de laboratorio AggregateReport.deaths=Fallecidos AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Punto de arribo - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Acciones masivas -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancelar seguimiento bulkCaseClassification=Cambiar clasificación de caso bulkCaseOutcome=Cambiar resultado del caso @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Cambiar Oficial de vigilancia bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Lista de casos caseInfrastructureDataChanged=Los datos de infraestructura han cambiado @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=Nuevo caso casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Casos archivados caseAllCases=Todos los casos caseTransferCase=Transferir caso caseTransferCases=Casos transferidos -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Eligir un caso existente caseCreateCase=Crear un nuevo caso caseDefaultView=Vista por defecto @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Buscar caso específico caseSearchCase=Buscar caso -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Caso CaseData.additionalDetails=Comentario General CaseData.caseClassification=Clasificación de casos @@ -445,7 +428,7 @@ CaseData.reportLat=Latitud GPS del informe CaseData.reportLon=Longitud GPS del informe CaseData.reportLatLonAccuracy=Precisión GPS reportada en metros CaseData.sequelae=Secuela -CaseData.sequelaeDetails=Describir secuela +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=¿Recibió vacuna contra la viruela anteriormente? CaseData.smallpoxVaccinationScar=¿Tiene cicatriz de vacuna contra la viruela? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Dirección CaseExport.addressRegion=Región de la dirección @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalización CaseHospitalization.admissionDate=Fecha de visita o admisión @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Inicio de la estancia CaseHospitalization.intensiveCareUnitEnd=Fin de la estancia CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Descripción del error caseImportMergeCase=¿Sobrescribir el caso existente con los cambios del caso importado? - # CasePreviousHospitalization CasePreviousHospitalization=Hospitalización previa CasePreviousHospitalization.admissionAndDischargeDate=Fecha de admisión & descargo -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Fecha de admisión CasePreviousHospitalization.description=Descripción CasePreviousHospitalization.dischargeDate=Fecha de descargo o transferencia CasePreviousHospitalization.editColumn=Editar +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Aislamiento @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=Nueva evaluación clínica - ClinicalVisit=Evaluación clínica ClinicalVisit.bloodPressure=Presión sanguínea ClinicalVisit.heartRate=Ritmo cardíaco @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperatura ClinicalVisit.visitDateTime=Fecha y hora de visita ClinicalVisit.visitingPerson=Médico tratante ClinicalVisit.visitRemarks=Observaciones clínicas - ClinicalVisitExport.caseUuid=Id del Caso ClinicalVisitExport.caseName=Nombre del caso - columnAdditionalTests=Pruebas adicionales columnDiseaseShort=Enfermedad columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Tareas pendientes columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=Id Externo - communityActiveCommunities=Comunidades activas communityArchivedCommunities=Comunidades archivadas communityAllCommunities=Todas las comunidades - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Brotes Configuration.PointsOfEntry=Punto de arribo Configuration.LineListing=Línea de escucha - # Contact contactCancelFollowUp=Cancelar seguimiento contactCaseContacts=Contactos del caso @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Día contactQuarantineNotOrdered=No hay cuarentena ordenada -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contacto Contact.additionalDetails=Comentario General Contact.caseClassification=Clasificación de casos de origen @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Clasificación de contacto Contact.contactOfficer=Oficial de contacto responsable Contact.contactOfficerUuid=Oficial de contacto responsable -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Estado del contacto @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Dirección ContactExport.addressDistrict=Distrito de la dirección @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Vivo dashboardApplyCustomFilter=Aplicar filtro personalizado @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Región por defecto defaultDistrict=Distrito por defecto defaultCommunity=Comunidad por defecto defaultFacility=Default Facility defaultLaboratory=Laboratorio por defecto defaultPointOfEntry=Punto de arribo por defecto - devModeCaseCount=Número de casos generados devModeCaseDisease=Enfermedad de los casos devModeCaseDistrict=Distrito de los casos @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Nuevos casos DiseaseBurden.caseDeathCount=Muertes DiseaseBurden.casesDifference=Dinámica @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Número de eventos DiseaseBurden.outbreakDistrictCount=Brote distrital DiseaseBurden.previousCaseCount=Casos previos - # District districtActiveDistricts=Distritos activos districtArchivedDistricts=Distritos archivados districtAllDistricts=Todos los distritos - District=District District.archived=Archived District.epidCode=Código epidemiológico District.growthRate=Tasa de crecimiento District.population=Población District.externalID=Id Externo - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Datos epidemiológicos EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Eventos activos eventArchivedEvents=Eventos archivados @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Evento Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Evento @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Exportar exportBasic=Exportación básica @@ -1285,18 +1234,15 @@ exportCaseCustom=Exportar casos personalizados exportNewExportConfiguration=Configuración nueva exportación exportEditExportConfiguration=Editar configuración exportación exportConfigurationData=Configuration data - ExportConfiguration.NAME=Nombre de la configuración ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Hogar u otro lugar Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=Distrito FeatureConfiguration.enabled=¿Línea de escucha habilitada? FeatureConfiguration.endDate=Fecha de fin - # Formats formatNumberOfVisitsFormat=%d (%d perdidos) formatNumberOfVisitsLongFormat=%d visitas (%d perdidas) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Condiciones de salud HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Importación detallada importDownloadCaseImportTemplate=Descargar plantilla de importación de caso @@ -1440,7 +1378,6 @@ importSkips=%d Omitidos importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Añadir línea @@ -1502,7 +1437,6 @@ lineListingEnableAll=Habilitar todo lineListingDisableAllShort=Deshabilitar todo lineListingEndDate=Fecha de fin lineListingSetEndDateForAll=Enviar fecha de fin para todo - # Location Location=Ubicación Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=Latitud y Longitud GPS Location.latLonAccuracy=Precisión GPS en metros Location.longitude=Longitud GPS Location.postalCode=Código postal +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Ingresar Login.login=Ingreso Login.password=Contraseña Login.username=Usuario - #LoginSidebar LoginSidebar.diseaseDetection=Detección de enfermedad LoginSidebar.diseasePrevention=Prevención de enfermedad LoginSidebar.outbreakResponse=Respuesta al brote LoginSidebar.poweredBy=Provisto por - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=Acerca de mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tareas mainMenuUsers=Usuarios mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Número total de niños MaternalHistory.ageAtBirth=Edad de la madre al nacimiento del paciente infantil MaternalHistory.conjunctivitis=Conjuntivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Otras complicaciones MaternalHistory.otherComplicationsOnset=Fecha de inicio MaternalHistory.otherComplicationsMonth=Mes de embarazo MaternalHistory.otherComplicationsDetails=Detalles de la complicación - # Outbreak outbreakAffectedDistricts=Distritos afectados outbreakNoOutbreak=No brote outbreakNormal=Normal outbreakOutbreak=Brote - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nuevo resultado pathogenTestNewTest=Nuevo resultado de prueba pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Prueba de patógeno PathogenTests=Pruebas de patógeno PathogenTest.fourFoldIncreaseAntibodyTiter=Incremento de 4 veces el número de anticuerpos @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Crear nueva persona @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Persona Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Puntos de ingreso activos pointOfEntryArchivedPointsOfEntry=Puntos de ingreso archivados pointOfEntryAllPointsOfEntry=Todos los puntos de ingreso - PointOfEntry.OTHER_AIRPORT=Otros aeropuertos PointOfEntry.OTHER_SEAPORT=Otros puertos PointOfEntry.OTHER_GROUND_CROSSING=Otros cruces fronterizos PointOfEntry.OTHER_POE=Otros puntos de entrada - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Tipo de punto de arribo PointOfEntry.active=¿Activo? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitud PointOfEntry.longitude=Longitud PointOfEntry.externalID=Id Externo PointOfEntry.archived=Archived - populationDataMaleTotal=Total masculino populationDataFemaleTotal=Total femenino - PortHealthInfo=Información sanitaria de puerto PortHealthInfo.airlineName=Nombre aerolínea PortHealthInfo.flightNumber=Número de vuelo @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Especificar el tipo de transporte PortHealthInfo.departureLocation=Ubicación inicial del viaje PortHealthInfo.finalDestination=Destino final PortHealthInfo.details=Detalles del punto de ingreso - # Prescription prescriptionNewPrescription=Nueva prescripción - Prescription=Prescription Prescription.additionalNotes=Notas adicionales Prescription.dose=Dosis @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Tipo de prescripción Prescription.route=Ruta Prescription.routeDetails=Especificación de ruta Prescription.typeOfDrug=Tipo de droga - PrescriptionExport.caseUuid=Id de caso PrescriptionExport.caseName=Nombre de caso - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Regiones activas regionArchivedRegions=Regiones archivadas regionAllRegions=Todas las regiones - Region=Region Region.archived=Archived Region.epidCode=Código epidemiológico @@ -1861,7 +1771,6 @@ Region.growthRate=Tasa de crecimiento Region.population=Población Region.externalID=Id externo Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Muestras activas sampleArchivedSamples=Muestras archivadas sampleAllSamples=Todas las muestras sampleAssociationType=Sample type - Sample=Muestra Sample.additionalTestingRequested=¿Solicitar pruebas adicionales para realizar? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Id de muestra Sample.samplePurpose=Propósito de la muestra Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=¿Se han solicitado pruebas adicionales? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=Distrito del caso SampleExport.caseCommunity=Comunidad del caso SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Resultado del caso SampleExport.caseRegion=Región del caso SampleExport.caseReportDate=Fecha informe de caso SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=UUID del caso -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=SN de muestra SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No hay posible motivo de prueba @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Fecha/hora de la última prueba adicional SampleExport.totalBilirubin=Bilirrubina total de la última prueba adicional SampleExport.urea=Úrea de la última prueba adicional SampleExport.wbcCount=Conteo WBC de la última prueba adicional - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Añadir filtro statisticsAttribute=Atributo @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Tipo statisticsIncidenceDivisor=Divisor de incidencia statisticsDataDisplayed=Datos mostrados statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Ubicación de las lesiones symptomsMaxTemperature=Temperatura corporal máxima en °C symptomsSetClearedToNo=Establecer borrado a No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Síntomas Symptoms.abdominalPain=Dolor abdominal Symptoms.alteredConsciousness=Nivel de conciencia alterado @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=Mis tareas taskNewTask=Nueva tarea @@ -2284,7 +2186,6 @@ taskOfficerTasks=Tareas del Oficial taskActiveTasks=Tareas activas taskArchivedTasks=Tareas archivadas taskAllTasks=Todas las tareas - Task=Tareas Task.assigneeReply=Comentarios en ejecución Task.assigneeUser=Asignado a @@ -2306,7 +2207,6 @@ Task.taskType=Tipo de tarea Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Crear tratamiento treatmentNewTreatment=Nuevo tratamiento treatmentOpenPrescription=Prescripción abierta - Treatment=Treatment Treatment.additionalNotes=Notas adicionales Treatment.dose=Dosis @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Detalles del tratamiento Treatment.treatmentType=Tipo de tratamiento Treatment.typeOfDrug=Tipo de droga Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Id de caso TreatmentExport.caseName=Nombre del caso - # User userNewUser=Nuevo usuario userResetPassword=Crear nueva contraseña @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=Usuario User.active=¿Activo? User.associatedOfficer=Oficial asociado @@ -2417,12 +2311,10 @@ User.userName=Nombre de usuario User.userRoles=Roles de usuario User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Informes agregados (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Directorio de casos View.cases.merge=Unir casos duplicados View.cases.archive=Caso archivado @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Curso clínico View.cases.maternalhistory=Historial materno View.cases.porthealthinfo=Información sanitaria del puerto View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Configuración de comunidades View.configuration.communities.short=Comunidades View.configuration.districts=Configuración de distritos @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Datos poblacionales View.configuration.populationdata.short=Población View.configuration.linelisting=Configuración línea de listado View.configuration.linelisting.short=Línea de listado - View.contacts=Directorio de contactos View.contacts.archive=Archivo de contactos View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Persona de contacto View.contacts.sub= View.contacts.visits=Visitas al contacto - View.dashboard.contacts=Tablero de control de contactos View.dashboard.surveillance=Tablero de control de vigilancia View.dashboard.campaigns=Campaigns Dashboard - View.events=Directorio de eventos View.events.archive=Archivo de eventos View.events.data=Información de evento @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Participantes de evento View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Informes semanales View.reports.sub= - View.samples=Directorio de muestras View.samples.archive=Archivo de muestras View.samples.data=Información de muestra View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Estadísticas View.statistics.database-export=Exportar base de datos - View.tasks=Gestión de tareas View.tasks.archive=Tarea archivada View.tasks.sub= - View.users=Gestión de usuarios View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=Nueva visita - Visit=Visita Visit.person=Persona visitada Visit.symptoms=Síntomas @@ -2573,24 +2445,19 @@ Visit.visitUser=Oficial de visitas Visit.disease=Enfermedad Visit.reportLat=Latitud del informe Visit.reportLon=Longitud del informe - # WeeklyReport weeklyReportNoReport=Informe perdido weeklyReportOfficerInformants=Informantes weeklyReportsInDistrict=Informes semanales en %s weeklyReportRegionOfficers=Oficiales weeklyReportRegionInformants=Informantes - WeeklyReport.epiWeek=Semana EPI WeeklyReport.year=Año - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Casos informados - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Presentación de informe de informante WeeklyReportInformantSummary.totalCaseCount=Casos reportados por informante - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Número de informantes WeeklyReportOfficerSummary.informantReports=Número de informes de informantes @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Número de informantes sin infor WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Presentación de informe de Oficial WeeklyReportOfficerSummary.totalCaseCount=Casos reportados por Oficial - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Número de informantes WeeklyReportRegionSummary.informantReports=Número de informes del informante @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Número de Oficiales WeeklyReportRegionSummary.officerReports=Número de informes oficiales WeeklyReportRegionSummary.officerReportPercentage=Porcentaje WeeklyReportRegionSummary.officerZeroReports=Número de Oficiales sin informes - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_es-ES.properties b/sormas-api/src/main/resources/captions_es-ES.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_es-ES.properties +++ b/sormas-api/src/main/resources/captions_es-ES.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_fa-AF.properties b/sormas-api/src/main/resources/captions_fa-AF.properties index 026780f706b..5be4f0417fa 100644 --- a/sormas-api/src/main/resources/captions_fa-AF.properties +++ b/sormas-api/src/main/resources/captions_fa-AF.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=همه area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=در باره aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=ذخیره ارقام aboutSormasWebsite=ویبسایت SORMAS aboutTechnicalManual=رهنمود تخنیکی aboutWhatsNew=چیزی جدید است؟ -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=عمل کرد جدید actionNoActions=عمل کرد ها نیستند actionCreatingLabel=لیبل ایجاد کردند actionLastModifiedByLabel=تغیرات اخیر به اساس لیبل actionStatusChangeDate=تاریخ تغیر حالت - Action=عمل کرد Action.title=عنوان Action.description=وضاحت @@ -100,14 +96,13 @@ Action.actionContext=عمل کرد محیطی Action.actionStatus=حالت عمل کرد Action.lastModifiedBy=تعویض شده بار آخر بواسطه Action.actionMeasure=اندازه گیری عمل کرد - # Actions actionApplyDateFilter=فلتر کردن تاریخ تطبیق actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=تعین کردن Epid جدید actionBack=عقب -actionSend = ارسال کردن +actionSend=ارسال کردن actionCancel=لغوه کردن actionClear=پاک کردن actionClearAll=همه را پاک کنید @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = ساحات فعال -areaArchivedAreas = ساحات ارشیف شده -areaAllAreas = همه ساحات -Area.archived = ارشیف شده -Area.externalId = شناسنامه بیرونی - +areaActiveAreas=ساحات فعال +areaArchivedAreas=ساحات ارشیف شده +areaAllAreas=همه ساحات +Area.archived=ارشیف شده +Area.externalId=شناسنامه بیرونی # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=کمپاین های فعال campaignAllCampaigns=همه کمپاین ها @@ -294,7 +281,6 @@ campaignDashboardChartHeight=ارتفاغ چارت دشبورد campaignDashboardOrder=تنظیم دشبورد campaignSearch=جستجو campaignDiagramGroupBy=گروپ کردن دیاگرام بواسطه\: - Campaign=کمپاین Campaign.name=نام Campaign.description=توضیح @@ -308,14 +294,12 @@ Campaign.region=حوزه Campaign.district=ولسوالی Campaign.community=جامعه Campaign.grouping=Grouping - -CampaignFormData.campaign = کمپاین -CampaignFormData.campaignFormMeta = فورم کمپاین -CampaignFormData.formDate = تاریخ فورم -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = ساحه +CampaignFormData.campaign=کمپاین +CampaignFormData.campaignFormMeta=فورم کمپاین +CampaignFormData.formDate=تاریخ فورم +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=ساحه CampaignFormData.edit=تصحیح کردن - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=ارشیف شده Community.externalID=شناسنامه بیرونی - communityActiveCommunities=اجتماعات فعال communityArchivedCommunities=اجتماعات ارشیف شده communityAllCommunities=همه اجتماعات - # Configuration Configuration.Facilities=مراکز صحی Configuration.Outbreaks=اوت بریک امراض Configuration.PointsOfEntry=نقاط دخولی Configuration.LineListing=لست کردن مسلسل - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=جمع شده dashboardProportion=تناسب dashboardViewAsColumnChart=نما دادن به شکل چارت قطاری dashboardViewAsBarChart=نما دادن به شکل بار چارت - defaultRegion=حوزه defaultDistrict=ولسوالی defaultCommunity=جامعه defaultFacility=مرکز صحی defaultLaboratory=لابراتوار defaultPointOfEntry=نقطه دخولی - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=ولسوالی های فعال districtArchivedDistricts=ولسوالی های ارشف شده districtAllDistricts=همه ی ولسوالی ها - District=District District.archived=ارشیف شده District.epidCode=ای پی کود District.growthRate=اندازه نشونمو District.population=نفوس District.externalID=شناسنامه بیرونی - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=صادر کردن exportBasic=اساسی @@ -1285,18 +1234,15 @@ exportCaseCustom=شکل واقعه exportNewExportConfiguration=تنظیم ارقام صادر شده جدید exportEditExportConfiguration=تنظیم ارقام صادر شده exportConfigurationData=Configuration data - ExportConfiguration.NAME=نام ExportConfiguration.myExports=صادرات خودم ExportConfiguration.sharedExports=صادرات شریک شده ExportConfiguration.sharedToPublic=صادرات شریک شده به مردم عام - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=مراکز صحی فعال facilityArchivedFacilities=مراکز صحی ارشیف شده facilityAllFacilities=همه مراکز صحی - Facility.CONFIGURED_FACILITY=مرکز صحی تنظیم شده Facility.NO_FACILITY=عدم وجود مرکز صحی Facility.OTHER_FACILITY=دیگر مراکز صحی - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=ارشیف شده @@ -1376,26 +1319,22 @@ Facility.publicOwnership=مالکیت عامه Facility.region=حوزه Facility.type=نوعه Facility.typeGroup=نوعه گروپ -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=مشرح شده importDownloadCaseImportTemplate=نمونه واقعه وارد شده را داونلود کنید @@ -1440,7 +1378,6 @@ importSkips=فرار کردن / صرف نظر کردن importValueSeparator=Value separator importCancelImport=عمله وارد کردن را لغوه کنید infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=موقعیت Location.additionalInformation=معلومات اضافی @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=طول البلد Location.postalCode=کود پوستی +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=کوچه -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=داخل شوید Login.login=داخل شدن Login.password=رمز Login.username=نام user - #LoginSidebar LoginSidebar.diseaseDetection=دریافتن مرض LoginSidebar.diseasePrevention=وقایه از مرض LoginSidebar.outbreakResponse=پاسخ به اوت بریک LoginSidebar.poweredBy=تهیه شده بواسطه \: - # Messaging messagesSendSMS=پیام بفرستید messagesSentBy=پیام فرستانده messagesNoSmsSentForCase=شماره پیام فرسته شده برای واقعه messagesNoPhoneNumberForCasePerson=شماره تیلیفون شخص مبتلا و شماره واقعه -messagesSms = پیام -messagesEmail = ایمیل -messagesSendingSms = پیام فرستاندن -messagesNumberOfMissingPhoneNumbers = تعداد شماره های تیلیفون نمبرهای بازمانده -messagesCharacters = حروف -messagesNumberOfMessages = تعداد پیام ها - +messagesSms=پیام +messagesEmail=ایمیل +messagesSendingSms=پیام فرستاندن +messagesNumberOfMissingPhoneNumbers=تعداد شماره های تیلیفون نمبرهای بازمانده +messagesCharacters=حروف +messagesNumberOfMessages=تعداد پیام ها # Main Menu mainMenuAbout=در باره mainMenuCampaigns=کمپاین ها @@ -1569,7 +1503,6 @@ mainMenuTasks=وظایف mainMenuUsers=استعمال کننده mainMenuAggregateReports=راپورهای توحیدی mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=کشورهای فعال countryArchivedCountries=کشورهای ارشیف شده countryAllCountries=همه کشور ها - Country=Country Country.archived=ارشیف شده Country.externalId=شناسنامه بیرونی @@ -1848,12 +1760,10 @@ Country.displayName=اشکار کردن نام Country.isoCode=کودISO Country.unoCode=کود uno Country.subcontinent=Subcontinent - # Region regionActiveRegions=حوزه های فعال regionArchivedRegions=حوزه های ارشیف شده regionAllRegions=همه حوزه ها - Region=Region Region.archived=ارشیف شده Region.epidCode=کود epid @@ -1861,7 +1771,6 @@ Region.growthRate=اندازه نشونما Region.population=نفوس Region.externalID=شناسنامه بیرونی Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=استعمال کننده جدید userResetPassword=تجدید کردن رمز @@ -2402,7 +2297,6 @@ syncUsers=استعمال کننده ها syncErrors=خطاها syncSuccessful=موفق syncProcessed=طی مراحل شده - User=استعمل کننده User.active=فعال User.associatedOfficer=کارمند مربوطه @@ -2417,12 +2311,10 @@ User.userName=نام شخص استعمال کننده User.userRoles=رول شخص استعمال کننده User.address=ادرس User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=کمپاین ها - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_fi-FI.properties b/sormas-api/src/main/resources/captions_fi-FI.properties index f21fe54d09f..d639a87bd70 100644 --- a/sormas-api/src/main/resources/captions_fi-FI.properties +++ b/sormas-api/src/main/resources/captions_fi-FI.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Kaikki area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Tietosisältökuvaus (XLSX) aboutSormasWebsite=Virallinen SORMAS-sivusto aboutTechnicalManual=Käyttöohje (PDF) aboutWhatsNew=Mitä uutta? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=Uusi toiminto actionNoActions=Tälle %s ei ole toimintoja actionCreatingLabel=Luotu %s henkilön %s toimesta actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=päivitetty\: %s - Action=Toiminto Action.title=Otsikko Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Lisää päiväyssuodatin actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Anna uusi EPID numero actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Peruuta actionClear=Tyhjennä actionClearAll=Tyhjennä kaikki @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=Uusi testitulos - AdditionalTest=Lisätesti AdditionalTest.altSgpt=ALAT (U/l) AdditionalTest.arterialVenousBloodGas=aB/vB-verikaasuanalyysi (astrup) @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Vastauksen päivämäärä ja aika AdditionalTest.totalBilirubin=Kokonaisbilirubiini (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=Valkosolut (x10^9/L) - aggregateReportDeathsShort=K aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Viime viikko @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Laboratoriovahvistukset AggregateReport.deaths=Kuolemat AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Maahantulopaikka - -areaActiveAreas = Tämänhetkiset alueet -areaArchivedAreas = Arkistoidut alueet -areaAllAreas = Kaikki alueet -Area.archived = Archived -Area.externalId = Ulkoinen tunniste - +areaActiveAreas=Tämänhetkiset alueet +areaArchivedAreas=Arkistoidut alueet +areaAllAreas=Kaikki alueet +Area.archived=Archived +Area.externalId=Ulkoinen tunniste # Bulk actions bulkActions=Joukkotoiminnot -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Peruuta seuranta bulkCaseClassification=Vaihda potilasluokitus bulkCaseOutcome=Vaihda potilaan lopputilaa @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Vaihda valvontavirkailija bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Aktiiviset kampanjat campaignAllCampaigns=Kaikka kampanjat @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Kampanja Campaign.name=Nimi Campaign.description=Kuvaus @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Potilaslista caseInfrastructureDataChanged=Perusrakenteen tiedot ovat muuttuneet @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=Uusi potilas casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Arkistoidut potilaat caseAllCases=Kaikki potilaat caseTransferCase=Siirrä potilas caseTransferCases=Siirrä useita potilaita -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Valitse potilas caseCreateCase=Lisää uusi potilas caseDefaultView=Oletusnäkymä @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Etsi tietty potilas caseSearchCase=Etsi potilas -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Potilas CaseData.additionalDetails=Yleinen kommentti CaseData.caseClassification=Potilaan luokitus @@ -445,7 +428,7 @@ CaseData.reportLat=Ilmoituksen GPS latitudi CaseData.reportLon=Ilmoituksen GPS longitudi CaseData.reportLatLonAccuracy=Ilmoituksen GPS tarkkuus (metreissä) CaseData.sequelae=Jälkitaudit -CaseData.sequelaeDetails=Kuvaile jälkitautia +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Onko aiemmin rokotettu isorokkoa vastaan? CaseData.smallpoxVaccinationScar=Löytyykö isorokkorokotteen rokotusarpi? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Osoite CaseExport.addressRegion=Osoitteen Erva-alue @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Sairaalahoito CaseHospitalization.admissionDate=Käynnin tai sisäänkirjauksen päivämäärä @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Tehohoidon alku CaseHospitalization.intensiveCareUnitEnd=Tehohoidon loppu CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Virheen kuvaus caseImportMergeCase=Haluatko korvata olemassa olevan potilaan tietoja tuotavan potilaan tiedoilla? - # CasePreviousHospitalization CasePreviousHospitalization=Aikaisemmat sairaalahoidot CasePreviousHospitalization.admissionAndDischargeDate=Sisään- ja uloskirjauksen päivämäärät -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Sisäänkirjauksen päivämäärä CasePreviousHospitalization.description=Kuvaus CasePreviousHospitalization.dischargeDate=Uloskirjauksen tai siirron päivämäärä CasePreviousHospitalization.editColumn=Muokkaa +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Eristys @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=Uusi kliininen arvio - ClinicalVisit=Kliininen arvio ClinicalVisit.bloodPressure=Verenpaine ClinicalVisit.heartRate=Sydämen syke @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Lämpötila ClinicalVisit.visitDateTime=Käynnin päivämäärä ja aika ClinicalVisit.visitingPerson=Hoitava lääkäri ClinicalVisit.visitRemarks=Lääkärin huomiot - ClinicalVisitExport.caseUuid=Potilas ID ClinicalVisitExport.caseName=Potilaan nimi - columnAdditionalTests=Lisätestit columnDiseaseShort=Sairaus columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Odottavat tehtävät columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=Ulkoinen tunniste - communityActiveCommunities=Aktiiviset kunnat communityArchivedCommunities=Arkistoidut kunnat communityAllCommunities=Kaikki kunnat - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Epidemiat Configuration.PointsOfEntry=Maahantulopaikat Configuration.LineListing=Rivilistaus - # Contact contactCancelFollowUp=Peruuta seuranta contactCaseContacts=Potilaan kontaktit @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Päivä contactQuarantineNotOrdered=Ei määrättyä karanteenia -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Kontakti Contact.additionalDetails=Yleinen kommentti Contact.caseClassification=Tartuttaneen potilaan luokitus @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Kontaktin luokittelu Contact.contactOfficer=Vastuullinen kontaktivirkailija Contact.contactOfficerUuid=Vastuullinen kontaktivirkailija -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Kontaktin tila @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Osoite ContactExport.addressDistrict=Osoitteen sairaanhoitopiiri @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Elossa dashboardApplyCustomFilter=Käytä mukautettua suodatinta @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Oletuserva-alue defaultDistrict=Oletussairaanhoitopiiri defaultCommunity=Oletuskunta defaultFacility=Default Facility defaultLaboratory=Oletuslaboratorio defaultPointOfEntry=Oletus maahantulopaikka - devModeCaseCount=Luotujen potilaiden lukumäärä devModeCaseDisease=Potilaiden sairaus devModeCaseDistrict=Potilaiden sairaanhoitopiiri @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Uudet potilaat DiseaseBurden.caseDeathCount=Kuolleita DiseaseBurden.casesDifference=Dynaaminen @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Tapahtumien lukumäärä DiseaseBurden.outbreakDistrictCount=Epidemia-alueita DiseaseBurden.previousCaseCount=Edelliset potilaat - # District districtActiveDistricts=Aktiiviset sairaanhoitopiirit districtArchivedDistricts=Arkistoidut sairaanhoitopiirit districtAllDistricts=Kaikki sairaanhoitopiirit - District=District District.archived=Archived District.epidCode=Epidemian tunnus District.growthRate=Kasvunopeus District.population=Väestö District.externalID=Ulkoinen tunniste - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiologiset tiedot EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Aktiiviset tapahtumat eventArchivedEvents=Arkistoidut tapahtumat @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Tapahtuma Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Tapahtuma @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Vienti exportBasic=Suppeat tiedot @@ -1285,18 +1234,15 @@ exportCaseCustom=Vie valinnaisia potilastietoja exportNewExportConfiguration=Uudet vientiasetukset exportEditExportConfiguration=Muokkaa vientiasetuksia exportConfigurationData=Configuration data - ExportConfiguration.NAME=Asetuksen nimi ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Koti tai muu paikka Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=Sairaanhoitopiiri FeatureConfiguration.enabled=Rivilistaus sallittu? FeatureConfiguration.endDate=Päättymispäivä - # Formats formatNumberOfVisitsFormat=%d (%d ohi menneitä) formatNumberOfVisitsLongFormat=%d käyntejä (%d ohi menneitä) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Terveysongelmat HealthConditions.tuberculosis=Tuberkuloosi @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Astma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immuunipuutos sisältäen HIV - # Import importDetailed=Tuo laajat tiedot importDownloadCaseImportTemplate=Lataa potilastuontimalli @@ -1440,7 +1378,6 @@ importSkips=%d ohitettu importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Lisää rivi @@ -1502,7 +1437,6 @@ lineListingEnableAll=Salli kaikki lineListingDisableAllShort=Estä kaikki lineListingEndDate=Päättymispäivä lineListingSetEndDateForAll=Aseta päättymispäivä kaikille - # Location Location=Sijainti Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS leveys ja pituus Location.latLonAccuracy=GPS tarkkuus metreinä Location.longitude=GPS pituuspiiri Location.postalCode=Postinumero +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Kirjaudu sisään Login.login=Käyttäjätunnukset Login.password=salasana Login.username=käyttäjänimi - #LoginSidebar LoginSidebar.diseaseDetection=Sairauden havaitseminen LoginSidebar.diseasePrevention=Sairauden ennaltaehkäisy LoginSidebar.outbreakResponse=Epidemioiden torjunta LoginSidebar.poweredBy=Palvelun tarjoaa - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=Tietoja mainMenuCampaigns=Kampanjat @@ -1569,7 +1503,6 @@ mainMenuTasks=Tehtävät mainMenuUsers=Käyttäjät mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Lasten kokonaislukumäärä MaternalHistory.ageAtBirth=Äidin ikä lapsipotilaan syntymähetkellä MaternalHistory.conjunctivitis=Sidekalvontulehdus @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Muut komplikaatiot MaternalHistory.otherComplicationsOnset=Alkupäivämäärä MaternalHistory.otherComplicationsMonth=Raskauskuukausi MaternalHistory.otherComplicationsDetails=Komplikaation yksityiskohdat - # Outbreak outbreakAffectedDistricts=Taudin rasittamat sairaanhoitopiirit outbreakNoOutbreak=Ei epidemiaa outbreakNormal=Normaali outbreakOutbreak=Epidemia - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Uusi tulos pathogenTestNewTest=Uusi testitulos pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Patogeenitesti PathogenTests=Patogeenitestit PathogenTest.fourFoldIncreaseAntibodyTiter=Nelinkertainen lisäys vasta-ainepitoisuudessa @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Luo uusi henkilö @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Henkilö Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Aktiiviset maahantulopaikat pointOfEntryArchivedPointsOfEntry=Arkistoidut maahantulopaikat pointOfEntryAllPointsOfEntry=Kaikki maahantulopaikat - PointOfEntry.OTHER_AIRPORT=Muu lentoasema PointOfEntry.OTHER_SEAPORT=Muu satama PointOfEntry.OTHER_GROUND_CROSSING=Muu maarajan ylityspaikka PointOfEntry.OTHER_POE=Muu maahantulopaikka - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Maahantulopaikan tyyppi PointOfEntry.active=Aktiivinen? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Leveyspiiri PointOfEntry.longitude=Pituuspiiri PointOfEntry.externalID=Ulkoinen tunniste PointOfEntry.archived=Archived - populationDataMaleTotal=Miehiä yhteensä populationDataFemaleTotal=Naisia yhteensä - PortHealthInfo=Maahantulotiedot PortHealthInfo.airlineName=Lentoyhtiön nimi PortHealthInfo.flightNumber=Lennon tunnus @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Määritä kuljetuksen tyyppi PortHealthInfo.departureLocation=Matkan alkamispaikka PortHealthInfo.finalDestination=Loppumääränpää PortHealthInfo.details=Maahantulopaikan tiedot - # Prescription prescriptionNewPrescription=Uusi lääkemääräys - Prescription=Prescription Prescription.additionalNotes=Lisähuomautukset Prescription.dose=Annos @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Lääkemääräyksen tyyppi Prescription.route=Reitti Prescription.routeDetails=Reitin määrittely Prescription.typeOfDrug=Lääkkeen tyyppi - PrescriptionExport.caseUuid=Potilas ID PrescriptionExport.caseName=Potilaan nimi - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Aktiiviset Erva-alueet regionArchivedRegions=Arkistoidut erva-alueet regionAllRegions=Kaikki erva-alueet - Region=Region Region.archived=Archived Region.epidCode=Epidemian tunnus @@ -1861,7 +1771,6 @@ Region.growthRate=Kasvunopeus Region.population=Väestö Region.externalID=Ulkoinen tunniste Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Luo testitulos tälle näytteelle nyt @@ -1888,7 +1797,6 @@ sampleActiveSamples=Tämänhetkiset näytteet sampleArchivedSamples=Arkistoidut näytteet sampleAllSamples=Kaikki näytteet sampleAssociationType=Näytetyyppi - Sample=Näyte Sample.additionalTestingRequested=Vaaditaanko lisätestejä suoritettavaksi? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Näytteen ID Sample.samplePurpose=Näytteen tarkoitus Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Onko lisätestejä pyydetty? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=Potilaan sairaanhoitopiiri SampleExport.caseCommunity=Potilaan kunta SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Kontaktin erva-alue -SampleExport.contactDistrict = Kontaktin sairaanhoitopiiri -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Kontaktin erva-alue +SampleExport.contactDistrict=Kontaktin sairaanhoitopiiri +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Potilaan lopputulos SampleExport.caseRegion=Potilaan erva-alue SampleExport.caseReportDate=Potilaan raportointipäivä SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Potilas UUID -SampleExport.contactUuid = Kontaktin UUID -SampleExport.contactReportDate = Kontaktin raportointipäivämäärä +SampleExport.contactUuid=Kontaktin UUID +SampleExport.contactReportDate=Kontaktin raportointipäivämäärä SampleExport.id=Näytteen SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=Mahdollinen syy testin puuttumiselle @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Viimeisimmän lisätestin päivämäärä ja aika SampleExport.totalBilirubin=Totaalibilirubiini viimeisimmässä lisätestissä SampleExport.urea=Urea viimeisimmässä lisätestissä SampleExport.wbcCount=Valkosolujen kokonaismäärä viimeisimmässä lisätestissä - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Lisää suodatin statisticsAttribute=Attribuutti @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Tyyppi statisticsIncidenceDivisor=Ilmaantuvuus per statisticsDataDisplayed=Näytettävä aineisto statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Muutosten sijainti symptomsMaxTemperature=Ruumiin maksimilämpötila °C symptomsSetClearedToNo=Aseta tyhjille arvo EI symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Oireet Symptoms.abdominalPain=Vatsakipu Symptoms.alteredConsciousness=Muuttunut tajunnantaso @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=Omat tehtävät taskNewTask=Uusi tehtävä @@ -2284,7 +2186,6 @@ taskOfficerTasks=Virkailijan tehtävät taskActiveTasks=Aktiiviset tehtävät taskArchivedTasks=Arkistoidut tehtävät taskAllTasks=Kaikki tehtävät - Task=Tehtävä Task.assigneeReply=Huomiot tehtävän suorituksesta Task.assigneeUser=Määrätty henkilölle @@ -2306,7 +2207,6 @@ Task.taskType=Tehtävätyyppi Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Luo hoito treatmentNewTreatment=Uusi hoito treatmentOpenPrescription=Avaa lääkemääräys - Treatment=Treatment Treatment.additionalNotes=Lisähuomautukset Treatment.dose=Annos @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Hoidon tiedot Treatment.treatmentType=Hoidon tyyppi Treatment.typeOfDrug=Lääkkeen tyyppi Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Potilas ID TreatmentExport.caseName=Potilaan nimi - # User userNewUser=Uusi käyttäjä userResetPassword=Luo uusi salasana @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=Käyttäjä User.active=Aktiivinen? User.associatedOfficer=Yhteysvirkailija @@ -2417,12 +2311,10 @@ User.userName=Käyttäjätunnus User.userRoles=Käyttäjäroolit User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Kokoomaraportit (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Potilasluettelo View.cases.merge=Yhdistä duplikaatit View.cases.archive=Arkistoidut potilaat @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Sairauden kliininen kulku View.cases.maternalhistory=Äitiyshistoria View.cases.porthealthinfo=Maahantulotiedot View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Kuntien asetukset View.configuration.communities.short=Kunnat View.configuration.districts=Sairaanhoitopiirien asetukset @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Väestötiedot View.configuration.populationdata.short=Väestö View.configuration.linelisting=Rivilistauksen asetukset View.configuration.linelisting.short=Rivilistaus - View.contacts=Kontaktiluettelo View.contacts.archive=Kontaktiarkisto View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Kontaktin henkilötiedot View.contacts.sub= View.contacts.visits=Kontaktien käynnit - View.dashboard.contacts=Jäljityksen hallintatyöpöytä View.dashboard.surveillance=Seurannan hallintatyöpöytä View.dashboard.campaigns=Campaigns Dashboard - View.events=Tapahtumaluettelo View.events.archive=Tapahtuma-arkisto View.events.data=Tapahtuman tiedot @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Tapahtuman osallistujat View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Viikkoraportit View.reports.sub= - View.samples=Näyteluettelo View.samples.archive=Näytearkisto View.samples.data=Näytetiedot View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Tilastot View.statistics.database-export=Tietokannan vienti - View.tasks=Tehtävien hallinta View.tasks.archive=Tehtäväarkisto View.tasks.sub= - View.users=Käyttäjien hallinta View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=Uusi käynti - Visit=Käynti Visit.person=Vieraillut henkilö Visit.symptoms=Oireet @@ -2573,24 +2445,19 @@ Visit.visitUser=Vieraileva virkailija Visit.disease=Sairaus Visit.reportLat=Ilmoituksen latitudi Visit.reportLon=Ilmoituksen longitudi - # WeeklyReport weeklyReportNoReport=Puuttuva raportti weeklyReportOfficerInformants=Tietolähteet weeklyReportsInDistrict=Viikkoraportteja %s weeklyReportRegionOfficers=Virkailijat weeklyReportRegionInformants=Tietolähteet - WeeklyReport.epiWeek=Epidemiaviikko WeeklyReport.year=Vuosi - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Raportoidut potilaat - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Tietolähteen raportin lähettäminen WeeklyReportInformantSummary.totalCaseCount=Tietolähteen raportoimat potilaat - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Tietolähteiden lukumäärä WeeklyReportOfficerSummary.informantReports=Tietolähteiden raporttien lukumäärä @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Tietolähteiden nollaraporttien WeeklyReportOfficerSummary.officer=Virkailija WeeklyReportOfficerSummary.officerReportDate=Virkailijan raportin lähteminen WeeklyReportOfficerSummary.totalCaseCount=Virkailijan raportoimat potilaat - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Tietolähteiden lukumäärä WeeklyReportRegionSummary.informantReports=Tietolähteiden raporttien lukumäärä @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Virkailijoiden lukumäärä WeeklyReportRegionSummary.officerReports=Virkailijoiden raporttien lukumäärä WeeklyReportRegionSummary.officerReportPercentage=Prosenttiosuus WeeklyReportRegionSummary.officerZeroReports=Virkailijoiden nollaraporttien lukumäärä - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_fil-PH.properties b/sormas-api/src/main/resources/captions_fil-PH.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_fil-PH.properties +++ b/sormas-api/src/main/resources/captions_fil-PH.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_fj-FJ.properties b/sormas-api/src/main/resources/captions_fj-FJ.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_fj-FJ.properties +++ b/sormas-api/src/main/resources/captions_fj-FJ.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_fr-CH.properties b/sormas-api/src/main/resources/captions_fr-CH.properties index 4a74ac79c10..331924e9d4a 100644 --- a/sormas-api/src/main/resources/captions_fr-CH.properties +++ b/sormas-api/src/main/resources/captions_fr-CH.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Tous area=Zones @@ -59,10 +58,9 @@ unknown=Inconnu diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=À propos aboutAdditionalInfo=Information additionnelle @@ -76,18 +74,16 @@ aboutDataDictionary=Dictionnaire de Données (XLSX) aboutSormasWebsite=Site officiel de SORMAS aboutTechnicalManual=Manuel Technique (PDF) aboutWhatsNew=Quoi de neuf ? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=Nouvelle action actionNoActions=Il n'y a aucune action pour ce %s actionCreatingLabel=Créé à %s par %s actionLastModifiedByLabel=Mis à jour à %s par %s actionStatusChangeDate=mis à jour à %s - Action=Action Action.title=Titre Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Contexte de l'action Action.actionStatus=Statut de l’action Action.lastModifiedBy=Dernière modification par Action.actionMeasure=Mesure - # Actions actionApplyDateFilter=Appliquer le filtre de date actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assigner un nouveau numéro d'épi actionBack=Retour -actionSend = Envoyer +actionSend=Envoyer actionCancel=Annuler actionClear=Supprimer actionClearAll=Supprimer tous @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Numéro de vol - ActivityAsCase=Activity as case ActivityAsCase.startDate=Début de l'activité ActivityAsCase.endDate=Fin d'activité @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Détails du type de rassemblement ActivityAsCase.habitationType=Type d'habitation ActivityAsCase.habitationDetails=Détails du type de logement ActivityAsCase.role=Rôle - # AdditionalTest additionalTestNewTest=Nouveau résultat de test - AdditionalTest=Test supplémentaire AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Gaz du sang artériel/veineux @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date et heure du résultat AdditionalTest.totalBilirubin=Bilirubine totale (mmol/L) AdditionalTest.urea=Urée (mmol/L) AdditionalTest.wbcCount=Nombre de WBC (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Semaine dernière @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Confirmation de laboratoire AggregateReport.deaths=Décédés AggregateReport.healthFacility=Établissement de santé AggregateReport.pointOfEntry=Point d'entrée - -areaActiveAreas = Zones actives -areaArchivedAreas = Zones archivées -areaAllAreas = Toutes les zones -Area.archived = Archivé -Area.externalId = ID externe - +areaActiveAreas=Zones actives +areaArchivedAreas=Zones archivées +areaAllAreas=Toutes les zones +Area.archived=Archivé +Area.externalId=ID externe # Bulk actions bulkActions=Actions Groupées -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Annuler le suivi bulkCaseClassification=Changer la classification des cas bulkCaseOutcome=Modifier la laconséquence du cas @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Changer l'agent de surveillance bulkTaskStatus=Changer le statut de la tâche bulkTaskAssignee=Changer le destinataire bulkTaskPriority=Changer le niveau de priorité - # Campaign campaignActiveCampaigns=Campagnes actives campaignAllCampaigns=Toutes les campagnes @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Hauteur en % campaignDashboardOrder=Ordre campaignSearch=Sélectionner la campagne campaignDiagramGroupBy=Regrouper par - Campaign=Campagne Campaign.name=Nom Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Canton Campaign.district=District Campaign.community=Communauté Campaign.grouping=Regroupement - -CampaignFormData.campaign = Campagne -CampaignFormData.campaignFormMeta = Formulaire -CampaignFormData.formDate = Date du formulaire -CampaignFormData.formValuesJson = Données du formulaire -CampaignFormData.area = Zone +CampaignFormData.campaign=Campagne +CampaignFormData.campaignFormMeta=Formulaire +CampaignFormData.formDate=Date du formulaire +CampaignFormData.formValuesJson=Données du formulaire +CampaignFormData.area=Zone CampaignFormData.edit=Modifier - # CaseData caseCasesList=Liste des cas caseInfrastructureDataChanged=Les données d'infrastructure ont changé @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Seuls les cas avec un isolement prolongé caseFilterWithReducedQuarantine=Cas avec isolement réduit uniquement caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Inclure les cas d'autres juridictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Uniquement les cas avec des événements caseFilterOnlyFromOtherInstances=Seulement les cas d'autres instances caseFilterCasesWithReinfection=Seulement les cas avec réinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Seuls les cas non encore partag caseFilterOnlyCasesSharedWithExternalSurvToo=Seulement les cas déjà partagés avec l'outil de rapport caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Seuls les cas modifiés depuis le dernier partage avec l'outil de rapport caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Seuls les cas marqués avec "Ne pas partager avec l'outil de rapport" - caseFacilityDetailsShort=Nom de l'établissement caseNewCase=Nouveau Cas casePlaceOfStay=Lieu de résidence @@ -352,7 +335,7 @@ caseArchivedCases=Cas archivés caseAllCases=Tous les cas caseTransferCase=Boîte de transfert caseTransferCases=Transférer des cas -caseReferToFacility=Référer le cas à un établissement de santé +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Choisir un cas existant caseCreateCase=Créer un nouveau cas caseDefaultView=Vue par défaut @@ -374,10 +357,10 @@ convertEventParticipantToCase=Créer un cas à partir d'un participant à l'év convertContactToCase=Créer un cas à partir d'un contact avec un résultat de test positif? caseSearchSpecificCase=Rechercher un cas spécifique caseSearchCase=Chercher un cas -caseSelect= Sélectionner un cas +caseSelect=Sélectionner un cas caseCreateNew=Créer un nouveau cas caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Cas CaseData.additionalDetails=Détails supplémentaires CaseData.caseClassification=Classification de cas @@ -445,7 +428,7 @@ CaseData.reportLat=Renseigner la latitude GPS CaseData.reportLon=Renseigner la longitude GPS CaseData.reportLatLonAccuracy=Précision du GPS en m CaseData.sequelae=Séquelles -CaseData.sequelaeDetails=Décrivez séquelles +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Une vaccination contre la variole a-t-elle été reçue par le passé? CaseData.smallpoxVaccinationScar=Une cicatrice de vaccination contre la variole est-elle présente? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Adresse CaseExport.addressRegion=Address Canton @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalisation CaseHospitalization.admissionDate=Date de visite ou d'admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Début du séjour CaseHospitalization.intensiveCareUnitEnd=Fin du séjour CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Veuillez indiquer le motif - - # CaseImport caseImportErrorDescription=Description d’erreur caseImportMergeCase=Remplacer le cas existant avec les modifications du cas importé ? - # CasePreviousHospitalization CasePreviousHospitalization=Hospitalisation précédente CasePreviousHospitalization.admissionAndDischargeDate=Date d'admission & sortie -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date d'admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date de sortie ou transfert CasePreviousHospitalization.editColumn=Modifier +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Etablissement de santé CasePreviousHospitalization.healthFacilityDetails=Nom et description de l'établissement de santé CasePreviousHospitalization.isolated=Isolement @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical visit - ClinicalVisit=Evaluation clinique ClinicalVisit.bloodPressure=Pression sanguine ClinicalVisit.heartRate=Rythme cardiaque @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date et heure de visite ClinicalVisit.visitingPerson=Visiting clinician ClinicalVisit.visitRemarks=Visit remarks - ClinicalVisitExport.caseUuid=ID de cas ClinicalVisitExport.caseName=Nom du cas - columnAdditionalTests=Tests supplémentaires columnDiseaseShort=Maladie columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Tâches en attente columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archivé Community.externalID=Identification externe - communityActiveCommunities=communes actives communityArchivedCommunities=communes archivées communityAllCommunities=Toutes les communes - # Configuration Configuration.Facilities=Etablissements de santé Configuration.Outbreaks=Éclosions Configuration.PointsOfEntry=Point d'entrée Configuration.LineListing=Listes de cas - # Contact contactCancelFollowUp=Annuler le suivi contactCaseContacts=Contacts de cas @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Uniquement les contacts dont le cas sou contactOnlyWithSourceCaseInGivenEvent=Uniquement les contacts dont le cas source est lié à l'événement spécifié contactFollowUpDay=Jour contactQuarantineNotOrdered=Isolation non prescrite -contactPersonPhoneNumber = Numéro de téléphone de la personne de contact -contactSourceCase = Source case +contactPersonPhoneNumber=Numéro de téléphone de la personne de contact +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=Commentaire général Contact.caseClassification=Classification du cas source @@ -720,10 +691,10 @@ Contact.community=Commune responsable Contact.contactClassification=Classification de contact Contact.contactOfficer=Agent de contact responsable Contact.contactOfficerUuid=Agent de contact responsable -Contact.contactIdentificationSource = Source d'identification du contact -Contact.contactIdentificationSourceDetails = Détails de la source d'identification du contact -Contact.tracingApp = Application de suivi -Contact.tracingAppDetails = Détails de l''''application de suivi, par exemple, nom +Contact.contactIdentificationSource=Source d'identification du contact +Contact.contactIdentificationSourceDetails=Détails de la source d'identification du contact +Contact.tracingApp=Application de suivi +Contact.tracingAppDetails=Détails de l''''application de suivi, par exemple, nom Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Statut du contact @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Utilisateur responsable Contact.expectedFollowUpUntil=Suivi attendu jusqu'au Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Vivant dashboardApplyCustomFilter=Appliquer un filtre personnalisé @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Nombre dashboardProportion=Proportion (%) dashboardViewAsColumnChart=Voir comme Histogramme dashboardViewAsBarChart=Voir comme Diagramme à barres - defaultRegion=Région par défaut defaultDistrict=District par défaut defaultCommunity=commune par défaut defaultFacility=Etablissement par défaut defaultLaboratory=Laboratoire par défaut defaultPointOfEntry=Point d'entrée par défaut - devModeCaseCount=Nombre de cas générés devModeCaseDisease=Maladie des cas devModeCaseDistrict=District des cas @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Nouveaux cas DiseaseBurden.caseDeathCount=Nombre de décès DiseaseBurden.casesDifference=Dynamique @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=Taux de mortalité des cas (TMC) DiseaseBurden.eventCount=Nombre d'événements DiseaseBurden.outbreakDistrictCount=Districts endémiques DiseaseBurden.previousCaseCount=Nombre de cas précédents - # District districtActiveDistricts=Districts actifs districtArchivedDistricts=Districts archivés districtAllDistricts=Tous les districts - District=District District.archived=Archivé District.epidCode=Code epid District.growthRate=Taux de croissance District.population=Population District.externalID=Identification externe - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Données épidémiologiques EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Détails d'exposition connus EpiData.exposures=Expositions -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Résider ou travailler dans une région présentant un risque élevé de transmission de la maladie EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=Nouveau document documentNoDocuments=Il n'y a aucun document pour ce %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Modèle de document DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Événements actifs eventArchivedEvents=Événements archivés @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Événement Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Id de l'événement EventAction.eventTitle=Titre de l'événement @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Date de modification de l'action EventAction.actionStatus=Statut de l'action EventAction.actionPriority=Priorité de l'action EventAction.actionLastModifiedBy=Dernière action modifiée par - # Event action export EventActionExport.eventDate=Date du rassemblement - #Event export - # EventParticipant eventParticipantAddPerson=Ajouter un participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Uniquement les contacts dont le cas source est lié à l'événement spécifié @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Créer un nouveau participant à l'événement eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Personnes impliquées EventParticipant.contactCount=Nombre de contacts EventParticipant.event=Événement @@ -1238,7 +1190,6 @@ EventParticipant.uuid=ID de participant à l'événement EventParticipant.region=Canton responsable EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Maladie d'événement EventParticipantExport.eventDisease=Maladie d'événement @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Information sur l'échantillon EventParticipantExport.personNationalHealthId=Numéro AVS EventParticipantExport.eventParticipantInvolvmentDescription=Description de l'implication EventParticipantExport.eventParticipantUuid=ID de participant à l'événement - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Exporter exportBasic=Export basique @@ -1285,18 +1234,15 @@ exportCaseCustom=Personnaliser des cas exporter exportNewExportConfiguration=Nouvelle configuration d'export exportEditExportConfiguration=Modifier la configuration d'export exportConfigurationData=Configuration data - ExportConfiguration.NAME=Nom de la configuration ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Numéro de vol exposureTimePeriod=Période exposureSourceCaseName=Nom du cas source - Exposure=Exposure -Exposure.probableInfectionEnvironment= L'exposition infectieuse la plus probable +Exposure.probableInfectionEnvironment=L'exposition infectieuse la plus probable Exposure.startDate=Début d'exposition Exposure.endDate=Fin d'exposition Exposure.exposureType=Type d'activité @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=Plus de 300 participants - # Facility facilityActiveFacilities=Établissements de santé actifs facilityArchivedFacilities=Établissements de santé archivés facilityAllFacilities=Tous les établissements de santé - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Maison ou autre lieu Facility.OTHER_FACILITY=Autres établissements de santé - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archivé @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Propriété publique Facility.region=Canton Facility.type=Type d'établissement Facility.typeGroup=Catégorie de l'établissement -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Liste des cas activée? FeatureConfiguration.endDate=Date de fin - # Formats formatNumberOfVisitsFormat=%d (%d raté) formatNumberOfVisitsLongFormat=%d visites (%d raté) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=ID de suivi FollowUp.person=Personne de suivi FollowUp.reportDate=Date de rapport FollowUp.followUpUntil=Suivi jusqu’à - # HealthConditions HealthConditions=Conditions de santé HealthConditions.tuberculosis=Tuberculose @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthme HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodéficience y compris VIH - # Import importDetailed=Importation détaillée importDownloadCaseImportTemplate=Télécharger le modèle pour import @@ -1440,7 +1378,6 @@ importSkips=%d Sauté importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Ajouter la ligne @@ -1502,7 +1437,6 @@ lineListingEnableAll=Activer toutes lineListingDisableAllShort=Désactiver toutes lineListingEndDate=Date de fin lineListingSetEndDateForAll=Définir la date de fin pour tous - # Location Location=Lieu Location.additionalInformation=Information supplémentaire @@ -1519,38 +1453,38 @@ Location.latLon=Lat et lon GPS Location.latLonAccuracy=Précision GPS en m Location.longitude=Longitude GPS Location.postalCode=Code postal +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Rue -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Se connecter Login.login=Se connecter Login.password=mot de passe Login.username=nom d'utilisateur - #LoginSidebar LoginSidebar.diseaseDetection=Détection de maladie LoginSidebar.diseasePrevention=Prévention de maladie LoginSidebar.outbreakResponse=Réponse à l'épidémie LoginSidebar.poweredBy=Propulsé par - # Messaging messagesSendSMS=Envoyer un SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=À propos mainMenuCampaigns=Campagnes @@ -1569,7 +1503,6 @@ mainMenuTasks=Tâches mainMenuUsers=Utilisateur mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Nombre total d'enfants MaternalHistory.ageAtBirth=L'âge de la mère à la naissance du patient MaternalHistory.conjunctivitis=Conjonctivite @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Autres complications MaternalHistory.otherComplicationsOnset=Date d'apparition MaternalHistory.otherComplicationsMonth=Mois de grossesse MaternalHistory.otherComplicationsDetails=Détails de la Complication - # Outbreak outbreakAffectedDistricts=Districts affectés outbreakNoOutbreak=Pas d'épidémie outbreakNormal=Normal outbreakOutbreak=Epidémie - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nouveau résultat pathogenTestNewTest=Nouveau résultat de test pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Test pathogène PathogenTests=Tests pathogènes PathogenTest.fourFoldIncreaseAntibodyTiter=Augmentation de 4 fois du titre d’anticorps @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Liste des personnes personCreateNew=Créer une nouvelle personne @@ -1652,7 +1581,6 @@ personLinkToContacts=Voir les contacts pour cette personne personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Personnes mises à jour - Person=Personne Person.additionalDetails=General comment Person.address=Adresse de résidence @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Pays de naissance Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Points d’entrée actifs pointOfEntryArchivedPointsOfEntry=Points d'entrée archivés pointOfEntryAllPointsOfEntry=Tous les points d'entrée - PointOfEntry.OTHER_AIRPORT=Autre aéroport PointOfEntry.OTHER_SEAPORT=Autre port maritime PointOfEntry.OTHER_GROUND_CROSSING=Autre passage au sol PointOfEntry.OTHER_POE=Autre point d'entrée - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Type de point d'entrée PointOfEntry.active=Actif ? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=Identification externe PointOfEntry.archived=Archived - populationDataMaleTotal=Total masculin populationDataFemaleTotal=Total féminin - PortHealthInfo=Information sur la santé du port PortHealthInfo.airlineName=Nom de la compagnie aérienne PortHealthInfo.flightNumber=Numéro de vol @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Spécifier le type de conveyance PortHealthInfo.departureLocation=Lieu de départ du voyage PortHealthInfo.finalDestination=Destination finale PortHealthInfo.details=Détails du point d'entrée - # Prescription prescriptionNewPrescription=Nouvelle prescription - Prescription=Prescription Prescription.additionalNotes=Notes Supplémentaires Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Type de prescription Prescription.route=Chemin Prescription.routeDetails=Spécification de la chemin Prescription.typeOfDrug=Type de médicament - PrescriptionExport.caseUuid=ID de cas PrescriptionExport.caseName=Nom du cas - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=Identification externe Continent.defaultName=Default name Continent.displayName=Nom - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=Identification externe Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archivé Country.externalId=ID externe @@ -1848,12 +1760,10 @@ Country.displayName=Nom Country.isoCode=Code ISO Country.unoCode=Code ONU Country.subcontinent=Subcontinent - # Region regionActiveRegions=Régions actives regionArchivedRegions=Régions archivées regionAllRegions=Toutes les régions - Region=Region Region.archived=Archivé Region.epidCode=Code Epid @@ -1861,7 +1771,6 @@ Region.growthRate=Taux de croissance Region.population=Population Region.externalID=Identification externe Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Créer un résultat de test pour cet échantillon maintenant @@ -1888,7 +1797,6 @@ sampleActiveSamples=Échantillons actifs sampleArchivedSamples=Échantillons archivés sampleAllSamples=Tous les échantillons sampleAssociationType=Type d'échantillon - Sample=Échantillon Sample.additionalTestingRequested=Demander des tests supplémentaires à effectuer ? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=ID d’échantillon Sample.samplePurpose=Objectif de l'échantillon Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Des tests supplémentaires ont-ils été demandés? SampleExport.personAddressCaption=Adresse de la personne de cas/contact/participant à l'événement SampleExport.personAge=Âge de la personne de cas/contact/participant à l'événement SampleExport.caseDistrict=District de cas SampleExport.caseCommunity=commune de cas SampleExport.caseFacility=Centre de santé du cas -SampleExport.contactRegion = Canton de contact -SampleExport.contactDistrict = District de contact -SampleExport.contactCommunity = Commune de contact +SampleExport.contactRegion=Canton de contact +SampleExport.contactDistrict=District de contact +SampleExport.contactCommunity=Commune de contact SampleExport.caseOutcome=Résultat du cas SampleExport.caseRegion=Région de cas SampleExport.caseReportDate=Date du signalement de cas SampleExport.personSex=Sexe du cas/contact/participant à l'événement SampleExport.caseUuid=UUID de cas -SampleExport.contactUuid = UUID du contact -SampleExport.contactReportDate = Date du rapport de contact +SampleExport.contactUuid=UUID du contact +SampleExport.contactReportDate=Date du rapport de contact SampleExport.id=SN d’échantillon SampleExport.sampleReportDate=Date du rapport de l' échantillon SampleExport.noTestPossibleReason=Raison possible de l'absence de test @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date et heure du dernier test supplémentaires SampleExport.totalBilirubin=La bilirubine totale du dernier test supplémentaire SampleExport.urea=Urée du dernier test supplémentaire SampleExport.wbcCount=Nombre de WBC du dernier test supplémentaire - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Ajouter un filtre statisticsAttribute=Attribut @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Diviseur d'incidence statisticsDataDisplayed=Données affichées statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localisation des lésions symptomsMaxTemperature=Température maximale du corps en ° C symptomsSetClearedToNo=Définir effacé au Non symptomsSetClearedToUnknown=Convertir "effacé" en "inconnu" - Symptoms=Symptômes Symptoms.abdominalPain=Douleurs abdominales Symptoms.alteredConsciousness=Altéré de la conscience @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Étourdissements (au lever d'une position assise ou alongée) Symptoms.highOrLowBloodPressure=Tension artérielle trop élevée ou trop faible (mesurée) Symptoms.urinaryRetention=Rétention urinaire - # Task taskMyTasks=Mes tâches taskNewTask=Nouvelle tâche @@ -2284,7 +2186,6 @@ taskOfficerTasks=Tâches de l’agent taskActiveTasks=Tâches actives taskArchivedTasks=Tâches archivées taskAllTasks=Toutes les tâches - Task=Tâches Task.assigneeReply=Commentaires sur l'exécution Task.assigneeUser=Attribué à @@ -2306,7 +2207,6 @@ Task.taskType=Type de tâche Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Créer un traitement treatmentNewTreatment=Nouveau traitement treatmentOpenPrescription=Ouvrir une prescription - Treatment=Treatment Treatment.additionalNotes=Notes Supplémentaires Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Détails du traitement Treatment.treatmentType=Type de traitement Treatment.typeOfDrug=Type de médicament Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=ID de cas TreatmentExport.caseName=Nom du cas - # User userNewUser=Nouvel utilisateur userResetPassword=Créer un nouveau mot de passe @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=Utilisateur User.active=Active ? User.associatedOfficer=Agent associé @@ -2417,12 +2311,10 @@ User.userName=Nom d’utilisateur User.userRoles=Rôles d’utilisateur User.address=Adresse User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Répertoire d'actions View.groups=Group Directory - View.aggregatereports=Rapports agrégés (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Répertoire des campagnes View.campaign.campaigns.short=Campagnes View.campaign.campaigndata=Données de campagne @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Formulaire de données de campagne View.campaign.campaigndata.dataform.short=Formulaire de données View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Répertoire de cas View.cases.merge=Fusionner les cas en double View.cases.archive=Archive de cas @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Cours clinique View.cases.maternalhistory=Historique Maternel View.cases.porthealthinfo=Information sur la santé du port View.cases.visits=Visites de cas - View.persons=Répertoire de personnes View.persons.data=Informations sur la personne - View.configuration.communities=Configuration des communes View.configuration.communities.short=Communes View.configuration.districts=Configuration de departement @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Données de population View.configuration.populationdata.short=Population View.configuration.linelisting=Configuration de la liste des lignes View.configuration.linelisting.short=Liste des lignes - View.contacts=Répertoire de contacts View.contacts.archive=Archive de contact View.contacts.epidata=Données épidémiologiques du contact @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Personne de contact View.contacts.sub= View.contacts.visits=Visites de contact - View.dashboard.contacts=Tableau de bord des contacts View.dashboard.surveillance=Tableau de bord de surveillance View.dashboard.campaigns=Tableau de bord des campagnes - View.events=Répertoire d'événements View.events.archive=Événements-archives View.events.data=Informations sur l'événement @@ -2532,36 +2415,25 @@ View.events.eventactions=Actions de l'événement View.events.eventparticipants=Participants à l'événement View.events.sub= View.events.eventparticipants.data=Informations sur le participant à l'événement - View.samples.labMessages=Répertoire de messages de laboratoire - View.reports=Rapports Hébdomadaires View.reports.sub= - View.samples=Répertoire d'échantillon View.samples.archive=Archive d'échantillon View.samples.data=Information d'échantillon View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistiques  View.statistics.database-export=Exportation de base de données - View.tasks=Gestion des tâches View.tasks.archive=Archive tâche View.tasks.sub= - View.users=Gestion des utilisateurs View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=Nouvelle visite - Visit=Visite Visit.person=Personne visitée Visit.symptoms=Symptômes @@ -2573,24 +2445,19 @@ Visit.visitUser=Agent de visite Visit.disease=Maladie Visit.reportLat=Indiquer la latitude Visit.reportLon=Indiquer la longitude - # WeeklyReport weeklyReportNoReport=Rapport manquant weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Rapport hebdomadaire dans %s weeklyReportRegionOfficers=Agents weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Semaine de l’Epi WeeklyReport.year=Année  - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cas signalés - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Soumission du rapport d'Informant WeeklyReportInformantSummary.totalCaseCount=Cas signalés par l'informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Nombre d'informants WeeklyReportOfficerSummary.informantReports=Nombre de rapports d'informant @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Nombre sans rapports d'informant WeeklyReportOfficerSummary.officer=Agent WeeklyReportOfficerSummary.officerReportDate=Soumission du rapport d'argent WeeklyReportOfficerSummary.totalCaseCount=Cas signalés par l’agent - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Nombre d'informants WeeklyReportRegionSummary.informantReports=Nombre de rapports d'informant @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Nombre d’agents WeeklyReportRegionSummary.officerReports=Nombre de rapports d’agents WeeklyReportRegionSummary.officerReportPercentage=Pourcentage WeeklyReportRegionSummary.officerZeroReports=Nombre de rapports zéro d'agent - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Partager les contacts associés @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=Le sormasToSormasSentFrom=Envoyé par sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=Export BAG - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Impossible d'enregistrer la personne dans le journal du patient. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Impossible d'exporter la personne vers l'agenda du patient. La personne a besoin d'une date de naissance valide et d'un numéro de téléphone ou d'une adresse e-mail valide. - showPlacesOnMap=Afficher - changeUserEmail=Change user email - SurveillanceReport=Rapport SurveillanceReport.reportingType=Type de Rapport SurveillanceReport.creatingUser=Créer un nouvel utilisateur @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_fr-FR.properties b/sormas-api/src/main/resources/captions_fr-FR.properties index 1f6a9d3a956..80dfba1151b 100644 --- a/sormas-api/src/main/resources/captions_fr-FR.properties +++ b/sormas-api/src/main/resources/captions_fr-FR.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Tous area=Zones @@ -59,10 +58,9 @@ unknown=Inconnu diseaseVariantDetails=Disease variant details unassigned=Non assigné assign=Affecter -assignToMe = Me l'assigner +assignToMe=Me l'assigner endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=À propos de aboutAdditionalInfo=Information additionnelle @@ -76,18 +74,16 @@ aboutDataDictionary=Dictionnaire des données (XLSX) aboutSormasWebsite=Site officiel de SORMAS aboutTechnicalManual=Manuel Technique (PDF) aboutWhatsNew=Quoi de neuf ? -aboutLabMessageAdapter = Adaptateur de messages de laboratoire -aboutServiceNotAvailable = Indisponible -aboutExternalSurveillanceToolGateway = Passerelle de l'outil de surveillance externe -aboutDataProtectionDictionary = Dictionnaire de Protection des Données (XLSX) - +aboutLabMessageAdapter=Adaptateur de messages de laboratoire +aboutServiceNotAvailable=Indisponible +aboutExternalSurveillanceToolGateway=Passerelle de l'outil de surveillance externe +aboutDataProtectionDictionary=Dictionnaire de Protection des Données (XLSX) # Action actionNewAction=Nouvelle action actionNoActions=Il n'y a aucune action pour ce %s actionCreatingLabel=Créé à %s par %s actionLastModifiedByLabel=Mis à jour à %s par %s actionStatusChangeDate=mis à jour à %s - Action=Action Action.title=Titre Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Contexte de l'action Action.actionStatus=Statut de l’action Action.lastModifiedBy=Dernière modification par Action.actionMeasure=Mesure - # Actions actionApplyDateFilter=Appliquer le filtre de date actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assigner un nouveau numéro d'épi actionBack=Retour -actionSend = Envoyer +actionSend=Envoyer actionCancel=Annuler actionClear=Supprimer actionClearAll=Tout supprimer @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Enregistrer et ouvrir un participant à l'év actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Numéro de vol - ActivityAsCase=Activity as case ActivityAsCase.startDate=Début de l'activité ActivityAsCase.endDate=Fin d'activité @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Détails du type de rassemblement ActivityAsCase.habitationType=Type d'habitation ActivityAsCase.habitationDetails=Détails du type de logement ActivityAsCase.role=Rôle - # AdditionalTest additionalTestNewTest=Nouveau résultat de test - AdditionalTest=Test supplémentaire AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Gaz sanguins artériels/veineux @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date et heure du résultat AdditionalTest.totalBilirubin=Bilirubine totale (mmol/L) AdditionalTest.urea=Urée (mmol/L) AdditionalTest.wbcCount=Numération des globules blancs (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Semaine dernière @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Confirmations de laboratoire AggregateReport.deaths=Morts AggregateReport.healthFacility=Établissement AggregateReport.pointOfEntry=Point d'entrée - -areaActiveAreas = Zones actives -areaArchivedAreas = Zones archivées -areaAllAreas = Toutes les zones -Area.archived = Archivé -Area.externalId = ID externe - +areaActiveAreas=Zones actives +areaArchivedAreas=Zones archivées +areaAllAreas=Toutes les zones +Area.archived=Archivé +Area.externalId=ID externe # Bulk actions bulkActions=Actions groupées -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Annuler le suivi bulkCaseClassification=Modifier la classification des cas bulkCaseOutcome=Modifier l'issue des cas @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Modifier l'agent de surveillance bulkTaskStatus=Changer le statut de la tâche bulkTaskAssignee=Changer le destinataire bulkTaskPriority=Changer le niveau de priorité - # Campaign campaignActiveCampaigns=Campagnes actives campaignAllCampaigns=Toutes les campagnes @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Hauteur en % campaignDashboardOrder=Ordre campaignSearch=Sélectionner la campagne campaignDiagramGroupBy=Regrouper par - Campaign=Campagne Campaign.name=Nom Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Région Campaign.district=Département Campaign.community=Commune Campaign.grouping=Regroupement - -CampaignFormData.campaign = Campagne -CampaignFormData.campaignFormMeta = Formulaire -CampaignFormData.formDate = Date du formulaire -CampaignFormData.formValuesJson = Données du formulaire -CampaignFormData.area = Zone +CampaignFormData.campaign=Campagne +CampaignFormData.campaignFormMeta=Formulaire +CampaignFormData.formDate=Date du formulaire +CampaignFormData.formValuesJson=Données du formulaire +CampaignFormData.area=Zone CampaignFormData.edit=Éditer - # CaseData caseCasesList=Liste de cas caseInfrastructureDataChanged=Les données d'infrastructure ont changé @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Seuls les cas avec une quarantaine prolongée caseFilterWithReducedQuarantine=Seuls les cas avec une quarantaine réduite caseFilterOnlyQuarantineHelpNeeded=Besoin d'aide en quarantaine caseFilterInludeCasesFromOtherJurisdictions=Inclure les cas d'autres juridictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Seulement les cas avec des événements caseFilterOnlyFromOtherInstances=Seulement les cas d'autres instances caseFilterCasesWithReinfection=Seulement les cas avec réinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Seuls les cas non encore partag caseFilterOnlyCasesSharedWithExternalSurvToo=Seulement les cas déjà partagés avec l'outil de rapport caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Seuls les cas modifiés depuis le dernier partage avec l'outil de rapport caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Seuls les cas marqués avec "Ne pas partager avec l'outil de rapport" - caseFacilityDetailsShort=Nom de l'établissement caseNewCase=Nouveau Cas casePlaceOfStay=Lieu du séjour @@ -352,7 +335,7 @@ caseArchivedCases=Cas archivés caseAllCases=Tous les cas caseTransferCase=Transférer ce cas caseTransferCases=Transférer des cas -caseReferToFacility=Référer le cas à un établissement +caseReferFromPointOfEntry=Référez le cas à partir du point d'entrée casePickCase=Choisir un cas existant caseCreateCase=Créer un nouveau cas caseDefaultView=Vue par défaut @@ -374,10 +357,10 @@ convertEventParticipantToCase=Créer un cas à partir d'un participant à l'év convertContactToCase=Créer un cas à partir d'un contact avec un résultat de test positif? caseSearchSpecificCase=Rechercher un cas spécifique caseSearchCase=Chercher un cas -caseSelect= Sélectionner un cas +caseSelect=Sélectionner un cas caseCreateNew=Créer un nouveau cas caseDataEnterHomeAddressNow=Entrez maintenant l'adresse de la personne concernée à la maison - +caseCancelDeletion=Annuler la suppression du cas CaseData=Cas CaseData.additionalDetails=Commentaire général CaseData.caseClassification=Classification du cas @@ -445,7 +428,7 @@ CaseData.reportLat=Signaler la latitude GPS CaseData.reportLon=Signaler la longitude GPS CaseData.reportLatLonAccuracy=Précision du GPS en m CaseData.sequelae=Séquelles -CaseData.sequelaeDetails=Décrivez les séquelles +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Le sujet a-t-il été vacciné contre la variole? CaseData.smallpoxVaccinationScar=Présence d'une cicatrice de vaccination contre la variole? CaseData.smallpoxLastVaccinationDate=Date du dernier vaccin contre la variole @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point d'entrée - région CaseData.pointOfEntryDistrict=Point d'entrée - département CaseData.externalData=Données externes -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Adresse CaseExport.addressRegion=Région @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalisation CaseHospitalization.admissionDate=Date de consultation ou d'admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Début du séjour CaseHospitalization.intensiveCareUnitEnd=Fin du séjour CaseHospitalization.hospitalizationReason=Motif de l'hospitalisation CaseHospitalization.otherHospitalizationReason=Veuillez indiquer le motif - - # CaseImport caseImportErrorDescription=Description d’erreur caseImportMergeCase=Remplacer le cas existant avec les modifications du cas importé ? - # CasePreviousHospitalization CasePreviousHospitalization=Hospitalisation précédente CasePreviousHospitalization.admissionAndDischargeDate=Date d'admission & sortie -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date d'admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date de sortie ou transfert CasePreviousHospitalization.editColumn=Modifier +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hôpital CasePreviousHospitalization.healthFacilityDetails=Nom et description de l'hôpital CasePreviousHospitalization.isolated=Isolement @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Veuillez indiquer le moti CasePreviousHospitalization.intensiveCareUnit=Rester dans l'unité de soins intensifs CasePreviousHospitalization.intensiveCareUnitStart=Début du séjour CasePreviousHospitalization.intensiveCareUnitEnd=Fin du séjour - # ClinicalVisit clinicalVisitNewClinicalVisit=Nouvelle visite médicale - ClinicalVisit=Visite médicale ClinicalVisit.bloodPressure=Pression sanguine ClinicalVisit.heartRate=Rythme cardiaque @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Température ClinicalVisit.visitDateTime=Date et heure de visite ClinicalVisit.visitingPerson=Visite effectuée par ClinicalVisit.visitRemarks=Commentaire du médecin - ClinicalVisitExport.caseUuid=ID du cas ClinicalVisitExport.caseName=Nom du cas - columnAdditionalTests=Tests supplémentaires columnDiseaseShort=Maladie columnLastPathogenTest=Dernier test de pathogène (CT/CQ-Value) columnNumberOfPendingTasks=Tâches en attente columnVaccineName=Nom du vaccin columnVaccineManufacturer=Fabricant du vaccin - - # Community Community=Community Community.archived=Archivé Community.externalID=ID externe - communityActiveCommunities=Communautés actives communityArchivedCommunities=Communautés archivées communityAllCommunities=Toutes les communautés - # Configuration Configuration.Facilities=Etablissements Configuration.Outbreaks=Epidémies Configuration.PointsOfEntry=Point d'entrée Configuration.LineListing=Liste de cas - # Contact contactCancelFollowUp=Annuler le suivi contactCaseContacts=Contacts du cas @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Seulement les contacts avec le cas sour contactOnlyWithSourceCaseInGivenEvent=Seulement les contacts avec le cas source lié à l'événement spécifié contactFollowUpDay=Jour contactQuarantineNotOrdered=Quarantaine non prescrite -contactPersonPhoneNumber = Numéro de téléphone de la personne de contact -contactSourceCase = Cas source +contactPersonPhoneNumber=Numéro de téléphone de la personne de contact +contactSourceCase=Cas source contactMergeDuplicates=Fusionner les doublons contactBackToDirectory=Retour au répertoire des contacts contactOpenCasesGuide=Ouvrir le guide des contacts @@ -703,7 +675,6 @@ contactOpenMergeGuide=Ouvrir le guide de fusion contactCalculateCompleteness=Calculer la complétude contactNumberOfDuplicatesDetected=%d doublons potentiels détectés contactFilterWithDifferentRegion=Afficher les doublons avec des régions différentes - Contact=Contact Contact.additionalDetails=Commentaire général Contact.caseClassification=Classification du cas source @@ -720,10 +691,10 @@ Contact.community=Communauté responsable Contact.contactClassification=Classification du contact Contact.contactOfficer=Agent de contact responsable Contact.contactOfficerUuid=Agent de contact responsable -Contact.contactIdentificationSource = Source d'identification du contact -Contact.contactIdentificationSourceDetails = Détails de la source d'identification du contact -Contact.tracingApp = Application de suivi -Contact.tracingAppDetails = Détails de l''''application de suivi, par exemple, nom +Contact.contactIdentificationSource=Source d'identification du contact +Contact.contactIdentificationSourceDetails=Détails de la source d'identification du contact +Contact.tracingApp=Application de suivi +Contact.tracingAppDetails=Détails de l''''application de suivi, par exemple, nom Contact.contactProximity=Type de contact Contact.contactProximityLongForm=Type de contact - si plusieurs contacts choisissez la proximité de contact la plus proche Contact.contactStatus=Statut du contact @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date de modification du statut de suivi Contact.followUpStatusChangeUser=Utilisateur responsable Contact.expectedFollowUpUntil=Suivi attendu jusqu'au Contact.vaccinationStatus=Statut de la vaccination - # ContactExport ContactExport.address=Adresse ContactExport.addressDistrict=Département de l'adresse @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Vivant dashboardApplyCustomFilter=Appliquer ce filtre personnalisé @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Nombre dashboardProportion=Proportion (%) dashboardViewAsColumnChart=Voir comme Histogramme dashboardViewAsBarChart=Voir comme Diagramme à barres - defaultRegion=Région par défaut defaultDistrict=Département par défaut defaultCommunity=Communauté par défaut defaultFacility=Etablissement par défaut defaultLaboratory=Laboratoire par défaut defaultPointOfEntry=Point d'entrée par défaut - devModeCaseCount=Nombre de cas générés devModeCaseDisease=Maladie des cas devModeCaseDistrict=Département des cas @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Nouveaux cas DiseaseBurden.caseDeathCount=Nb de morts DiseaseBurden.casesDifference=Dynamique @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=Tx mort. DiseaseBurden.eventCount=Nb d'évènements DiseaseBurden.outbreakDistrictCount=Départements épidémiques DiseaseBurden.previousCaseCount=Cas précédents - # District districtActiveDistricts=Départements actifs districtArchivedDistricts=Départements archivés districtAllDistricts=Tous les départements - District=District District.archived=Archivé District.epidCode=Code epid District.growthRate=Taux de croissance District.population=Population District.externalID=ID externe - epiDataNoSourceContacts=Aucun contact source n'a été créé pour ce cas - EpiData=Données épidémiologiques EpiData.areaInfectedAnimals=Résidence, travail ou voyage dans une région où les animaux infectés ont été confirmés EpiData.exposureDetailsKnown=Détails d'exposition connus EpiData.exposures=Expositions -EpiData.activityAsCaseDetailsKnown = Détails connus de l'activité -EpiData.activitiesAsCase = Activités comme cas +EpiData.activityAsCaseDetailsKnown=Détails connus de l'activité +EpiData.activitiesAsCase=Activités comme cas EpiData.highTransmissionRiskArea=Résider ou travailler dans une région présentant un risque élevé de transmission de la maladie, par exemple dans un environnement résidentiel fermé ou dans un camp EpiData.largeOutbreaksArea=Résider ou se rendre dans des pays/territoires/régions connaissant des éclosions plus importantes de transmission locale EpiData.contactWithSourceCaseKnown=Contacts avec cas source connu - # Documents documentUploadDocument=Nouveau document documentNoDocuments=Il n'y a aucun document pour ce %s bulkActionCreatDocuments=Créer des documents d'ordre de quarantaine - # DocumentTemplate DocumentTemplate=Modèle de document DocumentTemplate.buttonUploadTemplate=Télécharger le modèle @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Télécharger également les DocumentTemplate.documentUploadWarning=Avertissement de téléchargement de documents DocumentTemplate.fileTooBig=Les documents ont été générés avec succès, mais au moins un document n'a pas pu être téléchargé sur son entité car sa taille de fichier dépasse la limite de taille de fichier spécifiée de %dMo DocumentTemplate.notUploaded=Les documents n'ont pas pu être téléchargés dans les entités suivantes \: - # Event eventActiveEvents=Événements actifs eventArchivedEvents=Événements archivés @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=Voir les événements du même établisse eventNoDisease=No disease eventGroups=Groupes d'événements eventGroupsMultiple=Cet événement est lié à %s groupes d'événements - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Seuls les événements qui ne sont pas encore partagés avec l'outil de rapport eventFilterOnlyEventsSharedWithExternalSurvTool=Seulement les événements déjà partagés avec l'outil de rapport eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Seuls les événements ayant été modifiés depuis le dernier partage avec l'outil de rapport - Event=Événement Event.caseCount=Cas Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Token interne Event.eventGroups=Groupes Event.latestEventGroup=Dernier groupe d'évènement Event.eventGroupCount=Nombre de groupes d'événements - # Event action EventAction.eventUuid=Id d’événement EventAction.eventTitle=Titre de l'événement @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Date de modification de l'action EventAction.actionStatus=Statut de l'action EventAction.actionPriority=Priorité de l'action EventAction.actionLastModifiedBy=Dernière action modifiée par - # Event action export EventActionExport.eventDate=Date de l'événement - #Event export - # EventParticipant eventParticipantAddPerson=Ajouter un participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Seulement les contacts avec le cas source lié à l'événement spécifié @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Créer un nouveau participant à l'événement eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Participant à l'événement EventParticipant.contactCount=Contact count EventParticipant.event=Événement @@ -1238,7 +1190,6 @@ EventParticipant.uuid=ID de participant à l'événement EventParticipant.region=Région responsable EventParticipant.district=Département responsable EventParticipant.vaccinationStatus=Statut de la vaccination - #EventParticipant export EventParticipantExport.eventParticipantU=Maladie d'événement EventParticipantExport.eventDisease=Maladie d'événement @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Information d'échantillon EventParticipantExport.personNationalHealthId=Id national de santé de la personne EventParticipantExport.eventParticipantInvolvmentDescription=Description de la participation EventParticipantExport.eventParticipantUuid=ID de participant à l'événement - # Event Group EventGroup=Groupe d'événements EventGroup.uuid=Identifiant du groupe EventGroup.name=Nom du groupe EventGroup.eventCount=Nombre d'événements - # Expo export=Exporter exportBasic=Export basique @@ -1285,18 +1234,15 @@ exportCaseCustom=Export personnalisé exportNewExportConfiguration=Nouvelle configuration d'export exportEditExportConfiguration=Modifier la configuration d'export exportConfigurationData=Données de configuration - ExportConfiguration.NAME=Nom de la configuration ExportConfiguration.myExports=Mes exports ExportConfiguration.sharedExports=Exports partagés ExportConfiguration.sharedToPublic=Partagé au public - exposureFlightNumber=Numéro de vol exposureTimePeriod=Période exposureSourceCaseName=Nom du cas source - Exposure=Exposure -Exposure.probableInfectionEnvironment= Environnement d'infection probable +Exposure.probableInfectionEnvironment=Environnement d'infection probable Exposure.startDate=Début d'exposition Exposure.endDate=Fin d'exposition Exposure.exposureType=Type d'activité @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Rôle Exposure.largeAttendanceNumber=Plus de 300 participants - # Facility facilityActiveFacilities=Établissements de santé actifs facilityArchivedFacilities=Établissements archivés facilityAllFacilities=Tous les établissements - Facility.CONFIGURED_FACILITY=Configurer les Etablissements Facility.NO_FACILITY=Maison ou autre lieu Facility.OTHER_FACILITY=Autre établissement - Facility=Facility Facility.additionalInformation=Informations complémentaires Facility.archived=Archivé @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Propriété publique Facility.region=Région Facility.type=Type d'établissement Facility.typeGroup=Catégorie de l'établissement -Facility.contactPersonFirstName = Prénom de la personne de contact -Facility.contactPersonLastName = Nom de la personne de contact -Facility.contactPersonPhone = Numéro de téléphone de la personne de contact -Facility.contactPersonEmail = E-mail de la personne de contact - +Facility.contactPersonFirstName=Prénom de la personne de contact +Facility.contactPersonLastName=Nom de la personne de contact +Facility.contactPersonPhone=Numéro de téléphone de la personne de contact +Facility.contactPersonEmail=E-mail de la personne de contact FeatureConfiguration.districtName=Département FeatureConfiguration.enabled=Liste de lignes activée? FeatureConfiguration.endDate=Date de fin - # Formats formatNumberOfVisitsFormat=%d (%d manqué) formatNumberOfVisitsLongFormat=%d visites (%d manquées) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=ID de suivi FollowUp.person=Personne de suivi FollowUp.reportDate=Date du rapport FollowUp.followUpUntil=Suivi jusqu’à - # HealthConditions HealthConditions=Etat de santé HealthConditions.tuberculosis=Tuberculose @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthme HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodéficience y compris VIH - # Import importDetailed=Import détaillé importDownloadCaseImportTemplate=Télécharger le modèle pour import @@ -1440,7 +1378,6 @@ importSkips=%d ignoré importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Écraser les entrées existantes par des données importées - #Lab Message LabMessage=Message de laboratoire LabMessage.labMessageDetails=Détails du message @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Récupérer les messages du laboratoire labMessageProcess=Processus labMessageNoDisease=Aucune maladie testée trouvée @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=Aucun nouveau message disponible labMessageForwardedMessageFound=Messages de laboratoire transférés connexes trouvés labMessageLabMessagesList=Liste des messages de laboratoire labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Liste de cas lineListingAddLine=Ajouter une ligne @@ -1502,7 +1437,6 @@ lineListingEnableAll=Tout activer lineListingDisableAllShort=Tout désactiver lineListingEndDate=Date de fin lineListingSetEndDateForAll=Définir la date de fin pour tous - # Location Location=Lieu Location.additionalInformation=Information Additionnelle @@ -1519,38 +1453,38 @@ Location.latLon=Lat et lon GPS Location.latLonAccuracy=Précision GPS en m Location.longitude=Longitude GPS Location.postalCode=Code postal +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=Département Location.community=Commune Location.street=Rue -Location.contactPersonFirstName = Prénom de la personne de contact -Location.contactPersonLastName = Nom de la personne de contact -Location.contactPersonPhone = Numéro de téléphone de la personne de contact -Location.contactPersonEmail = E-mail de la personne de contact - +Location.contactPersonFirstName=Prénom de la personne de contact +Location.contactPersonLastName=Nom de la personne de contact +Location.contactPersonPhone=Numéro de téléphone de la personne de contact +Location.contactPersonEmail=E-mail de la personne de contact # Login Login.doLogIn=Se connecter Login.login=Se connecter Login.password=mot de passe Login.username=nom d'utilisateur - #LoginSidebar LoginSidebar.diseaseDetection=Détection de maladie LoginSidebar.diseasePrevention=Prévention de maladie LoginSidebar.outbreakResponse=Réponse à l'épidémie LoginSidebar.poweredBy=Propulsé par - # Messaging messagesSendSMS=Envoyer un SMS messagesSentBy=Envoyé par messagesNoSmsSentForCase=Aucun SMS envoyé à la personne cas messagesNoPhoneNumberForCasePerson=La personne cas n'a pas de numéro de téléphone -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Envoyer un nouveau SMS -messagesNumberOfMissingPhoneNumbers = Nombre de cas sélectionnés sans numéro de téléphone\: %s -messagesCharacters = Caractères \: %d / 160 -messagesNumberOfMessages = N° de messages \: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Envoyer un nouveau SMS +messagesNumberOfMissingPhoneNumbers=Nombre de cas sélectionnés sans numéro de téléphone\: %s +messagesCharacters=Caractères \: %d / 160 +messagesNumberOfMessages=N° de messages \: %d # Main Menu mainMenuAbout=À propos de mainMenuCampaigns=Campagnes @@ -1569,7 +1503,6 @@ mainMenuTasks=Tâches mainMenuUsers=Utilisateurs mainMenuAggregateReports=mSERS mainMenuShareRequests=Partages - MaternalHistory.childrenNumber=Nombre total d'enfants MaternalHistory.ageAtBirth=Âge de la mère à l'accouchement MaternalHistory.conjunctivitis=Conjonctivite @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Autres complications MaternalHistory.otherComplicationsOnset=Date d'apparition MaternalHistory.otherComplicationsMonth=Mois de grossesse MaternalHistory.otherComplicationsDetails=Détails des complications - # Outbreak outbreakAffectedDistricts=Départements affectés outbreakNoOutbreak=Pas d'épidémie outbreakNormal=Normal outbreakOutbreak=Epidémie - # PathogenTest pathogenTestAdd=Ajouter un test pathogène pathogenTestCreateNew=Créer un nouveau test pathogène @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nouveau résultat pathogenTestNewTest=Nouveau résultat de test pathogenTestRemove=Supprimer ce test d'agent pathogène pathogenTestSelect=Sélectionnez le test d'agent pathogène - PathogenTest=Test pathogène PathogenTests=Tests pathogènes PathogenTest.fourFoldIncreaseAntibodyTiter=Augmentation de 4 fois du titre d’anticorps @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=ID de commande externe PathogenTest.preliminary=Préliminaire - # Person personPersonsList=Liste des personnes personCreateNew=Créer une nouvelle personne @@ -1652,7 +1581,6 @@ personLinkToContacts=Voir les contacts pour cet événement personsReplaceGeoCoordinates=Remplacez également les coordonnées existantes. Attention \: cela pourrait remplacer les coordonnées qui ont été définies intentionnellement différemment \! personsSetMissingGeoCoordinates=Définir les coordonnées géographiques manquantes personsUpdated=Personnes mises à jour - Person=Personne Person.additionalDetails=Commentaire général Person.address=Adresse du domicile @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Nom de naissance Person.birthCountry=Pays de naissance Person.citizenship=Nationalité - -personContactDetailOwner = Propriétaire -personContactDetailOwnerName = Nom du propriétaire -personContactDetailThisPerson = Cette personne -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Propriétaire +personContactDetailOwnerName=Nom du propriétaire +personContactDetailThisPerson=Cette personne +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Points d’entrée actifs pointOfEntryArchivedPointsOfEntry=Points d'entrée archivés pointOfEntryAllPointsOfEntry=Tous les points d'entrée - PointOfEntry.OTHER_AIRPORT=Autre aéroport PointOfEntry.OTHER_SEAPORT=Autre port maritime PointOfEntry.OTHER_GROUND_CROSSING=Autre point de passage terrestre PointOfEntry.OTHER_POE=Autre point d'entrée - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Type de point d'entrée PointOfEntry.active=Actif ? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=ID externe PointOfEntry.archived=Archived - populationDataMaleTotal=Total masculin populationDataFemaleTotal=Total féminin - PortHealthInfo=Information relative au service de santé portuaire PortHealthInfo.airlineName=Nom de la compagnie aérienne PortHealthInfo.flightNumber=Numéro de vol @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Spécifier le type de transport PortHealthInfo.departureLocation=Lieu de départ du voyage PortHealthInfo.finalDestination=Destination finale PortHealthInfo.details=Détails du point d'entrée - # Prescription prescriptionNewPrescription=Nouvelle prescription - Prescription=Prescription Prescription.additionalNotes=Notes Supplémentaires Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Type de prescription Prescription.route=Voie Prescription.routeDetails=Préciser Prescription.typeOfDrug=Type de médicament - PrescriptionExport.caseUuid=ID du cas PrescriptionExport.caseName=Nom du cas - # Continent continentActiveContinents=Continents actifs continentArchivedContinents=Continents archivés continentAllContinents=Tous les continents - Continent=Continent Continent.archived=Archivé Continent.externalId=ID externe Continent.defaultName=Nom par défaut Continent.displayName=Nom - # Subcontinent subcontinentActiveSubcontinents=Sous-continents actifs subcontinentArchivedSubcontinents=Sous-continents archivés subcontinentAllSubcontinents=Tous les sous-continents - Subcontinent=Subcontinent Subcontinent.archived=Archivé Subcontinent.externalId=ID externe Subcontinent.defaultName=Nom par défaut Subcontinent.displayName=Nom Subcontinent.continent=Nom du continent - # Country countryActiveCountries=Pays actifs countryArchivedCountries=Pays archivés countryAllCountries=Tous les pays - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Sous-continent - # Region regionActiveRegions=Régions actives regionArchivedRegions=Régions archivées regionAllRegions=Toutes les régions - Region=Region Region.archived=Archivé Region.epidCode=Code Epid @@ -1861,7 +1771,6 @@ Region.growthRate=Taux de croissance Region.population=Population Region.externalID=ID externe Region.country=Pays - # Sample sampleCreateNew=Créer un nouvel échantillon sampleIncludeTestOnCreation=Créer de suite un résultat de test pour cet échantillon @@ -1888,7 +1797,6 @@ sampleActiveSamples=Échantillons actifs sampleArchivedSamples=Échantillons archivés sampleAllSamples=Tous les échantillons sampleAssociationType=Type d'échantillon - Sample=Échantillon Sample.additionalTestingRequested=Tests supplémentaires à effectuer ? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=ID d’échantillon Sample.samplePurpose=Destination de l'échantillon Sample.samplingReason=Motif du prélèvement Sample.samplingReasonDetails=Détails du motif du prélèvement - SampleExport.additionalTestingRequested=Des tests supplémentaires ont-ils été demandés? SampleExport.personAddressCaption=Adresse du cas/ contact/ personne participant à l'événement SampleExport.personAge=Âge du cas/ contact/ personne participant à l'événement SampleExport.caseDistrict=Département du cas SampleExport.caseCommunity=Communauté du cas SampleExport.caseFacility=Etablissement de cas -SampleExport.contactRegion = Région du contact -SampleExport.contactDistrict = Département du contact -SampleExport.contactCommunity = Communauté de contact +SampleExport.contactRegion=Région du contact +SampleExport.contactDistrict=Département du contact +SampleExport.contactCommunity=Communauté de contact SampleExport.caseOutcome=Issue du cas SampleExport.caseRegion=Région de cas SampleExport.caseReportDate=Date de signalement du cas SampleExport.personSex=Sexe du cas/ contact/ personne participant à l'événement SampleExport.caseUuid=UUID du cas -SampleExport.contactUuid = UUID du contact -SampleExport.contactReportDate = Date du signalement +SampleExport.contactUuid=UUID du contact +SampleExport.contactReportDate=Date du signalement SampleExport.id=Id d’échantillon SampleExport.sampleReportDate=Date du rapport de l' échantillon SampleExport.noTestPossibleReason=Raison possible de l'absence de test @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date et heure du dernier test supplémentaires SampleExport.totalBilirubin=La bilirubine totale du dernier test supplémentaire SampleExport.urea=Urée du dernier test supplémentaire SampleExport.wbcCount=Nombre de WBC du dernier test supplémentaire - # Immunization Immunization=Immunisation Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Statut de gestion -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Détails du nombre de doses -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date de la première vaccination -Immunization.lastVaccinationDate = Date de la dernière vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Liste des immunisations +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Statut de gestion +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Détails du nombre de doses +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date de la première vaccination +Immunization.lastVaccinationDate=Date de la dernière vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Liste des immunisations linkImmunizationToCaseButton=Lier le cas -openLinkedCaseToImmunizationButton = Ouvrir le cas -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Créer la nouvelle immunisation quand même -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Ouvrir le cas +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Créer la nouvelle immunisation quand même +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Ajouter un filtre statisticsAttribute=Attribut @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Diviseur d'incidence statisticsDataDisplayed=Données affichées statisticsOpenSormasStats=Ouvrir Sormas-Stats - # Symptoms symptomsLesionsLocations=Localisation des lésions symptomsMaxTemperature=Température maximale du corps en ° C symptomsSetClearedToNo=Donner aux champs vides la valeur Non symptomsSetClearedToUnknown=Définir manquant sur Inconnu - Symptoms=Symptômes Symptoms.abdominalPain=Douleurs abdominales Symptoms.alteredConsciousness=Altéré de la conscience @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Étourdissements (en se levant d'une position assise ou couchée) Symptoms.highOrLowBloodPressure=Tension artérielle trop élevée ou trop faible (mesurée) Symptoms.urinaryRetention=Rétention urinaire - # Task taskMyTasks=Mes tâches taskNewTask=Nouvelle tâche @@ -2284,7 +2186,6 @@ taskOfficerTasks=Tâches de l’agent taskActiveTasks=Tâches actives taskArchivedTasks=Tâches archivées taskAllTasks=Toutes les tâches - Task=Tâches Task.assigneeReply=Commentaires sur l'exécution Task.assigneeUser=Attribué à @@ -2306,7 +2207,6 @@ Task.taskType=Type de tâche Task.taskAssignee=Tâche assignée Task.taskPriority=Priorité de la tâche Task.travelEntry=Entrées de voyage - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Créer un cas travelEntryOnlyRecoveredEntries=Seulement les entrées récupérées @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Créer un traitement treatmentNewTreatment=Nouveau traitement treatmentOpenPrescription=Ouvrir une prescription - Treatment=Treatment Treatment.additionalNotes=Notes supplémentaires Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Détails du traitement Treatment.treatmentType=Type de traitement Treatment.typeOfDrug=Type de médicament Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=ID du cas TreatmentExport.caseName=Nom du cas - # User userNewUser=Nouvel utilisateur userResetPassword=Créer un nouveau mot de passe @@ -2402,7 +2297,6 @@ syncUsers=Synchroniser l'utilisateur syncErrors=%d erreur(s) syncSuccessful=%d Synced syncProcessed=%d/%d traités - User=Utilisateur User.active=Actif ? User.associatedOfficer=Agent associé @@ -2417,12 +2311,10 @@ User.userName=Nom d’utilisateur User.userRoles=Rôles d’utilisateur User.address=Adresse User.uuid=UUID - # Vaccination -vaccinationNewVaccination = Nouvelle vaccination -vaccinationNoVaccinationsForPerson = Il n'y a pas de vaccins pour cette personne -vaccinationNoVaccinationsForPersonAndDisease = Il n'y a pas de vaccins pour cette personne et cette maladie - +vaccinationNewVaccination=Nouvelle vaccination +vaccinationNoVaccinationsForPerson=Il n'y a pas de vaccins pour cette personne +vaccinationNoVaccinationsForPersonAndDisease=Il n'y a pas de vaccins pour cette personne et cette maladie Vaccination=Vaccination Vaccination.uuid=ID de la vaccination Vaccination.reportDate=Date du rapport @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=Code ATC Vaccination.vaccinationInfoSource=Source d'infos de vaccination Vaccination.pregnant=Important Vaccination.trimester=Trimestre - # Views View.actions=Répertoire d'actions View.groups=Répertoire de groupes - View.aggregatereports=Rapports agrégés (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Répertoire des campagnes View.campaign.campaigns.short=Campagnes View.campaign.campaigndata=Données de la campagne @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Formulaire de données de campagne View.campaign.campaigndata.dataform.short=Formulaire de données View.campaign.campaignstatistics=Statistiques de la campagne View.campaign.campaignstatistics.short=Statistiques de la campagne - View.cases=Répertoire des cas View.cases.merge=Fusionner les cas en double View.cases.archive=Archive de cas @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Suivi médical View.cases.maternalhistory=Historique Maternel View.cases.porthealthinfo=Information/service de santé portuaire View.cases.visits=Visites de cas - View.persons=Répertoire de personnes View.persons.data=Informations sur la personne - View.configuration.communities=Configuration des communautés View.configuration.communities.short=Communautés View.configuration.districts=Configuration des départements @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Données de population View.configuration.populationdata.short=Population View.configuration.linelisting=Configuration de la liste des lignes View.configuration.linelisting.short=Liste des lignes - View.contacts=Répertoire des contacts View.contacts.archive=Archive de contact View.contacts.epidata=Données épidémiologiques du contact @@ -2520,11 +2405,9 @@ View.contacts.merge=Fusionner les contacts en double View.contacts.person=Personne de contact View.contacts.sub= View.contacts.visits=Visites de suivi du contact - View.dashboard.contacts=Tableau de bord des contacts View.dashboard.surveillance=Tableau de bord de surveillance View.dashboard.campaigns=Tableau de bord des campagnes - View.events=Répertoire d'événements View.events.archive=Événements-archives View.events.data=Informations sur l'événement @@ -2532,36 +2415,25 @@ View.events.eventactions=Actions de l'événement View.events.eventparticipants=Participants à l'événement View.events.sub= View.events.eventparticipants.data=Informations sur les participants de l'événement - View.samples.labMessages=Répertoire de messages de laboratoire - View.reports=Rapports hebdomadaires View.reports.sub= - View.samples=Répertoire d'échantillons View.samples.archive=Archive d'échantillon View.samples.data=Information d'échantillon View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistiques  View.statistics.database-export=Exportation de base de données - View.tasks=Gestion des tâches View.tasks.archive=Archive tâche View.tasks.sub= - View.users=Gestion des utilisateurs View.users.sub= - View.shareRequests=Partager les demandes - # Visit visitNewVisit=Nouvelle visite - Visit=Visite Visit.person=Personne visitée Visit.symptoms=Symptômes @@ -2573,24 +2445,19 @@ Visit.visitUser=Agent de visite Visit.disease=Maladie Visit.reportLat=Signaler la latitude Visit.reportLon=Signaler la longitude - # WeeklyReport weeklyReportNoReport=Rapport manquant weeklyReportOfficerInformants=Informateurs weeklyReportsInDistrict=Rapports hebdomadaires dans %s weeklyReportRegionOfficers=Agents weeklyReportRegionInformants=Informateurs - WeeklyReport.epiWeek=Semaine de l’Epi WeeklyReport.year=Année  - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cas signalés - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Soumis par l'informateur le WeeklyReportInformantSummary.totalCaseCount=Cas signalés par l'informateur - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Nombre d'informateurs WeeklyReportOfficerSummary.informantReports=Nombre de rapports d'informateurs @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Rapports d'agents à zéro cas WeeklyReportOfficerSummary.officer=Agent WeeklyReportOfficerSummary.officerReportDate=Soumis par l'agent le WeeklyReportOfficerSummary.totalCaseCount=Cas signalés par l’agent - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Nombre d'informateurs WeeklyReportRegionSummary.informantReports=Nombre de rapports d'informateurs @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Nombre d’agents WeeklyReportRegionSummary.officerReports=Nombre de rapports d’agents WeeklyReportRegionSummary.officerReportPercentage=Pourcentage WeeklyReportRegionSummary.officerZeroReports=Rapports d'agents à zéro cas - # SORMAS to SORMAS SormasToSormasOptions.organization=Organisation SormasToSormasOptions.withAssociatedContacts=Partager les contacts associés @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Partagé par sormasToSormasSharedDate=Le sormasToSormasSentFrom=Envoyé depuis sormasToSormasSendLabMessage=Envoyer à une autre organisation -sormasToSormasOriginInfo = Envoyé depuis +sormasToSormasOriginInfo=Envoyé depuis BAGExport=Export BAG - # Survnet Gateway ExternalSurveillanceToolGateway.title=Outil de rapport ExternalSurveillanceToolGateway.send=Envoyer à l'outil de rapport @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirmer l'envoi ExternalSurveillanceToolGateway.notTransferred=Pas encore envoyé à l'outil de rapport ExternalSurveillanceToolGateway.confirmDelete=Confirmer la suppression ExternalSurveillanceToolGateway.excludeAndSend=Envoyer %d sur %d - patientDiaryRegistrationError=Impossible d'enregistrer la personne dans le journal du patient. patientDiaryCancelError=Impossible d'annuler le suivi du journal externe patientDiaryPersonNotExportable=Impossible d'exporter la personne vers le journal du patient. La personne doit avoir une date de naissance valide et un numéro de téléphone ou une adresse électronique valide. - showPlacesOnMap=Afficher - changeUserEmail=Changer l'adresse de messagerie - SurveillanceReport=Rapport SurveillanceReport.reportingType=Type de Rapport SurveillanceReport.creatingUser=Créer un nouvel utilisateur @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Détails de l'établissement SurveillanceReport.notificationDetails=Détails surveillanceReportNewReport=Nouveau rapport surveillanceReportNoReportsForCase=Il n'y a aucun rapport pour ce cas - cancelExternalFollowUpButton=Annuler le suivi externe createSymptomJournalAccountButton=Créer un compte PIA registerInPatientDiaryButton=S'inscrire à l'eDiary CLIMEDO @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Ouvrir en PIA openInPatientDiaryButton=Ouvrir dans CLIMEDO cancelExternalFollowUpPopupTitle=Annuler le suivi externe - # User role/right exportUserRoles=Exporter les rôles des utilisateurs userRights=Droits de l'utilisateur userRight=Droits de l'utilisateur +UserRight.caption=Légende UserRight.description=Description UserRight.jurisdiction=Juridiction UserRight.jurisdictionOfRole=Juridiction du rôle - SormasToSormasShareRequest.uuid=ID de la requête SormasToSormasShareRequest.creationDate=Date de la demande SormasToSormasShareRequest.dataType=Type de données SormasToSormasShareRequest.status=Statut -SormasToSormasShareRequest.cases = Cas -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Évènements -SormasToSormasShareRequest.organizationName = Organisation de l'expéditeur -SormasToSormasShareRequest.senderName = Nom de l'expéditeur -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Commentaire -SormasToSormasShareRequest.responseComment = Réponse au commentaire - -SormasToSormasPerson.personName = Nom de la personne -SormasToSormasPerson.sex = Sexe -SormasToSormasPerson.birthdDate = Date de naissance -SormasToSormasPerson.address = Adresses - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cas +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Évènements +SormasToSormasShareRequest.organizationName=Organisation de l'expéditeur +SormasToSormasShareRequest.senderName=Nom de l'expéditeur +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Commentaire +SormasToSormasShareRequest.responseComment=Réponse au commentaire +SormasToSormasPerson.personName=Nom de la personne +SormasToSormasPerson.sex=Sexe +SormasToSormasPerson.birthdDate=Date de naissance +SormasToSormasPerson.address=Adresses +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_hi-IN.properties b/sormas-api/src/main/resources/captions_hi-IN.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_hi-IN.properties +++ b/sormas-api/src/main/resources/captions_hi-IN.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_hr-HR.properties b/sormas-api/src/main/resources/captions_hr-HR.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_hr-HR.properties +++ b/sormas-api/src/main/resources/captions_hr-HR.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_it-CH.properties b/sormas-api/src/main/resources/captions_it-CH.properties index 82a2065ce44..7087149cef9 100644 --- a/sormas-api/src/main/resources/captions_it-CH.properties +++ b/sormas-api/src/main/resources/captions_it-CH.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Tutto area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Dizionario dei dati (XLSX) aboutSormasWebsite=Sito SORMAS ufficiale aboutTechnicalManual=Manuale tecnico (PDF) aboutWhatsNew=Cosa c'è di nuovo? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=Nuova azione actionNoActions=Non ci sono azioni per questo %s actionCreatingLabel=Creato il %s di %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=aggiornato alle %s - Action=Azione Action.title=Titolo Action.description=Descrizione @@ -100,14 +96,13 @@ Action.actionContext=Contesto dell' azione Action.actionStatus=Stato dell' azione Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Applica filtro actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assegna nuovo numero epid actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Annulla actionClear=Cancella actionClearAll=Cancella tutto @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=Nuovi risultati del test - AdditionalTest=Test supplementare AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Gas ematico arterioso/venoso @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Data e ora del risultato AdditionalTest.totalBilirubin=Totale bilirubina (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=Conteggio globuli bianchi (x10^9/L) - aggregateReportDeathsShort=M aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Settimana scorsa @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Conferme del laboratorio AggregateReport.deaths=Decessi AggregateReport.healthFacility=Struttura AggregateReport.pointOfEntry=Luogo d’entrata nel paese - -areaActiveAreas = Aree attive -areaArchivedAreas = Aree archiviate -areaAllAreas = Tutte le aree -Area.archived = Archiviato -Area.externalId = ID esterno - +areaActiveAreas=Aree attive +areaArchivedAreas=Aree archiviate +areaAllAreas=Tutte le aree +Area.archived=Archiviato +Area.externalId=ID esterno # Bulk actions bulkActions=Azioni in blocco -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Annulla follow-up bulkCaseClassification=Cambia classificazione caso bulkCaseOutcome=Modifica risultato caso @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Modificare l'addetto di sorveglianza bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Campagne attive campaignAllCampaigns=Tutte le campagne @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campagna Campaign.name=Nome Campaign.description=Descrizione @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campagna -CampaignFormData.campaignFormMeta = Formulario -CampaignFormData.formDate = Data formulario -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campagna +CampaignFormData.campaignFormMeta=Formulario +CampaignFormData.formDate=Data formulario +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Elenco dei casi caseInfrastructureDataChanged=Dati dell'infrastruttura sono cambiati @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Solo casi con quarantena estesa caseFilterWithReducedQuarantine=Solo casi con quarantena ridotta caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Solo casi con eventi caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Nome della struttura caseNewCase=Nuovo caso casePlaceOfStay=Luogo di soggiorno @@ -352,7 +335,7 @@ caseArchivedCases=Casi archiviati caseAllCases=Tutti i casi caseTransferCase=Trasferisci caso caseTransferCases=Trasferisci casi -caseReferToFacility=Riferire caso ad una struttura +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Scegli un caso esistente caseCreateCase=Crea nuovo caso caseDefaultView=Visualizzazione predefinita @@ -374,10 +357,10 @@ convertEventParticipantToCase=Creare caso dal partecipante all'evento con risult convertContactToCase=Creare caso dal contatto con risultato positivo al test? caseSearchSpecificCase=Cerca caso specifico caseSearchCase=Cerca caso -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Caso CaseData.additionalDetails=Commenti generali CaseData.caseClassification=Classificazione caso @@ -445,7 +428,7 @@ CaseData.reportLat=Segnala latitudine GPS CaseData.reportLon=Segnala longitudine GPS CaseData.reportLatLonAccuracy=Segnala la precisione GPS in m CaseData.sequelae=Malattie conseguenti -CaseData.sequelaeDetails=Descrivi malattie conseguenti +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=In passato è stata effettuata una vaccinazione contro il vaiolo? CaseData.smallpoxVaccinationScar=È presente una cicatrice di vaccinazione contro il vaiolo? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Indirizzo CaseExport.addressRegion=Indirizzo Cantone @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Ospedalizzazione CaseHospitalization.admissionDate=Data della visita o dell’ammissione @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Inizio del ricovero CaseHospitalization.intensiveCareUnitEnd=Fine del ricovero CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Descrizione errore caseImportMergeCase=Sovrascrivi il caso esistente con modifiche dal caso importato? - # CasePreviousHospitalization CasePreviousHospitalization=Ricoveri precedenti CasePreviousHospitalization.admissionAndDischargeDate=Data di ammissione e dimissione -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Data di ammissione CasePreviousHospitalization.description=Descrizione CasePreviousHospitalization.dischargeDate=Data di dimissione o trasferimento CasePreviousHospitalization.editColumn=Modifica +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Ospedale CasePreviousHospitalization.healthFacilityDetails=Nome e descrizione ospedale CasePreviousHospitalization.isolated=Isolamento @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=Nuove valutazioni cliniche - ClinicalVisit=Valutazioni cliniche ClinicalVisit.bloodPressure=Pressione sanguigna ClinicalVisit.heartRate=Battito cardiaco @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperatura ClinicalVisit.visitDateTime=Data e ora della visita ClinicalVisit.visitingPerson=Medico curante ClinicalVisit.visitRemarks=Osservazioni cliniche - ClinicalVisitExport.caseUuid=ID caso ClinicalVisitExport.caseName=Nome caso - columnAdditionalTests=Test supplementari columnDiseaseShort=Malattia columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Compiti pendenti columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archiviato Community.externalID=ID esterno - communityActiveCommunities=Comuni attivi communityArchivedCommunities=Comunit archiviati communityAllCommunities=Tutte i comuni - # Configuration Configuration.Facilities=Strutture Configuration.Outbreaks=Focolai Configuration.PointsOfEntry=Punti d'ingresso nel paese Configuration.LineListing=Line listing/elenco linee - # Contact contactCancelFollowUp=Annulla follow-up contactCaseContacts=Contatti caso @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Giorno contactQuarantineNotOrdered=Nessuna quarantena ordinata -contactPersonPhoneNumber = Numero Di Telefono Del Contatto -contactSourceCase = Source case +contactPersonPhoneNumber=Numero Di Telefono Del Contatto +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contatto Contact.additionalDetails=Commenti generali Contact.caseClassification=Classificazione del caso indice @@ -720,10 +691,10 @@ Contact.community=Comunità responsabile Contact.contactClassification=Classificazione contatto Contact.contactOfficer=Responsabile di contatto Contact.contactOfficerUuid=Responsabile di contatto -Contact.contactIdentificationSource = Sorgente di identificazione del contatto -Contact.contactIdentificationSourceDetails = Sorgente dettagli di identificazione del contatto -Contact.tracingApp = Applicazione per il tracciamento -Contact.tracingAppDetails = Dettagli dell'applicazione per il tracciamento, ad esempio il nome +Contact.contactIdentificationSource=Sorgente di identificazione del contatto +Contact.contactIdentificationSourceDetails=Sorgente dettagli di identificazione del contatto +Contact.tracingApp=Applicazione per il tracciamento +Contact.tracingAppDetails=Dettagli dell'applicazione per il tracciamento, ad esempio il nome Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Status contatto @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Indirizzo ContactExport.addressDistrict=Indirizzo distretto @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=In vita dashboardApplyCustomFilter=Applica filtro personalizzato @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Cantone Predefinito defaultDistrict=Distretto Predefinito defaultCommunity=Comune predefinito defaultFacility=Struttura predefinita defaultLaboratory=Laboratorio Predefinito defaultPointOfEntry=Luogo predefinito d'ingresso nel paese - devModeCaseCount=Numero di casi generati devModeCaseDisease=Malattia del caso devModeCaseDistrict=Distretto del caso @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Nuovi casi DiseaseBurden.caseDeathCount=Decessi DiseaseBurden.casesDifference=Dinamica @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=Tasso di letalità DiseaseBurden.eventCount=Numero di eventi DiseaseBurden.outbreakDistrictCount=Distretti con focolai DiseaseBurden.previousCaseCount=Casi precedenti - # District districtActiveDistricts=Distretti attivi districtArchivedDistricts=Distretti archiviati districtAllDistricts=Tutti i distretti - District=District District.archived=Archiviato District.epidCode=Codice Epid District.growthRate=Tasso di crescita District.population=Popolazione District.externalID=ID esterno - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Dati epidemiologici EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Eventi attivi eventArchivedEvents=Eventi archiviati @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Evento Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=ID dell'evento EventAction.eventTitle=Titolo evento @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Data cambio dell'azione EventAction.actionStatus=Stato dell' azione EventAction.actionPriority=Priorita dell'azione EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Partecipante all'evento EventParticipant.contactCount=Contact count EventParticipant.event=Evento @@ -1238,7 +1190,6 @@ EventParticipant.uuid=ID partecipante evento EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Evento malattia EventParticipantExport.eventDisease=Evento malattia @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Informazioni sul campione EventParticipantExport.personNationalHealthId=Id sanitario nazionale della persona EventParticipantExport.eventParticipantInvolvmentDescription=Descrizione del coinvolgimento EventParticipantExport.eventParticipantUuid=ID partecipante evento - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Esporta exportBasic=Esportazione di base @@ -1285,18 +1234,15 @@ exportCaseCustom=Esportazione personalizzata caso exportNewExportConfiguration=Nuova configurazione d'esportazione exportEditExportConfiguration=Modifica configurazione d'esportazione exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configurazione nome ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Strutture attive facilityArchivedFacilities=Strutture archiviate facilityAllFacilities=Tutte le strutture - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Casa o altro luogo Facility.OTHER_FACILITY=Altra struttura - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archiviato @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Proprietà pubblica Facility.region=Cantone Facility.type=Tipo di struttura Facility.typeGroup=Categoria della struttura -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=Distretto FeatureConfiguration.enabled=Elenco linee abilitato? FeatureConfiguration.endDate=Data di fine - # Formats formatNumberOfVisitsFormat=%d (%d mancato) formatNumberOfVisitsLongFormat=%d visite (%d mancate) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=ID dell'Azione a seguire FollowUp.person=Persona in carico dell'azione a seguire FollowUp.reportDate=Data del rapporto FollowUp.followUpUntil=Seguito fino a - # HealthConditions HealthConditions=Condizioni di salute HealthConditions.tuberculosis=Tubercolosi @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficienza incluso HIV - # Import importDetailed=Importazione dettagliata importDownloadCaseImportTemplate=Scarica il modello di importazione caso @@ -1440,7 +1378,6 @@ importSkips=%d saltato importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Aggiungi linea @@ -1502,7 +1437,6 @@ lineListingEnableAll=Abilita tutto lineListingDisableAllShort=Disabilita tutto lineListingEndDate=Data di fine lineListingSetEndDateForAll=Imposta la data di fine per tutti - # Location Location=Ubicazione Location.additionalInformation=Informazioni supplementari @@ -1519,38 +1453,38 @@ Location.latLon=GPS latitudine e longitudine Location.latLonAccuracy=Precisione GPS in m Location.longitude=Longitudine GPS Location.postalCode=Codice postale +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Via -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Login Login.login=Login Login.password=Password Login.username=nome utente - #LoginSidebar LoginSidebar.diseaseDetection=Rilevamento malattia LoginSidebar.diseasePrevention=Prevenzione malattia LoginSidebar.outbreakResponse=Risposta al focolaio LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=Info mainMenuCampaigns=Campagne @@ -1569,7 +1503,6 @@ mainMenuTasks=Compiti mainMenuUsers=Utenti mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Numero totale di figli MaternalHistory.ageAtBirth=Età della madre alla nascita del paziente MaternalHistory.conjunctivitis=Congiuntivite @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Altre complicazioni MaternalHistory.otherComplicationsOnset=Data inizio MaternalHistory.otherComplicationsMonth=Mese della gravidanza MaternalHistory.otherComplicationsDetails=Dettagli della complicazione - # Outbreak outbreakAffectedDistricts=Distretti colpiti outbreakNoOutbreak=Nessun focolaio outbreakNormal=Normale outbreakOutbreak=Focolaio - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nuovo risultato pathogenTestNewTest=Risultato nuovo test pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Test patogeno PathogenTests=Test patogeno PathogenTest.fourFoldIncreaseAntibodyTiter=aumento di 4 volte del titolo anticorpale @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Crea una nuova persona @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Persona Person.additionalDetails=General comment Person.address=Indirizzo di casa @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Punti d'ingresso nel paese attivi pointOfEntryArchivedPointsOfEntry=Punti d'ingresso nel paese archiviati pointOfEntryAllPointsOfEntry=Tutti i punti d'ingresso nel paese - PointOfEntry.OTHER_AIRPORT=Altro aereoporto PointOfEntry.OTHER_SEAPORT=Altro porto PointOfEntry.OTHER_GROUND_CROSSING=Altro punto d'ingresso sul terreno PointOfEntry.OTHER_POE=Altri punti di ingresso nel paese - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Tipi di punti d'ingresso nel paese PointOfEntry.active=Attivo? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitudine PointOfEntry.longitude=Longitudine PointOfEntry.externalID=ID esterno PointOfEntry.archived=Archived - populationDataMaleTotal=Totale maschile populationDataFemaleTotal=Totale femminile - PortHealthInfo=Informazioni d'ingresso nel paese PortHealthInfo.airlineName=Nome della compagnia aerea PortHealthInfo.flightNumber=Numero del volo @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specifica il tipo di trasporto PortHealthInfo.departureLocation=Luogo di inizio del viaggio PortHealthInfo.finalDestination=Destinazione Finale PortHealthInfo.details=Dettagli dei punti d'ingresso nel paese - # Prescription prescriptionNewPrescription=Nuova prescrizione - Prescription=Prescription Prescription.additionalNotes=Note aggiuntive Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Tipo di prescrizione Prescription.route=Percorso Prescription.routeDetails=Specificazione percorso Prescription.typeOfDrug=Tipo di medicinale - PrescriptionExport.caseUuid=ID caso PrescriptionExport.caseName=Nome caso - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Cantoni attivi regionArchivedRegions=Cantoni archiviati regionAllRegions=Tutti i Cantoni - Region=Region Region.archived=Archiviato Region.epidCode=Codice Epid @@ -1861,7 +1771,6 @@ Region.growthRate=Tasso di crescita Region.population=Popolazione Region.externalID=ID esterno Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Crea risultato test per questo campione ora @@ -1888,7 +1797,6 @@ sampleActiveSamples=Campioni attivi sampleArchivedSamples=Campioni archiviati sampleAllSamples=Tutti i campioni sampleAssociationType=Tipo di campione - Sample=Campione Sample.additionalTestingRequested=Richiedi ulteriori test? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=ID campione Sample.samplePurpose=Scopo del campione Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Sono stati richiesti test aggiuntivi? SampleExport.personAddressCaption=Indirizzo del caso/contatto/partecipante all’evento SampleExport.personAge=Età del caso/contatto/partecipante di evento SampleExport.caseDistrict=Distretto del caso SampleExport.caseCommunity=Comune del caso SampleExport.caseFacility=Struttura del caso -SampleExport.contactRegion = Cantone dei contatti -SampleExport.contactDistrict = Distretto dei contatti -SampleExport.contactCommunity = Comune del contatto +SampleExport.contactRegion=Cantone dei contatti +SampleExport.contactDistrict=Distretto dei contatti +SampleExport.contactCommunity=Comune del contatto SampleExport.caseOutcome=Esito del caso SampleExport.caseRegion=Cantone del caso SampleExport.caseReportDate=Data del rapporto del caso SampleExport.personSex=Sesso della persona caso/contatto/partecipante all'evento SampleExport.caseUuid=UUID del caso -SampleExport.contactUuid = UUID di contatto -SampleExport.contactReportDate = Data del rapporto del contatto +SampleExport.contactUuid=UUID di contatto +SampleExport.contactReportDate=Data del rapporto del contatto SampleExport.id=Numero seriale del campione SampleExport.sampleReportDate=Data di riferimento del campione SampleExport.noTestPossibleReason=Motivo per non aver eseguito il test @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Data e ora dell'ultimo test supplementare SampleExport.totalBilirubin=Bilirubina totale dell'ultimo test supplementare SampleExport.urea=Urea dell'ultimo test supplementare SampleExport.wbcCount=Numero globuli bianchi dell'ultimo test supplementare - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Aggiungere filtro statisticsAttribute=Attributo @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Tipo statisticsIncidenceDivisor=Divisore di incidenza statisticsDataDisplayed=Dati visualizzati statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localizzazione delle lesioni symptomsMaxTemperature=Temperatura corporea massima in °C symptomsSetClearedToNo=Imposta su No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Sintomi Symptoms.abdominalPain=Dolori addominali Symptoms.alteredConsciousness=Stato di coscienza alterato @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitazioni Symptoms.dizzinessStandingUp=Capogiro (alzandosi in piedi da una posizione seduta o sdraiata) Symptoms.highOrLowBloodPressure=Pressione sanguigna troppo alta o troppo bassa (misurata) Symptoms.urinaryRetention=Ritenzione urinaria - # Task taskMyTasks=Miei compiti taskNewTask=Nuovo compito @@ -2284,7 +2186,6 @@ taskOfficerTasks=Compiti del responsabile taskActiveTasks=Compiti attivi taskArchivedTasks=Compiti archiviati taskAllTasks=Tutti i compiti - Task=Compito Task.assigneeReply=Commenti sull'esecuzione Task.assigneeUser=Assegnato a @@ -2306,7 +2207,6 @@ Task.taskType=Tipo di compito Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Crea trattamento treatmentNewTreatment=Nuovo trattamento treatmentOpenPrescription=Apri prescrizione - Treatment=Treatment Treatment.additionalNotes=Note aggiuntive Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Dettagli del trattamento Treatment.treatmentType=Tipo di trattamento Treatment.typeOfDrug=Tipo di medicinale Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=ID caso TreatmentExport.caseName=Nome caso - # User userNewUser=Nuovo utente userResetPassword=Crea una nuova password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=Utente User.active=Attivo? User.associatedOfficer=Incaricato associato @@ -2417,12 +2311,10 @@ User.userName=Nome utente User.userRoles=Ruoli utente User.address=Indirizzo User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Rapporto aggregato (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Elenco campagne View.campaign.campaigns.short=Campagne View.campaign.campaigndata=Dati campagna @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Formulario dati della campagna View.campaign.campaigndata.dataform.short=Forumulario dati View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Cartella caso View.cases.merge=Unisci casi duplicati View.cases.archive=Archivio Caso @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Decorso clinico View.cases.maternalhistory=Storia materna View.cases.porthealthinfo=Informazioni d'ingresso nel paese View.cases.visits=Visite del caso - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Configurazione comune View.configuration.communities.short=Comuni View.configuration.districts=Configurazione Distretti @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Dati Popolazione View.configuration.populationdata.short=Popolazione View.configuration.linelisting=Configurazione line listing/elenco linee View.configuration.linelisting.short=Line listing/elenco linee - View.contacts=Elenco contatti View.contacts.archive=Archivio Contatti View.contacts.epidata=Dati Epidemiologici del Contatto @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Persona di contatto View.contacts.sub= View.contacts.visits=Visite contatto - View.dashboard.contacts=Panoramica contatti View.dashboard.surveillance=Panoramica sorveglianza View.dashboard.campaigns=Pannello di controllo delle campagne - View.events=Elenco degli eventi View.events.archive=Archivio eventi View.events.data=Informazioni evento @@ -2532,36 +2415,25 @@ View.events.eventactions=Azioni Evento View.events.eventparticipants=Partecipanti dell'evento View.events.sub= View.events.eventparticipants.data=Informazioni sul partecipante all'evento - View.samples.labMessages=Lab Message Directory - View.reports=Rapporti settimanali View.reports.sub= - View.samples=Elenco campioni View.samples.archive=Archivio campioni View.samples.data=Informazioni sul campione View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistiche View.statistics.database-export=Esportazione banca dati - View.tasks=Gestione dei compiti View.tasks.archive=Archivio compiti View.tasks.sub= - View.users=Gestione Utenti View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=Nuova Visita - Visit=Visita Visit.person=Persona visitata Visit.symptoms=Sintomi @@ -2573,24 +2445,19 @@ Visit.visitUser=Responsabile in visita Visit.disease=Malattia Visit.reportLat=Rapporto latitudine Visit.reportLon=Rapporto longitudine - # WeeklyReport weeklyReportNoReport=Rapporto mancante weeklyReportOfficerInformants=Informanti weeklyReportsInDistrict=Rapporti settimanali in %s weeklyReportRegionOfficers=Responsabili weeklyReportRegionInformants=Informanti - WeeklyReport.epiWeek=Settimana Epi WeeklyReport.year=Anno - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Casi segnalati - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Presentazione del rapporto della persona informante WeeklyReportInformantSummary.totalCaseCount=Casi segnalati da informatore - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Numero informanti WeeklyReportOfficerSummary.informantReports=Numero di rapporti di informanti @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Numero di rapporti zero di infor WeeklyReportOfficerSummary.officer=Funzionario WeeklyReportOfficerSummary.officerReportDate=Presentazione del rapporto della persona responsabile WeeklyReportOfficerSummary.totalCaseCount=Casi segnalati dal responsabile - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Numero informanti WeeklyReportRegionSummary.informantReports=Numero di rapporti di informanti @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Numero di responsabili WeeklyReportRegionSummary.officerReports=Numero di rapporti di responsabili WeeklyReportRegionSummary.officerReportPercentage=Percentuale WeeklyReportRegionSummary.officerZeroReports=Numero di rapporti zero di responsabili - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_it-IT.properties b/sormas-api/src/main/resources/captions_it-IT.properties index 219cddcd61f..4534c7f209b 100644 --- a/sormas-api/src/main/resources/captions_it-IT.properties +++ b/sormas-api/src/main/resources/captions_it-IT.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Tutto area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Dizionario dei dati (XLSX) aboutSormasWebsite=Sito SORMAS ufficiale aboutTechnicalManual=Manuale tecnico (PDF) aboutWhatsNew=Cosa c'è di nuovo? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Applica filtro actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assegna nuovo numero epid actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Annulla actionClear=Cancella actionClearAll=Cancella tutto @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=Nuovi risultati del test - AdditionalTest=Test supplementare AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Gas ematico arterioso/venoso @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Data e ora del risultato AdditionalTest.totalBilirubin=Totale bilirubina (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=Conteggio globuli bianchi (x10^9/L) - aggregateReportDeathsShort=M aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Settimana scorsa @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Conferme del laboratorio AggregateReport.deaths=Decessi AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Luogo d’entrata nel paese - -areaActiveAreas = Aree attive -areaArchivedAreas = Aree archiviate -areaAllAreas = Tutte le aree -Area.archived = Archived -Area.externalId = ID esterno - +areaActiveAreas=Aree attive +areaArchivedAreas=Aree archiviate +areaAllAreas=Tutte le aree +Area.archived=Archived +Area.externalId=ID esterno # Bulk actions bulkActions=Azioni in blocco -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Annulla follow-up bulkCaseClassification=Cambia classificazione caso bulkCaseOutcome=Modifica risultato caso @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Modificare l'addetto di sorveglianza bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Campagne attive campaignAllCampaigns=Tutte le campagne @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campagna Campaign.name=Nome Campaign.description=Descrizione @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campagna -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campagna +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Elenco dei casi caseInfrastructureDataChanged=Dati dell'infrastruttura sono cambiati @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=Nuovo caso casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Casi archiviati caseAllCases=Tutti i casi caseTransferCase=Trasferisci caso caseTransferCases=Trasferisci casi -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Scegli un caso esistente caseCreateCase=Crea nuovo caso caseDefaultView=Visualizzazione predefinita @@ -374,10 +357,10 @@ convertEventParticipantToCase=Creare caso dal partecipante all'evento con risult convertContactToCase=Creare caso dal contatto con risultato positivo al test? caseSearchSpecificCase=Cerca caso specifico caseSearchCase=Cerca caso -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Caso CaseData.additionalDetails=Commenti generali CaseData.caseClassification=Classificazione caso @@ -445,7 +428,7 @@ CaseData.reportLat=Segnala latitudine GPS CaseData.reportLon=Segnala longitudine GPS CaseData.reportLatLonAccuracy=Segnala la precisione GPS in m CaseData.sequelae=Malattie conseguenti -CaseData.sequelaeDetails=Descrivi malattie conseguenti +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=In passato è stata effettuata una vaccinazione contro il vaiolo? CaseData.smallpoxVaccinationScar=È presente una cicatrice di vaccinazione contro il vaiolo? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Indirizzo CaseExport.addressRegion=Indirizzo Cantone @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Ospedalizzazione CaseHospitalization.admissionDate=Data della visita o dell’ammissione @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Inizio del ricovero CaseHospitalization.intensiveCareUnitEnd=Fine del ricovero CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Descrizione errore caseImportMergeCase=Sovrascrivi il caso esistente con modifiche dal caso importato? - # CasePreviousHospitalization CasePreviousHospitalization=Ricoveri precedenti CasePreviousHospitalization.admissionAndDischargeDate=Data di ammissione e dimissione -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Data di ammissione CasePreviousHospitalization.description=Descrizione CasePreviousHospitalization.dischargeDate=Data di dimissione o trasferimento CasePreviousHospitalization.editColumn=Modifica +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolamento @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=Nuove valutazioni cliniche - ClinicalVisit=Valutazioni cliniche ClinicalVisit.bloodPressure=Pressione sanguigna ClinicalVisit.heartRate=Battito cardiaco @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperatura ClinicalVisit.visitDateTime=Data e ora della visita ClinicalVisit.visitingPerson=Medico curante ClinicalVisit.visitRemarks=Osservazioni cliniche - ClinicalVisitExport.caseUuid=ID caso ClinicalVisitExport.caseName=Nome caso - columnAdditionalTests=Test supplementari columnDiseaseShort=Malattia columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Compiti pendenti columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=ID esterno - communityActiveCommunities=Comuni attivi communityArchivedCommunities=Comunit archiviati communityAllCommunities=Tutte i comuni - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Focolai Configuration.PointsOfEntry=Punti d'entrata nel paese Configuration.LineListing=Line listing/elenco linee - # Contact contactCancelFollowUp=Annulla follow-up contactCaseContacts=Contatti caso @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Giorno contactQuarantineNotOrdered=Nessuna quarantena ordinata -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contatto Contact.additionalDetails=Commenti generali Contact.caseClassification=Classificazione del caso indice @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Classificazione contatto Contact.contactOfficer=Responsabile di contatto Contact.contactOfficerUuid=Responsabile di contatto -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Status contatto @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Indirizzo ContactExport.addressDistrict=Indirizzo distretto @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=In vita dashboardApplyCustomFilter=Applica filtro personalizzato @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Cantone Predefinito defaultDistrict=Distretto Predefinito defaultCommunity=Comune predefinito defaultFacility=Default Facility defaultLaboratory=Laboratorio Predefinito defaultPointOfEntry=Luogo predefinito d'ingresso nel paese - devModeCaseCount=Numero di casi generati devModeCaseDisease=Malattia del caso devModeCaseDistrict=Distretto del caso @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=Nuovi casi DiseaseBurden.caseDeathCount=Decessi DiseaseBurden.casesDifference=Dinamica @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=Tasso di letalità DiseaseBurden.eventCount=Numero di eventi DiseaseBurden.outbreakDistrictCount=Distretti con focolai DiseaseBurden.previousCaseCount=Casi precedenti - # District districtActiveDistricts=Distretti attivi districtArchivedDistricts=Distretti archiviati districtAllDistricts=Tutti i distretti - District=District District.archived=Archived District.epidCode=Codice Epid District.growthRate=Tasso di crescita District.population=Popolazione District.externalID=ID esterno - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Dati epidemiologici EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Eventi attivi eventArchivedEvents=Eventi archiviati @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Evento Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Partecipante all'evento EventParticipant.contactCount=Contact count EventParticipant.event=Evento @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Esporta exportBasic=Esportazione di base @@ -1285,18 +1234,15 @@ exportCaseCustom=Esportazione personalizzata caso exportNewExportConfiguration=Nuova configurazione d'esportazione exportEditExportConfiguration=Modifica configurazione d'esportazione exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configurazione nome ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Casa o altro luogo Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=Distretto FeatureConfiguration.enabled=Elenco linee abilitato? FeatureConfiguration.endDate=Data di fine - # Formats formatNumberOfVisitsFormat=%d (%d mancato) formatNumberOfVisitsLongFormat=%d visite (%d mancate) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Condizioni di salute HealthConditions.tuberculosis=Tubercolosi @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficienza incluso HIV - # Import importDetailed=Importazione dettagliata importDownloadCaseImportTemplate=Scarica il modello di importazione caso @@ -1440,7 +1378,6 @@ importSkips=%d saltato importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Aggiungi linea @@ -1502,7 +1437,6 @@ lineListingEnableAll=Abilita tutto lineListingDisableAllShort=Disabilita tutto lineListingEndDate=Data di fine lineListingSetEndDateForAll=Imposta la data di fine per tutti - # Location Location=Ubicazione Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS latitudine e longitudine Location.latLonAccuracy=Precisione GPS in m Location.longitude=Longitudine GPS Location.postalCode=Codice postale +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Login Login.login=Login Login.password=Password Login.username=nome utente - #LoginSidebar LoginSidebar.diseaseDetection=Rilevamento malattia LoginSidebar.diseasePrevention=Prevenzione malattia LoginSidebar.outbreakResponse=Risposta al focolaio LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=Info mainMenuCampaigns=Campagne @@ -1569,7 +1503,6 @@ mainMenuTasks=Compiti mainMenuUsers=Utenti mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Numero totale di figli MaternalHistory.ageAtBirth=Età della madre alla nascita del paziente MaternalHistory.conjunctivitis=Congiuntivite @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Altre complicazioni MaternalHistory.otherComplicationsOnset=Data inizio MaternalHistory.otherComplicationsMonth=Mese della gravidanza MaternalHistory.otherComplicationsDetails=Dettagli della complicazione - # Outbreak outbreakAffectedDistricts=Distretti colpiti outbreakNoOutbreak=Nessun focolaio outbreakNormal=Normale outbreakOutbreak=Focolaio - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=Nuovo risultato pathogenTestNewTest=Risultato nuovo test pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Test patogeno PathogenTests=Test patogeno PathogenTest.fourFoldIncreaseAntibodyTiter=aumento di 4 volte del titolo anticorpale @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Crea una nuova persona @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Persona Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Punti d'ingresso nel paese attivi pointOfEntryArchivedPointsOfEntry=Punti d'entrata nel paese archiviati pointOfEntryAllPointsOfEntry=Tutti i punti d'entrata nel paese - PointOfEntry.OTHER_AIRPORT=Altro aereoporto PointOfEntry.OTHER_SEAPORT=Altro porto PointOfEntry.OTHER_GROUND_CROSSING=Altro punto d'ingresso sul terreno PointOfEntry.OTHER_POE=Altri punti di ingresso nel paese - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Tipi di punti d'ingresso nel paese PointOfEntry.active=Attivo? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitudine PointOfEntry.longitude=Longitudine PointOfEntry.externalID=ID esterno PointOfEntry.archived=Archived - populationDataMaleTotal=Totale maschile populationDataFemaleTotal=Totale femminile - PortHealthInfo=Informazioni d'ingresso nel paese PortHealthInfo.airlineName=Nome della compagnia aerea PortHealthInfo.flightNumber=Numero del volo @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specifica il tipo di trasporto PortHealthInfo.departureLocation=Luogo di inizio del viaggio PortHealthInfo.finalDestination=Destinazione Finale PortHealthInfo.details=Dettagli dei punti d'ingresso nel paese - # Prescription prescriptionNewPrescription=Nuova prescrizione - Prescription=Prescription Prescription.additionalNotes=Note aggiuntive Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Tipo di prescrizione Prescription.route=Percorso Prescription.routeDetails=Specificazione percorso Prescription.typeOfDrug=Tipo di medicinale - PrescriptionExport.caseUuid=ID caso PrescriptionExport.caseName=Nome caso - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Cantoni attivi regionArchivedRegions=Cantoni archiviati regionAllRegions=Tutti i Cantoni - Region=Region Region.archived=Archived Region.epidCode=Codice Epid @@ -1861,7 +1771,6 @@ Region.growthRate=Tasso di crescita Region.population=Popolazione Region.externalID=ID esterno Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Crea risultato test per questo campione ora @@ -1888,7 +1797,6 @@ sampleActiveSamples=Campioni attivi sampleArchivedSamples=Campioni archiviati sampleAllSamples=Tutti i campioni sampleAssociationType=Tipo di campione - Sample=Campione Sample.additionalTestingRequested=Richiedi ulteriori test? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=ID campione Sample.samplePurpose=Scopo del campione Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Sono stati richiesti test aggiuntivi? SampleExport.personAddressCaption=Indirizzo del caso/contatto/partecipante all’evento SampleExport.personAge=Età del caso/contatto/partecipante di evento SampleExport.caseDistrict=Distretto del caso SampleExport.caseCommunity=Comune del caso SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Cantone dei contatti -SampleExport.contactDistrict = Distretto dei contatti -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Cantone dei contatti +SampleExport.contactDistrict=Distretto dei contatti +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Esito del caso SampleExport.caseRegion=Cantone del caso SampleExport.caseReportDate=Data del rapporto del caso SampleExport.personSex=Sesso della persona caso/contatto/partecipante all'evento SampleExport.caseUuid=UUID del caso -SampleExport.contactUuid = UUID di contatto -SampleExport.contactReportDate = Data del rapporto del contatto +SampleExport.contactUuid=UUID di contatto +SampleExport.contactReportDate=Data del rapporto del contatto SampleExport.id=Numero seriale del campione SampleExport.sampleReportDate=Data di riferimento del campione SampleExport.noTestPossibleReason=Motivo per non aver eseguito il test @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Data e ora dell'ultimo test supplementare SampleExport.totalBilirubin=Bilirubina totale dell'ultimo test supplementare SampleExport.urea=Urea dell'ultimo test supplementare SampleExport.wbcCount=Numero globuli bianchi dell'ultimo test supplementare - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Aggiungere filtro statisticsAttribute=Attributo @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Tipo statisticsIncidenceDivisor=Divisore di incidenza statisticsDataDisplayed=Dati visualizzati statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localizzazione delle lesioni symptomsMaxTemperature=Temperatura corporea massima in °C symptomsSetClearedToNo=Imposta su No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Sintomi Symptoms.abdominalPain=Dolori addominali Symptoms.alteredConsciousness=Stato di coscienza alterato @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=Miei compiti taskNewTask=Nuovo compito @@ -2284,7 +2186,6 @@ taskOfficerTasks=Compiti del responsabile taskActiveTasks=Compiti attivi taskArchivedTasks=Compiti archiviati taskAllTasks=Tutti i compiti - Task=Compito Task.assigneeReply=Commenti sull'esecuzione Task.assigneeUser=Assegnato a @@ -2306,7 +2207,6 @@ Task.taskType=Tipo di compito Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Crea trattamento treatmentNewTreatment=Nuovo trattamento treatmentOpenPrescription=Apri prescrizione - Treatment=Treatment Treatment.additionalNotes=Note aggiuntive Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Dettagli del trattamento Treatment.treatmentType=Tipo di trattamento Treatment.typeOfDrug=Tipo di medicinale Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=ID caso TreatmentExport.caseName=Nome caso - # User userNewUser=Nuovo utente userResetPassword=Crea una nuova password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=Utente User.active=Attivo? User.associatedOfficer=Incaricato associato @@ -2417,12 +2311,10 @@ User.userName=Nome utente User.userRoles=Ruoli utente User.address=Indirizzo User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Rapporto aggregato (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Elenco campagne View.campaign.campaigns.short=Campagne View.campaign.campaigndata=Dati campagna @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Formulario dati della Campagna View.campaign.campaigndata.dataform.short=Formulario dati View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Cartella caso View.cases.merge=Unisci casi duplicati View.cases.archive=Archivio Caso @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Decorso clinico View.cases.maternalhistory=Storia materna View.cases.porthealthinfo=Informazioni d'ingresso nel paese View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Configurazione comune View.configuration.communities.short=Comuni View.configuration.districts=Configurazione Distretti @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Dati Popolazione View.configuration.populationdata.short=Popolazione View.configuration.linelisting=Configurazione line listing/elenco linee View.configuration.linelisting.short=Line listing/elenco linee - View.contacts=Elenco contatti View.contacts.archive=Archivio Contatti View.contacts.epidata=Dati Epidemiologici del Contatto @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Persona di contatto View.contacts.sub= View.contacts.visits=Visite contatto - View.dashboard.contacts=Panoramica contatti View.dashboard.surveillance=Panoramica sorveglianza View.dashboard.campaigns=Campaigns Dashboard - View.events=Elenco contatti View.events.archive=Archivio eventi View.events.data=Informazioni evento @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Partecipanti dell'evento View.events.sub= View.events.eventparticipants.data=Informazioni sul partecipante all'evento - View.samples.labMessages=Lab Message Directory - View.reports=Rapporti settimanali View.reports.sub= - View.samples=Elenco campioni View.samples.archive=Archivio campioni View.samples.data=Informazioni sul campione View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistiche View.statistics.database-export=Esportazione banca dati - View.tasks=Gestione dei compiti View.tasks.archive=Archivio compiti View.tasks.sub= - View.users=Gestione Utenti View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=Nuova Visita - Visit=Visita Visit.person=Persona visitata Visit.symptoms=Sintomi @@ -2573,24 +2445,19 @@ Visit.visitUser=Responsabile in visita Visit.disease=Malattia Visit.reportLat=Rapporto latitudine Visit.reportLon=Rapporto longitudine - # WeeklyReport weeklyReportNoReport=Rapporto mancante weeklyReportOfficerInformants=Informanti weeklyReportsInDistrict=Rapporti settimanali in %s weeklyReportRegionOfficers=Responsabili weeklyReportRegionInformants=Informanti - WeeklyReport.epiWeek=Settimana Epi WeeklyReport.year=Anno - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Casi segnalati - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Presentazione del rapporto della persona informante WeeklyReportInformantSummary.totalCaseCount=Casi segnalati da informatore - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Numero informanti WeeklyReportOfficerSummary.informantReports=Numero di rapporti di informanti @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Numero di rapporti zero di infor WeeklyReportOfficerSummary.officer=Funzionario WeeklyReportOfficerSummary.officerReportDate=Presentazione del rapporto della persona responsabile WeeklyReportOfficerSummary.totalCaseCount=Casi segnalati dal responsabile - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Numero informanti WeeklyReportRegionSummary.informantReports=Numero di rapporti di informanti @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Numero di responsabili WeeklyReportRegionSummary.officerReports=Numero di rapporti di responsabili WeeklyReportRegionSummary.officerReportPercentage=Percentuale WeeklyReportRegionSummary.officerZeroReports=Numero di rapporti zero di responsabili - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_ja-JP.properties b/sormas-api/src/main/resources/captions_ja-JP.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_ja-JP.properties +++ b/sormas-api/src/main/resources/captions_ja-JP.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_nl-NL.properties b/sormas-api/src/main/resources/captions_nl-NL.properties index aa41095add1..26a932bd180 100644 --- a/sormas-api/src/main/resources/captions_nl-NL.properties +++ b/sormas-api/src/main/resources/captions_nl-NL.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Alle area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Officiële SORMAS Website aboutTechnicalManual=Technische Handleiding (PDF) aboutWhatsNew=Wat is er nieuw? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Annuleren actionClear=Wis actionClearAll=Wis alles @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=Nieuw testresultaat - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Vorige week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_no-NO.properties b/sormas-api/src/main/resources/captions_no-NO.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_no-NO.properties +++ b/sormas-api/src/main/resources/captions_no-NO.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_pl-PL.properties b/sormas-api/src/main/resources/captions_pl-PL.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_pl-PL.properties +++ b/sormas-api/src/main/resources/captions_pl-PL.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_ps-AF.properties b/sormas-api/src/main/resources/captions_ps-AF.properties index 3379329e94f..9e7ce3502a6 100644 --- a/sormas-api/src/main/resources/captions_ps-AF.properties +++ b/sormas-api/src/main/resources/captions_ps-AF.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=دا یو وړیا پوستغالی دی چې تاسو یې د Gnu تر قانون لاندی ویشلی یا اصلاح کولای شۍ؛دا د وړیا پوستغالی د بنیاد لخوا ترتیب شوي (هر یو ۳ ډول یا هم تر ټولو جګ ډول).\nدا پروګرام په دی هیله ویشل شوی چې ګټور تمام شي،بغیر د کوم ضمانت څخه area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=په هکله aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=د ارقامو ذخیره aboutSormasWebsite=د SORMAS ویب پاڼه aboutTechnicalManual=تخنیکي لارښود aboutWhatsNew=څه نوی شته؟ -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=نوې کړنه actionNoActions=کړنی نشته actionCreatingLabel=د لیبل جوړول actionLastModifiedByLabel=د لیبل په اساس آخیرنی بدلون actionStatusChangeDate=د سلنی په اساس معلومات تازه شویدی - Action=کړنه Action.title=عنوان Action.description=څرګندونه @@ -100,14 +96,13 @@ Action.actionContext=چاپیریالي کړنه Action.actionStatus=د کړنی حالت Action.lastModifiedBy=وروستنی بدلون راوستل پواسطه د Action.actionMeasure=د کړنی اندازه کول - # Actions actionApplyDateFilter=د مراجعي د چاڼ نیټه actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=نوی ایپډ نمبر ټاکل actionBack=شاته -actionSend = لیږدول +actionSend=لیږدول actionCancel=لغوه کول actionClear=پاکول actionClearAll=ټول پاک کړئ @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=د نوي ازموینې پایله - AdditionalTest=نورې ازموینې AdditionalTest.altSgpt=د ينې یا ځیګر ټسټونه AdditionalTest.arterialVenousBloodGas=د شریاني/وریدي وینې ګاز @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=د پایلې د ورکړې وخت او نېټه AdditionalTest.totalBilirubin=د بیلیروبین مجموعي اندازه AdditionalTest.urea=په وینه کی د یوریا اندازه AdditionalTest.wbcCount=د وینې د سپینو کریواتو اندازه - aggregateReportDeathsShort=ویټامین ډي aggregateReportLabConfirmationsShort=ال aggregateReportLastWeek=تیره وونۍ @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=لابراتواری تاءیدونه AggregateReport.deaths=مرګونه AggregateReport.healthFacility=اسانتیا AggregateReport.pointOfEntry=د دخول نقطه - -areaActiveAreas = فعالې سیمی -areaArchivedAreas = ارشیف شوی سیمی -areaAllAreas = ټولی سیمی -Area.archived = ارشیف شوی -Area.externalId = بهرنی هویت - +areaActiveAreas=فعالې سیمی +areaArchivedAreas=ارشیف شوی سیمی +areaAllAreas=ټولی سیمی +Area.archived=ارشیف شوی +Area.externalId=بهرنی هویت # Bulk actions bulkActions=اکثریت کارونه -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=د پالنی یا څارنې لغوه کول bulkCaseClassification=د واقعۍ تقسیم بندی بدلول bulkCaseOutcome=د واقعۍ د نتیجې بدلول @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=د سرویلانس د امر تبدیلول bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=فعال کمپاینونه campaignAllCampaigns=ټول کمپاینونه @@ -294,7 +281,6 @@ campaignDashboardChartHeight=د ډشبورډ د چارټ جګوالی campaignDashboardOrder=د ډشبورډ منظموالی campaignSearch=پلټنه campaignDiagramGroupBy=د ډیاګرام ګروپ کول پواسطه د - Campaign=کمپاین Campaign.name=نوم Campaign.description=څرګندونه @@ -308,14 +294,12 @@ Campaign.region=حوزه Campaign.district=ولسوالي Campaign.community=ټولنه Campaign.grouping=Grouping - -CampaignFormData.campaign = کمپاین -CampaignFormData.campaignFormMeta = د کمپاین فورمه -CampaignFormData.formDate = د فورمې نېټه -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = سیمه +CampaignFormData.campaign=کمپاین +CampaignFormData.campaignFormMeta=د کمپاین فورمه +CampaignFormData.formDate=د فورمې نېټه +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=سیمه CampaignFormData.edit=تصحیح - # CaseData caseCasesList=د پیښو لیست caseInfrastructureDataChanged=د زیربناو ارقام تغیر شوی @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=یوازی هغه کیسونه چی د قرنت caseFilterWithReducedQuarantine=یوازی هغه کیسونه چی د قرنتین د کموالی پوخت کی تشخیص شویوی caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=د نورو ادارو څخه پکی کیسونه شامل کړي -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=د کلینیک نوم caseNewCase=نوې پیښه casePlaceOfStay=د اوسېدو ځای @@ -352,7 +335,7 @@ caseArchivedCases=ظبط شوي پیښې caseAllCases=ټولې پیښې caseTransferCase=رجعت شوې پیښه caseTransferCases=رجعت شوې پیښه -caseReferToFacility=پیښې ته روغتیایی مرکز ته رجعت ورکړه +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=د یوې موجوده پیښې پورته کول caseCreateCase=د نوې پیښې ایجادول caseDefaultView=د ناقصو ارقامو لیدل @@ -374,10 +357,10 @@ convertEventParticipantToCase=په مجلس یا پروګرام کی د ګډون convertContactToCase=د کیس یا قضیه جوړیدل د مثبتی نتیجی والا سره د تماس په صورت کی? caseSearchSpecificCase=د خاصې پیښې پلټنه caseSearchCase=د پیښې پلټنه -caseSelect= د کیس یا قضیه انتخاب +caseSelect=د کیس یا قضیه انتخاب caseCreateNew=د نوې پیښی منځته راتلل caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=پیښه CaseData.additionalDetails=ټولیز نظر CaseData.caseClassification=د پیښې طبقه بندي @@ -445,7 +428,7 @@ CaseData.reportLat=دجغرافیوي راپور عرضاني وسعت CaseData.reportLon=د جغرافیوي راپور طولاني وسعت CaseData.reportLatLonAccuracy=د متر په اندازه کی د ساحوي راپور سمون CaseData.sequelae=د طاعون د وجهې د پوستکي تغیرات\n -CaseData.sequelaeDetails=د طاعون د وجهې د پوستکي د تغیراتو تشریح +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=ایا پخوا د چیچک واکیسن یی اخیستي؟ CaseData.smallpoxVaccinationScar=ایا د چیچک د واکسین نښه یی په پوستکي کی شتون لري؟ CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=ادرس CaseExport.addressRegion=د حوزی ادرس @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=روغتون کی بستریدل CaseHospitalization.admissionDate=د ملاقات یا بستریدو نېټه @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=د پاتی کیدو پیل CaseHospitalization.intensiveCareUnitEnd=د پاتی کیدو پای CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=تشریحي تیروتنه caseImportMergeCase=ایا د ظاهر شوي پیښې په تغیر سره موجوده پیښه باطله ده؟ - # CasePreviousHospitalization CasePreviousHospitalization=د بستر پخوانۍ تاریخچه CasePreviousHospitalization.admissionAndDischargeDate=د بستر کیدو او خارجیدو نېټه -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=د بستر کیدو نېټه CasePreviousHospitalization.description=څرګندونه CasePreviousHospitalization.dischargeDate=د خارج کیدو یا انتقال نېټه CasePreviousHospitalization.editColumn=تصحیح +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=تجرید @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=نوی کلینکي ارزونه - ClinicalVisit=کلینکي ارزونه ClinicalVisit.bloodPressure=د وینی فشار ClinicalVisit.heartRate=د زړه میزان @@ -631,33 +610,26 @@ ClinicalVisit.temperature=د تودوخي درجه ClinicalVisit.visitDateTime=د ملاقات وخت او نېټه ClinicalVisit.visitingPerson=مسول معالج ClinicalVisit.visitRemarks=د معالج ډاکټر څرګندونې - ClinicalVisitExport.caseUuid=د پیښې معلوماتي شمیره ClinicalVisitExport.caseName=د پیښې نوم - columnAdditionalTests=نور معاینات columnDiseaseShort=ناروغي columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=نا تکمیله دندې columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=ارشیف شوی Community.externalID=بهرنی هویت - communityActiveCommunities=فعالی ټولنې communityArchivedCommunities=ارشیف شوي ټولنې communityAllCommunities=ټولی ټولنی - # Configuration Configuration.Facilities=روغتیایی مرکزونه Configuration.Outbreaks=د ناروغیوو اوټ بریک Configuration.PointsOfEntry=دخولي ټکې Configuration.LineListing=مسلسل لیست - # Contact contactCancelFollowUp=د پیښی د تعقیب ردول contactCaseContacts=د پیښی سره اړیکی @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=ورځ contactQuarantineNotOrdered=د قرنطین تجویز و نه شو -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=تماس Contact.additionalDetails=ټولیز نظر Contact.caseClassification=د پیښې د منبع طبقه بندي @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=د تماس په شوي پیښې طبقه بندي Contact.contactOfficer=مسول ارتباطي امر Contact.contactOfficerUuid=مسول ارتباطي امر -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=د تماس کی شوي شخص اړوند معلومات @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=ادرس ContactExport.addressDistrict=د پیښې د ولسوالۍ ادرس @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=ژوندی dashboardApplyCustomFilter=کستم فلتر عملی کړه @@ -951,14 +920,12 @@ dashboardAggregatedNumber=جمعه شوی شمیره dashboardProportion=تناسب dashboardViewAsColumnChart=د قطاری چارټ په څیر منظره کول dashboardViewAsBarChart=د بارچارټ په څیر منظره کول - defaultRegion=د هدف وړ حوزه defaultDistrict=د هدف وړ ولسوالی defaultCommunity=د هدف وړ ټولنه defaultFacility=روغتیایی مرکزون defaultLaboratory=لابراتوار defaultPointOfEntry=د داخیلیدو ټکی - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=فعالی ولسوالۍ districtArchivedDistricts=له منځه تللی ولسوالۍ districtAllDistricts=ټولی ولسوالۍ - District=District District.archived=ارشیف شوی District.epidCode=ای پی کوډ District.growthRate=د ودی اندازه District.population=نفوس District.externalID=بهرنی هویت - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=صادرول exportBasic=بنسټیز @@ -1285,18 +1234,15 @@ exportCaseCustom=د پیښی بڼه exportNewExportConfiguration=د نوی صادر شوی ارقامو تنظیم exportEditExportConfiguration=د صادر شوی ارقامو تنظیمول exportConfigurationData=Configuration data - ExportConfiguration.NAME=د تنظیمولو نوم ExportConfiguration.myExports=ځما صادرات ExportConfiguration.sharedExports=شریک شوی صادرات ExportConfiguration.sharedToPublic=د عامو خلکو سره شریک شوی - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=فعال روغتیایی مرکزونه facilityArchivedFacilities=ارشیف شوي روغتیایی مرکزونه facilityAllFacilities=ټول روغتیایی مرکزونه - Facility.CONFIGURED_FACILITY=منظم شوی روغتیایی مرکز Facility.NO_FACILITY=د روغتیایی مرکز نه شتون Facility.OTHER_FACILITY=نور روغتیایی مرکزونه - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=ارشیف شوی @@ -1376,26 +1319,22 @@ Facility.publicOwnership=ټولنیز ملکیت Facility.region=حوزه Facility.type=ډول Facility.typeGroup=د ګروپ ډول -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=د وارد شوی شرحه importDownloadCaseImportTemplate=د پیښی د واردولو نمونه ډاونلوډ کړئ @@ -1440,7 +1378,6 @@ importSkips=پریښودل importValueSeparator=Value separator importCancelImport=واردول لغوه کړۍ infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=ځایی Location.additionalInformation=اضافی معلومات @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=طول البلد Location.postalCode=پوستی کوډ +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=کوڅه -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=داخل شه Login.login=داخلیدل Login.password=پټ نوم Login.username=د استعمالوونکی نوم - #LoginSidebar LoginSidebar.diseaseDetection=د ناروغۍ پیداکول LoginSidebar.diseasePrevention=د ناروغۍ وقایه LoginSidebar.outbreakResponse=اوټ بریک ته غبرګون LoginSidebar.poweredBy=د چا لخوا چمتو کیږی - # Messaging messagesSendSMS=مسیج ولیږه messagesSentBy=مسیج لیږدوونکی messagesNoSmsSentForCase=د لیږدول شوی مسیج شمیره د پیښی لپاره messagesNoPhoneNumberForCasePerson=د اخته شخص د تیلیفون شمیره او د پیښی شمیره -messagesSms = مسیج -messagesEmail = ایمیل -messagesSendingSms = د مسیج لیږدول -messagesNumberOfMissingPhoneNumbers = د پاتی شوو تلیفونونو شمیرو تعداد -messagesCharacters = حرفونه -messagesNumberOfMessages = د پیغامونو تعداد - +messagesSms=مسیج +messagesEmail=ایمیل +messagesSendingSms=د مسیج لیږدول +messagesNumberOfMissingPhoneNumbers=د پاتی شوو تلیفونونو شمیرو تعداد +messagesCharacters=حرفونه +messagesNumberOfMessages=د پیغامونو تعداد # Main Menu mainMenuAbout=په هکله mainMenuCampaigns=کمپاینونه @@ -1569,7 +1503,6 @@ mainMenuTasks=دندي mainMenuUsers=استعمالوونکي mainMenuAggregateReports=توحیدی راپورونه mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=فعال هیوادونه countryArchivedCountries=Archived countries countryAllCountries=ټول هیوادونه - Country=Country Country.archived=ارشیف شوی Country.externalId=بهرنی هویت @@ -1848,12 +1760,10 @@ Country.displayName=نوم ښکاره کول Country.isoCode=کوډISO Country.unoCode=کوډ uno Country.subcontinent=Subcontinent - # Region regionActiveRegions=فعالی حوزي regionArchivedRegions=آرشیف شوی حوزي regionAllRegions=ټولی حوزي - Region=Region Region.archived=آرشیف شوی Region.epidCode=د epid کوډ @@ -1861,7 +1771,6 @@ Region.growthRate=د ودي اندازه Region.population=نفوس Region.externalID=بهرنی هویت Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=نوی استعمالوونکی userResetPassword=د پاسورډ بیرته جوړول @@ -2402,7 +2297,6 @@ syncUsers=پلټونکي syncErrors=خطاګانی syncSuccessful=کامیاب شوی syncProcessed=پروسس شوی - User=استعمالوونکی User.active=فعال User.associatedOfficer=اړوند کارمند @@ -2417,12 +2311,10 @@ User.userName=د استعمالوونکي نوم User.userRoles=د استعمالوونکي رول User.address=پته User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=د کمپاینونو ډشبورډ - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_pt-PT.properties b/sormas-api/src/main/resources/captions_pt-PT.properties index 77ecba80f80..012bde240a3 100644 --- a/sormas-api/src/main/resources/captions_pt-PT.properties +++ b/sormas-api/src/main/resources/captions_pt-PT.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Todos area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_ro-RO.properties b/sormas-api/src/main/resources/captions_ro-RO.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_ro-RO.properties +++ b/sormas-api/src/main/resources/captions_ro-RO.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_ru-RU.properties b/sormas-api/src/main/resources/captions_ru-RU.properties index 31ce5759473..92b40db6bde 100644 --- a/sormas-api/src/main/resources/captions_ru-RU.properties +++ b/sormas-api/src/main/resources/captions_ru-RU.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=Все area=Район @@ -59,10 +58,9 @@ unknown=Неизвестен diseaseVariantDetails=Детали варианта заболевания unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=О программе aboutAdditionalInfo=Дополнительная информация @@ -76,18 +74,16 @@ aboutDataDictionary=Словарь данных (XLSX) aboutSormasWebsite=Официальный сайт Сормаса aboutTechnicalManual=Техническое руководство пользователя (PDF) aboutWhatsNew=Что нового? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=Новое действие actionNoActions=Нет действий для этого %s actionCreatingLabel=Создано (когда) %s и (кем) %s actionLastModifiedByLabel=Обновлено (когда) %s и (кем) %s actionStatusChangeDate=обновлено (когда) %s - Action=Действие Action.title=Наименование действия Action.description=Описание действия @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_sv-SE.properties b/sormas-api/src/main/resources/captions_sv-SE.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_sv-SE.properties +++ b/sormas-api/src/main/resources/captions_sv-SE.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_sw-KE.properties b/sormas-api/src/main/resources/captions_sw-KE.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_sw-KE.properties +++ b/sormas-api/src/main/resources/captions_sw-KE.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_tr-TR.properties b/sormas-api/src/main/resources/captions_tr-TR.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_tr-TR.properties +++ b/sormas-api/src/main/resources/captions_tr-TR.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_uk-UA.properties b/sormas-api/src/main/resources/captions_uk-UA.properties index c97d9b21c3c..1b876fb2e67 100644 --- a/sormas-api/src/main/resources/captions_uk-UA.properties +++ b/sormas-api/src/main/resources/captions_uk-UA.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=All area=Area @@ -59,10 +58,9 @@ unknown=Unknown diseaseVariantDetails=Disease variant details unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=About aboutAdditionalInfo=Additional Info @@ -76,18 +74,16 @@ aboutDataDictionary=Data Dictionary (XLSX) aboutSormasWebsite=Official SORMAS Website aboutTechnicalManual=Technical Manual (PDF) aboutWhatsNew=What's New? -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=New action actionNoActions=There are no actions for this %s actionCreatingLabel=Created at %s by %s actionLastModifiedByLabel=Updated at %s by %s actionStatusChangeDate=updated at %s - Action=Action Action.title=Title Action.description=Description @@ -100,14 +96,13 @@ Action.actionContext=Action context Action.actionStatus=Action status Action.lastModifiedBy=Last modified by Action.actionMeasure=Measure - # Actions actionApplyDateFilter=Apply date filter actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=Assign new epid number actionBack=Back -actionSend = Send +actionSend=Send actionCancel=Cancel actionClear=Clear actionClearAll=Clear all @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=Flight number - ActivityAsCase=Activity as case ActivityAsCase.startDate=Start of activity ActivityAsCase.endDate=End of activity @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=Type of gathering details ActivityAsCase.habitationType=Type of habitation ActivityAsCase.habitationDetails=Type of habitation details ActivityAsCase.role=Role - # AdditionalTest additionalTestNewTest=New test result - AdditionalTest=Additional test AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=Arterial/venous blood gas @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=Lab confirmations AggregateReport.deaths=Deaths AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=Point of Entry - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=Bulk Actions -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=Cancel follow-up bulkCaseClassification=Change case classification bulkCaseOutcome=Change case outcome @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=Change surveillance officer bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=Name Campaign.description=Description @@ -308,14 +294,12 @@ Campaign.region=Region Campaign.district=District Campaign.community=Community Campaign.grouping=Grouping - -CampaignFormData.campaign = Campaign -CampaignFormData.campaignFormMeta = Form -CampaignFormData.formDate = Form date -CampaignFormData.formValuesJson = Form data -CampaignFormData.area = Area +CampaignFormData.campaign=Campaign +CampaignFormData.campaignFormMeta=Form +CampaignFormData.formDate=Form date +CampaignFormData.formValuesJson=Form data +CampaignFormData.area=Area CampaignFormData.edit=Edit - # CaseData caseCasesList=Cases list caseInfrastructureDataChanged=Infrastructure data has changed @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=Only cases with extended quarantine caseFilterWithReducedQuarantine=Only cases with reduced quarantine caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=Include cases from other jurisdictions -caseFilterOnlyCasesWithFulfilledReferenceDefinition = Only cases with fulfilled reference definition +caseFilterOnlyCasesWithFulfilledReferenceDefinition=Only cases with fulfilled reference definition caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=New case casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=All cases caseTransferCase=Transfer case caseTransferCases=Transfer cases -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=Pick an existing case caseCreateCase=Create a new case caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=Report GPS latitude CaseData.reportLon=Report GPS longitude CaseData.reportLatLonAccuracy=Report GPS accuracy in m CaseData.sequelae=Sequelae -CaseData.sequelaeDetails=Describe sequelae +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=Was a Smallpox vaccination received in the past? CaseData.smallpoxVaccinationScar=Is a Smallpox vaccination scar present? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=Immunization Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = Sent from +sormasToSormasOriginInfo=Sent from BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/captions_ur-PK.properties b/sormas-api/src/main/resources/captions_ur-PK.properties index c5ad984eb4b..c39791298e4 100644 --- a/sormas-api/src/main/resources/captions_ur-PK.properties +++ b/sormas-api/src/main/resources/captions_ur-PK.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=تمام area=خطہ @@ -59,10 +58,9 @@ unknown=نامعلوم diseaseVariantDetails=بیماری کے مختلف قسم کی تفصیلات unassigned=غیر مختص assign=مختص -assignToMe = مجھے سونپا ہوا +assignToMe=مجھے سونپا ہوا endOfProcessingDate=پروسیسنگ کی تاریخ کا اختتام dearchiveReason=ڈی آرکائیو کی وجہ - # About about=متعلق aboutAdditionalInfo=اضافی معلومات @@ -76,18 +74,16 @@ aboutDataDictionary=ڈیٹا ڈکشنری (XLSX) aboutSormasWebsite=SORMAS کی آفیشل ویب سائٹ aboutTechnicalManual=ٹیکنیکل مینوئل (PDF) aboutWhatsNew=نیا کیا ہے؟ -aboutLabMessageAdapter = لیب پیغامات کا اڈاپٹر -aboutServiceNotAvailable = دستیاب نہیں ہے -aboutExternalSurveillanceToolGateway = بیرونی نگرانی کے آلے کا گیٹ وے -aboutDataProtectionDictionary = ڈیٹا پروٹیکشن ڈکشنری (XLSX) - +aboutLabMessageAdapter=لیب پیغامات کا اڈاپٹر +aboutServiceNotAvailable=دستیاب نہیں ہے +aboutExternalSurveillanceToolGateway=بیرونی نگرانی کے آلے کا گیٹ وے +aboutDataProtectionDictionary=ڈیٹا پروٹیکشن ڈکشنری (XLSX) # Action actionNewAction=نئی کارروائی actionNoActions=اس %s کے لیے کوئی کارروائیاں نہیں ہیں actionCreatingLabel=%s کی طرف سے %s پر بنایا گیا۔ actionLastModifiedByLabel=%s کے ذریعے %s پر اپ ڈیٹ کیا گیا actionStatusChangeDate=%s پر اپ ڈیٹ کیا گیا - Action=عمل Action.title=عنوان Action.description=تفصیل @@ -100,14 +96,13 @@ Action.actionContext=کارروائی کا سیاق و سباق Action.actionStatus=کارروائی کی حالت Action.lastModifiedBy=آخری ترمیم بذریعہ Action.actionMeasure=پیمائش - # Actions actionApplyDateFilter=تاریخ کا فلٹر لگائیں actionArchiveInfrastructure=آرکائیو actionArchiveCoreEntity=آرکائیو actionAssignNewEpidNumber=نیا EPID نمبر مختص کریں actionBack=واپس -actionSend = بھیجیں +actionSend=بھیجیں actionCancel=منسوخ actionClear=مٹا دیں actionClearAll=سب مٹا دیں @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=تقریب کے شریک کو محفوظ کر actionSaveAndContinue=محفوظ کریں اور جاری رکھیں actionDiscardAllAndContinue=سب رد کر دیں اور جاری رکھیں actionDiscardAndContinue=رد کر دیں اور جاری رکھیں - activityAsCaseFlightNumber=پرواز نمبر - ActivityAsCase=سرگرمی بطور کیس ActivityAsCase.startDate=سرگرمی کا آغاز ActivityAsCase.endDate=سرگرمی کا اختتام @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=اجتماع کی قسم کی تفصیلات ActivityAsCase.habitationType=رہائش کی قسم ActivityAsCase.habitationDetails=رہائش کی قسم کی تفصیلات ActivityAsCase.role=کردار - # AdditionalTest additionalTestNewTest=نۓ ٹیسٹ کا نتیجہ - AdditionalTest=اضافی ٹیسٹ AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=شریان/وینس خون کی گیس @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=نتیجہ کی تاریخ اور وقت AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=یوریا (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=گزشتہ ہفتے @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=لیب کی تصدیق AggregateReport.deaths=ہلاکتیں AggregateReport.healthFacility=سہولت گاہ AggregateReport.pointOfEntry=داخلے کی جگہ - -areaActiveAreas = فعال خطے -areaArchivedAreas = آرکائیو شدہ خطے -areaAllAreas = تمام خطے -Area.archived = آرکائیوڈ -Area.externalId = بیرونی شناخت - +areaActiveAreas=فعال خطے +areaArchivedAreas=آرکائیو شدہ خطے +areaAllAreas=تمام خطے +Area.archived=آرکائیوڈ +Area.externalId=بیرونی شناخت # Bulk actions bulkActions=بلک ایکشنز -bulkEditAssignee= کرنے والوں میں ترمیم کریں +bulkEditAssignee=کرنے والوں میں ترمیم کریں bulkCancelFollowUp=الو اپ منسوخ bulkCaseClassification=کیس کی درجہ بندی کو تبدیل کریں bulkCaseOutcome=کیس کا نتیجہ تبدیل کریں @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=نگران افسر کو تبدیل کریں bulkTaskStatus=کام کی حالت کو تبدیل کریں bulkTaskAssignee=کرنے والے کو تبدیل کریں bulkTaskPriority=ترجیح تبدیل کریں - # Campaign campaignActiveCampaigns=فعال مہمات campaignAllCampaigns=تمام مہمات @@ -294,7 +281,6 @@ campaignDashboardChartHeight=اونچائی % میں campaignDashboardOrder=احکامات campaignSearch=مہم تلاش کریں campaignDiagramGroupBy=گروپ بمطابق - Campaign=مہم Campaign.name=نام Campaign.description=تفصیل @@ -308,14 +294,12 @@ Campaign.region=علاقہ Campaign.district=ضلع Campaign.community=کمیونیٹی Campaign.grouping=گروہ بندی - -CampaignFormData.campaign = مہم -CampaignFormData.campaignFormMeta = فارم -CampaignFormData.formDate = فارم کی تاریخ -CampaignFormData.formValuesJson = فارم ڈیٹا -CampaignFormData.area = خطہ +CampaignFormData.campaign=مہم +CampaignFormData.campaignFormMeta=فارم +CampaignFormData.formDate=فارم کی تاریخ +CampaignFormData.formValuesJson=فارم ڈیٹا +CampaignFormData.area=خطہ CampaignFormData.edit=ترمیم کریں - # CaseData caseCasesList=کیسز کی فہرست caseInfrastructureDataChanged=انفراسٹرکچر کا ڈیٹا بدل گیا ہے @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=صرف توسیع شدہ قرنطینہ وال caseFilterWithReducedQuarantine=صرف قرنطینہ کم والے کیسز caseFilterOnlyQuarantineHelpNeeded=قرنطینہ میں مدد درکار ہے caseFilterInludeCasesFromOtherJurisdictions=دیگر دائرہ اختیار کے کیسز شامل کریں -caseFilterOnlyCasesWithFulfilledReferenceDefinition = صرف مکمل حوالہ تعریف والے کیسز +caseFilterOnlyCasesWithFulfilledReferenceDefinition=صرف مکمل حوالہ تعریف والے کیسز caseFilterRelatedToEvent=صرف تقریبات والے کیسز caseFilterOnlyFromOtherInstances=صرف دیگر سسٹمز سے کیسز caseFilterCasesWithReinfection=صرف دوبارہ انفیکشن کے کیسز @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=صرف وہ کیسز، جن ک caseFilterOnlyCasesSharedWithExternalSurvToo=صرف وہ کیسز، جن کو رپورٹنگ ٹول کے ساتھ پہلے شیئرکرديا گیا ہے caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=صرف وہ کیسز، جن کو رپورٹنگ ٹول کے ساتھ آخری بار شیئر کرنے کے بعد سے تبدیل کر دیا گیا ہے caseFilterOnlyCasesWithDontShareWithExternalSurvTool=صرف وہ کیسز، جن کو'رپورٹنگ ٹول کے ساتھ شیئر نہ کریں' کے ساتھ نشان زدہ کيا گيا - caseFacilityDetailsShort=سہولت گاہ کا نام caseNewCase=نئا کیس casePlaceOfStay=قیام کی جگہ @@ -352,7 +335,7 @@ caseArchivedCases=آرکائیو کیسز caseAllCases=تمام کیسز caseTransferCase=کیس کی منتقلی caseTransferCases=کیسز کی منتقلی -caseReferToFacility=کیس کو کسی سہولت گاہ ريفرکر دیں +caseReferFromPointOfEntry=داخلے کا جگہ سے کیس کا حوالہ دیں casePickCase=موجودہ کیس کا انتخاب کریں caseCreateCase=نیا کیس بنائیں caseDefaultView=ڈیفالٹ ویو @@ -374,10 +357,10 @@ convertEventParticipantToCase=مثبت ٹیسٹ کے نتائج کے ساتھ ت convertContactToCase=مثبت ٹیسٹ کے نتائج کے ساتھ رابطے سے کیس بنائیں؟ caseSearchSpecificCase=مخصوص کیس تلاش کریں caseSearchCase=کیس تلاش کریں -caseSelect= کیس منتخب کریں +caseSelect=کیس منتخب کریں caseCreateNew=نیا کیس بنائیں caseDataEnterHomeAddressNow=ابھی کیس والے شخص کے گھر کا پتہ درج کریں - +caseCancelDeletion=کیس ڈیلیٹ کرنا منسوخ کریں CaseData=کیس CaseData.additionalDetails=عمومی تبصرہ CaseData.caseClassification=کیس کی درجہ بندی @@ -445,7 +428,7 @@ CaseData.reportLat=GPS عرض البلد رپورٹ کريں CaseData.reportLon=GPS طول البلد رپورٹ کريں CaseData.reportLatLonAccuracy=میٹر میں GPS کی درستگی کی رپورٹ دیں CaseData.sequelae=سیکویلی/تسلسل -CaseData.sequelaeDetails=تسلسل کی وضاحت کریں +CaseData.sequelaeDetails=سیکویلی تفصیل CaseData.smallpoxVaccinationReceived=کیا ماضی میں چیچک کی ویکسینیشن ملی تھی؟ CaseData.smallpoxVaccinationScar=کیا چیچک کی ویکسینیشن کا نشان موجود ہے؟ CaseData.smallpoxLastVaccinationDate=چیچک کی آخری ویکسینیشن کی تاریخ @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=حوالہ کی تعریف CaseData.pointOfEntryRegion=علاقے میں داخلے کا جگہ CaseData.pointOfEntryDistrict=ضلعے میں داخلے کا جگہ CaseData.externalData=بیرونی ڈیٹا -CaseData.reinfectionStatus = دوبارہ انفیکشن کی حالت - +CaseData.reinfectionStatus=دوبارہ انفیکشن کی حالت # CaseExport CaseExport.address=پتہ CaseExport.addressRegion=علاقہ کا پتہ @@ -579,7 +561,6 @@ CaseExport.reportingUserName=رپورٹنگ صارف CaseExport.reportingUserRoles=صارف کے کردار کی رپورٹنگ CaseExport.followUpStatusChangeUserName=ذمہ دار صارف CaseExport.followUpStatusChangeUserRoles=ذمہ دار صارف کردار - # CaseHospitalization CaseHospitalization=ہسپتال میں داخلہ CaseHospitalization.admissionDate=دورے یا داخلے کی تاریخ @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=قیام کا آغاز CaseHospitalization.intensiveCareUnitEnd=قیام کا اختتام CaseHospitalization.hospitalizationReason=ہسپتال میں داخل ہونے کی وجہ CaseHospitalization.otherHospitalizationReason=وجہ بیان کریں - - # CaseImport caseImportErrorDescription=خرابی کی تفصیل caseImportMergeCase=موجودہ کیس کو، امپورٹ شدہ کیس کی تبدیلیوں کے ساتھ اوور رائیڈ کریں؟ - # CasePreviousHospitalization CasePreviousHospitalization=گزشتہ ہسپتال میں داخلہ CasePreviousHospitalization.admissionAndDischargeDate=داخلہ اور چھٹی کی تاریخ -CasePreviousHospitalization.admittedToHealthFacility =کیا مریض کو، داخلی مریض کے طور پر سہولت گاہ میں داخل کیا گیا تھا؟ +CasePreviousHospitalization.admittedToHealthFacility=کیا مریض کو، داخلی مریض کے طور پر سہولت گاہ میں داخل کیا گیا تھا؟ CasePreviousHospitalization.admissionDate=داخلے کی تاریخ CasePreviousHospitalization.description=تفصیل CasePreviousHospitalization.dischargeDate=چھٹی یا منتقلی کی تاریخ CasePreviousHospitalization.editColumn=ترمیم +CasePreviousHospitalization.region=علاقہ +CasePreviousHospitalization.district=ضلع +CasePreviousHospitalization.community=کمیونیٹی CasePreviousHospitalization.healthFacility=ہسپتال CasePreviousHospitalization.healthFacilityDetails=ہسپتال کا نام اور تفصیل CasePreviousHospitalization.isolated=علیحدگی @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=وجہ بیان کریں CasePreviousHospitalization.intensiveCareUnit=انتہائی نگہداشت کے یونٹ میں رہیں CasePreviousHospitalization.intensiveCareUnitStart=قیام کا آغاز CasePreviousHospitalization.intensiveCareUnitEnd=قیام کا اختتام - # ClinicalVisit clinicalVisitNewClinicalVisit=نئی طبی تشخیص - ClinicalVisit=طبی تشخیص ClinicalVisit.bloodPressure=بلڈ پریشر ClinicalVisit.heartRate=دل کی دھڑکن دل کی دھڑکن @@ -631,33 +610,26 @@ ClinicalVisit.temperature=درجہ حرارت ClinicalVisit.visitDateTime=دورے کی تاریخ اور وقت ClinicalVisit.visitingPerson=معالج دیکھ رہا ہے ClinicalVisit.visitRemarks=معالج کے ریمارکس - ClinicalVisitExport.caseUuid=کیس کی شناخت ClinicalVisitExport.caseName=کیس کا نام - columnAdditionalTests=اضافی ٹیسٹس columnDiseaseShort=بیماری columnLastPathogenTest=تازہ ترین پیتھوجین ٹیسٹ (CT/CQ-Value) columnNumberOfPendingTasks=رکے ہوے کام columnVaccineName=ویکسین کا نام columnVaccineManufacturer=ویکسین بنانے والا - - # Community Community=کمیونیٹی Community.archived=آرکائیوڈ Community.externalID=بیرونی شناخت - communityActiveCommunities=فعال کمیونٹیز communityArchivedCommunities=آرکائیو شدہ کمیونٹیز communityAllCommunities=تمام کمیونٹیز - # Configuration Configuration.Facilities=سہولت گاہيں Configuration.Outbreaks=پھیلاؤ Configuration.PointsOfEntry=داخلے کی جگہ Configuration.LineListing=لائن لسٹنگ - # Contact contactCancelFollowUp=الو اپ منسوخ contactCaseContacts=کیس کے رابطے @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=صرف سورس کیس والے راب contactOnlyWithSourceCaseInGivenEvent=صرف وہ رابطے, جن کا سورس کیس اس تقریب سے منسلک ہے contactFollowUpDay=دن contactQuarantineNotOrdered=قرنطینہ کا حکم نہیں دیا گیا -contactPersonPhoneNumber = رابطے کے شخص کا فون نمبر -contactSourceCase = سورس کیس +contactPersonPhoneNumber=رابطے کے شخص کا فون نمبر +contactSourceCase=سورس کیس contactMergeDuplicates=نقلیں ضم کریں contactBackToDirectory=رابطہ ڈائریکٹری پر واپس جائیں contactOpenCasesGuide=روابط گائیڈ کھولیں @@ -703,7 +675,6 @@ contactOpenMergeGuide=اوپن مرج گائیڈ contactCalculateCompleteness=مکمل ہونے کا حساب لگائیں contactNumberOfDuplicatesDetected=%d ممکنہ نقول کا پتہ چلا contactFilterWithDifferentRegion=مختلف علاقوں کے ساتھ ڈپلیکیٹس دکھائیں - Contact=رابطہ Contact.additionalDetails=عمومی تبصرہ Contact.caseClassification=سورس کیس کی درجہ بندی @@ -720,10 +691,10 @@ Contact.community=ذمہ دار کمیونیٹی Contact.contactClassification=رابطہ کی درجہ بندی Contact.contactOfficer=ذمہ دار رابطہ افسر Contact.contactOfficerUuid=ذمہ دار رابطہ افسر -Contact.contactIdentificationSource = رابطے کی شناخت کا ذریعہ -Contact.contactIdentificationSourceDetails = رابطے کی شناخت کا ذریعہ کی تفصیلات -Contact.tracingApp = ٹریسنگ ایپ -Contact.tracingAppDetails = ٹریسنگ ایپ کی تفصیلات، جیسے نام +Contact.contactIdentificationSource=رابطے کی شناخت کا ذریعہ +Contact.contactIdentificationSourceDetails=رابطے کی شناخت کا ذریعہ کی تفصیلات +Contact.tracingApp=ٹریسنگ ایپ +Contact.tracingAppDetails=ٹریسنگ ایپ کی تفصیلات، جیسے نام Contact.contactProximity=رابطے کی قسم Contact.contactProximityLongForm=رابطے کی قسم - اگر ایک سے زیادہ رابطہ ہيں تو قریبی رابطہ کا انتخاب کریں Contact.contactStatus=رابطہ کی حالت @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=فالو اپ حالت کی تبدیلی کی Contact.followUpStatusChangeUser=ذمہ دار صارف Contact.expectedFollowUpUntil=تک متوقع فالو اپ Contact.vaccinationStatus=ویکسینیشن کی حالت - # ContactExport ContactExport.address=پتہ ContactExport.addressDistrict=ضلع کا پتہ @@ -826,7 +796,6 @@ ContactExport.reportingUserName=رپورٹنگ صارف ContactExport.reportingUserRoles=صارف کے کردار کی رپورٹنگ ContactExport.followUpStatusChangeUserName=ذمہ دار صارف ContactExport.followUpStatusChangeUserRoles=ذمہ دار صارف کردار - # Dashboard dashboardAlive=زندہ dashboardApplyCustomFilter=حسب ضرورت فلٹر لگائیں @@ -951,14 +920,12 @@ dashboardAggregatedNumber=شمار dashboardProportion=تناسب (%) dashboardViewAsColumnChart=بطور کالم چارٹ دیکھیں dashboardViewAsBarChart=بطور بار چارٹ کے دیکھیں - defaultRegion=پہلے سے طے شدہ علاقہ defaultDistrict=پہلے سے طے شدہ ضلع defaultCommunity=پہلے سے طے شدہ کمیونٹی defaultFacility=پہلے سے طے شدہ سہولت گاہ defaultLaboratory=پہلے سے طے شدہ لیبارٹری defaultPointOfEntry=پہلے سے طے شدہ داخلے کی جگہ - devModeCaseCount=بنائے گئے کیسز کی تعداد devModeCaseDisease=کیسز کی بیماری devModeCaseDistrict=کیسز کا ضلع @@ -1008,7 +975,6 @@ devModeGeneratorSeed=جنریٹر سيڈ devModeLoadDefaultConfig=ڈیفالٹ کنفیگریشن لوڈ کریں devModeLoadPerformanceTestConfig=لوڈ پرفارمنس ٹیسٹنگ کنفیگریشن devModeUseSeed=سيڈ استعمال کریں - DiseaseBurden.caseCount=نئے کیسز DiseaseBurden.caseDeathCount=ہلاکتیں DiseaseBurden.casesDifference=متحرک @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=تقریبات کی تعداد DiseaseBurden.outbreakDistrictCount=پھیلاو والے اضلاع DiseaseBurden.previousCaseCount=پچھلے کیسز - # District districtActiveDistricts=فعال اضلاع districtArchivedDistricts=آرکائیو شدہ اضلاع districtAllDistricts=تمام اضلاع - District=ضلع District.archived=آرکائیوڈ District.epidCode=Epid کوڈ District.growthRate=اضافے کی شرح District.population=آبادی District.externalID=بیرونی شناخت - epiDataNoSourceContacts=اس کیس کے لیے کوئی سورس رابطہ نہیں بنایا گیا ہے - EpiData=وبائی امراض کا ڈیٹا EpiData.areaInfectedAnimals=کسی ایسے خطے میں رہنا، کام کرنا یا سفر کرنا جہاں متاثرہ جانوروں کی تصدیق ہوئی ہو EpiData.exposureDetailsKnown=سامنے ہونے کی تفصیلات معلوم ہیں EpiData.exposures=ایکسپوژر/سامنا -EpiData.activityAsCaseDetailsKnown = سرگرمی کی تفصیلات معلوم ہیں -EpiData.activitiesAsCase = سرگرمیاں بطور کیس +EpiData.activityAsCaseDetailsKnown=سرگرمی کی تفصیلات معلوم ہیں +EpiData.activitiesAsCase=سرگرمیاں بطور کیس EpiData.highTransmissionRiskArea=کسی ایسے خطے میں رہنا یا کام کرنا جہاں بیماری کی منتقلی کا زیادہ خطرہ ہو، جیسے بند رہائشی اور کیمپ جیسی جگہ EpiData.largeOutbreaksArea=مقامی منتقلی کے بڑے پھیلاؤ کا سامنا کرنے والے ممالک/ریاستوں/خطوں میں رہائش پذیر یا سفر کرنا EpiData.contactWithSourceCaseKnown=سورس کیس کے ساتھ رابطے معلوم ہیں - # Documents documentUploadDocument=نئی دستاویز documentNoDocuments=اس %s کے لیے کوئی دستاویزات نہیں ہیں bulkActionCreatDocuments=قرنطینہ کے حکم کی دستاویزات بنائیں - # DocumentTemplate DocumentTemplate=دستاویز کا ٹیمپلیٹ DocumentTemplate.buttonUploadTemplate=اپ لوڈ ٹیمپلیٹ @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=تیار کردہ دستاو DocumentTemplate.documentUploadWarning=دستاویز اپ لوڈ کرنے کی وارننگ DocumentTemplate.fileTooBig=دستاویزات کامیابی کے ساتھ تیار کی گئیں، لیکن کم از کم ایک دستاویز اس کی اینٹيٹی پر اپ لوڈ نہیں کی جا سکی کیونکہ اس کی فائل کا سائز MB%d کی مخصوص فائل سائز کی حد سے زیادہ ہے DocumentTemplate.notUploaded=درج ذیل اینٹيٹیز پر دستاویزات اپ لوڈ نہیں کی جاسکیں\: - # Event eventActiveEvents=فعال تقریبات eventArchivedEvents=آرکائیو کردہ تقریبات @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=اسی سہولت گاہ کے اندر ا eventNoDisease=کوئی بیماری نہیں eventGroups=تقریب کے گروہ eventGroupsMultiple=یہ تقریب %s تقریب کے گروپس سے متعلق ہے - eventFilterOnlyEventsNotSharedWithExternalSurvTool=صرف وہ تقریبات، جن کو رپورٹنگ ٹول کےا شیئر نہیں کیا گیا ہے eventFilterOnlyEventsSharedWithExternalSurvTool=صرف وہ تقریبات، جن کو رپورٹنگ ٹول کے ساتھ پہلے شیئرکرديا گیا ہے eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=صرف وہ تقریبات، جن کو رپورٹنگ ٹول کے ساتھ آخری بار شیئر کرنے کے بعد سے تبدیل کر دیا گیا ہے - Event=تقریب Event.caseCount=کیسز Event.contactCount=روابط @@ -1185,7 +1142,6 @@ Event.internalToken=اندرونی ٹوکن Event.eventGroups=گروہ Event.latestEventGroup=تازہ ترین تقریبی گروہ Event.eventGroupCount=تقریبی گروہ کی گنتی - # Event action EventAction.eventUuid=تقریب کی شناخت EventAction.eventTitle=واقعہ کا عنوان @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=ایکشن کی تبدیلی کی تاریخ EventAction.actionStatus=ایکشن کی حالت EventAction.actionPriority=ایکشن کی ترجیح EventAction.actionLastModifiedBy=ایکشن جو آخری بار ترمیم کیا گيا بذریعہ - # Event action export EventActionExport.eventDate=تقریب کی تاریخ - #Event export - # EventParticipant eventParticipantAddPerson=شریک شامل کریں eventParticipantContactCountOnlyWithSourceCaseInEvent=صرف ان رابطوں کو شمار کرتا ہے جن کا سورس کیس اس تقریب سے متعلق ہے @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=تقریب کا نیا شریک بنائیں eventParticipantActiveEventParticipants=فعال تقریب کے شرکاء eventParticipantAllEventParticipants=تمام تقریب کے شرکاء eventParticipantArchivedEventParticipants=آرکائیو شدہ تقریب کے شرکاء - EventParticipant=تقریب حصہ لینے والا EventParticipant.contactCount=رابطے کی تعداد EventParticipant.event=تقریب @@ -1238,7 +1190,6 @@ EventParticipant.uuid=تقریب میں شرکت کرنے والے کی شناخ EventParticipant.region=ذمہ دار علاقہ EventParticipant.district=ذمہ دار ضلع EventParticipant.vaccinationStatus=ویکسینیشن کی حالت - #EventParticipant export EventParticipantExport.eventParticipantU=تقریب کی بیماری EventParticipantExport.eventDisease=تقریب کی بیماری @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=نمونہ کی معلومات EventParticipantExport.personNationalHealthId=شخص کی قومی صحت کی شناخت EventParticipantExport.eventParticipantInvolvmentDescription=شمولیت کی تفصیل EventParticipantExport.eventParticipantUuid=تقریب میں شرکت کرنے والے کی شناخت - # Event Group EventGroup=تقریب کا گروہ EventGroup.uuid=گروہ کی شناخت EventGroup.name=گروہ کا نام EventGroup.eventCount=تقریب کی گنتی - # Expo export=ايکسپورٹ exportBasic=بنیادی ايکسپورٹ @@ -1285,18 +1234,15 @@ exportCaseCustom=اپنی مرضی کے مطابق کیس ايکسپورٹ exportNewExportConfiguration=نئی ايکسپورٹ کنفیگریشن exportEditExportConfiguration=ايکسپورٹ کنفیگریشن میں ترمیم کریں exportConfigurationData=کنفیگریشن ڈیٹا - ExportConfiguration.NAME=کنفیگریشن کا نام ExportConfiguration.myExports=میری ايکسپورٹس ExportConfiguration.sharedExports=شئيرڈ ايکسپورٹس ExportConfiguration.sharedToPublic=عوام کے ساتھ شیئر کیا گیا - exposureFlightNumber=پرواز نمبر exposureTimePeriod=وقت کی مدت exposureSourceCaseName=سورس کیس کا نام - Exposure=ایکسپوژر/سامنا -Exposure.probableInfectionEnvironment= ممکنہ انفیکشن ماحول +Exposure.probableInfectionEnvironment=ممکنہ انفیکشن ماحول Exposure.startDate=سامنے کی شروعات Exposure.endDate=سامنے کا اختتام Exposure.exposureType=سرگرمی کی قسم @@ -1348,16 +1294,13 @@ Exposure.riskArea=خطرے کا خطہ جیسا کہ صحت عامہ کے ادا Exposure.exposureDate=ایکسپوژر کا وقت Exposure.exposureRole=کردار Exposure.largeAttendanceNumber=300 سے زیادہ شرکاء - # Facility facilityActiveFacilities=فعال سہولت گاہيں facilityArchivedFacilities=آرکائیو شدہ سہولت گاہيں facilityAllFacilities=تمام سہولت گاہيں - Facility.CONFIGURED_FACILITY=کنفیگرڈ سہولت گاہ Facility.NO_FACILITY=گھر یا دوسری جگہ Facility.OTHER_FACILITY=دوسری سہولت گاہ - Facility=سہولت گاہ Facility.additionalInformation=اضافی معلومات Facility.archived=آرکائیوڈ @@ -1376,26 +1319,22 @@ Facility.publicOwnership=عوامی ملکیت Facility.region=علاقہ Facility.type=سہولت گاہ کی قسم Facility.typeGroup=سہولت گاہ کی قسم -Facility.contactPersonFirstName = رابطہ کرنے والے شخص کا پہلا نام -Facility.contactPersonLastName = رابطہ شخص کا آخری نام -Facility.contactPersonPhone = رابطہ کرنے والے شخص کا فون نمبر -Facility.contactPersonEmail = رابطہ شخص کا ای میل پتہ - +Facility.contactPersonFirstName=رابطہ کرنے والے شخص کا پہلا نام +Facility.contactPersonLastName=رابطہ شخص کا آخری نام +Facility.contactPersonPhone=رابطہ کرنے والے شخص کا فون نمبر +Facility.contactPersonEmail=رابطہ شخص کا ای میل پتہ FeatureConfiguration.districtName=ضلع FeatureConfiguration.enabled=لائن لسٹنگ فعال ہے؟ FeatureConfiguration.endDate=تاریخ اختتام - # Formats formatNumberOfVisitsFormat=%d (%d چھوٹ گیا) formatNumberOfVisitsLongFormat=%d دورے (%d چھوٹ گئے) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=فالواپ شناخت FollowUp.person=فالواپ شخص FollowUp.reportDate=رپورٹ کی تاریخ FollowUp.followUpUntil=تک فالو اپ کریں - # HealthConditions HealthConditions=صحت کے حالات HealthConditions.tuberculosis=تپ دق @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=سابقہ سگریٹ نوش HealthConditions.asthma=دمہ HealthConditions.sickleCellDisease=سکل سیل کی بیماری HealthConditions.immunodeficiencyIncludingHiv=ایچ آئی وی سمیت امیونو کی کمی - # Import importDetailed=تفصیلی امپورٹ importDownloadCaseImportTemplate=کیس امپورٹ ٹیمپلیٹ ڈاؤن لوڈ کریں @@ -1440,7 +1378,6 @@ importSkips=%d نظر انداز importValueSeparator=ويليو الگ کرنے والا importCancelImport=امپورٹ منسوخ کریں infrastructureImportAllowOverwrite=امپورٹڈ ڈیٹا کے ساتھ موجودہ اندراجات کو اوور رائٹ کریں - #Lab Message LabMessage=لیب کا پیغام LabMessage.labMessageDetails=لیب کے پیغام کی تفصیلات @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=نئی تقریب کے شریک ک LabMessage.reportId=رپورٹ کی شناخت LabMessage.sampleOverallTestResult=مجموعی طور پر ٹیسٹ کا نتیجہ LabMessage.assignee=مقرر کردہ - +LabMessage.type=قسم labMessageFetch=لیب کے پیغامات حاصل کریں labMessageProcess=پروسیس labMessageNoDisease=ٹیسٹڈ بیماری نہیں ملی @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=کوئی نیا پیغام دستیاب نہیں ہے labMessageForwardedMessageFound=متعلقہ فارورڈ لیب پیغامات ملے labMessageLabMessagesList=لیب کے پیغامات کی فہرست labMessageRelatedEntriesFound=متعلقہ اندراجات مل گئے - LabMessageCriteria.messageDateFrom=پیغام کی تاریخ سے... LabMessageCriteria.messageDateTo=... سے LabMessageCriteria.birthDateFrom=تاریخ پیدائش سے... LabMessageCriteria.birthDateTo=... تک - #Line listing lineListing=لائن لسٹنگ lineListingAddLine=لائن شامل کریں @@ -1502,7 +1437,6 @@ lineListingEnableAll=سبھی کو فعال کریں lineListingDisableAllShort=سبھی کو غیر فعال کریں lineListingEndDate=تاریخ اختتام lineListingSetEndDateForAll=سب کے لیے آخری تاریخ مقرر کریں - # Location Location=پتہ Location.additionalInformation=اضافی معلومات @@ -1519,38 +1453,38 @@ Location.latLon=GPS عرض بلد اور طول البلد Location.latLonAccuracy=میٹرز میں GPS کی درستگی Location.longitude=GPS طول البلد Location.postalCode=پوسٹل کوڈ +Location.continent=براعظم +Location.subcontinent=برصغیر +Location.country=ملک +Location.region=علاقہ Location.district=ضلع Location.community=کمیونیٹی Location.street=گلی -Location.contactPersonFirstName = رابطہ کرنے والے شخص کا پہلا نام -Location.contactPersonLastName = رابطہ شخص کا آخری نام -Location.contactPersonPhone = رابطہ کرنے والے شخص کا فون نمبر -Location.contactPersonEmail = رابطہ شخص کا ای میل پتہ - +Location.contactPersonFirstName=رابطہ کرنے والے شخص کا پہلا نام +Location.contactPersonLastName=رابطہ شخص کا آخری نام +Location.contactPersonPhone=رابطہ کرنے والے شخص کا فون نمبر +Location.contactPersonEmail=رابطہ شخص کا ای میل پتہ # Login Login.doLogIn=لاگ ان Login.login=لاگ ان Login.password=پاس ورڈ Login.username=صارف کا نام - #LoginSidebar LoginSidebar.diseaseDetection=مرض کا پتہ لگانا LoginSidebar.diseasePrevention=بیماری کی روک تھام LoginSidebar.outbreakResponse=پھیلنے کا ردعمل LoginSidebar.poweredBy=کی طرف سے - # Messaging messagesSendSMS=SMS بھیجیں messagesSentBy=کی طرف سے بھیجا messagesNoSmsSentForCase=کیس والے شخص کو کوئی SMS نہیں بھیجا گیا messagesNoPhoneNumberForCasePerson=کیس والے شخص کا کوئی فون نمبر نہیں ہے -messagesSms = SMS -messagesEmail = ای میل -messagesSendingSms = نیا SMS بھیجیں۔ -messagesNumberOfMissingPhoneNumbers = فون نمبر کے بغیر منتخب کیسز کی تعداد\: %s -messagesCharacters = حروف\: %d / 160 -messagesNumberOfMessages = نمبر پیغامات کی تعداد\: %d - +messagesSms=SMS +messagesEmail=ای میل +messagesSendingSms=نیا SMS بھیجیں۔ +messagesNumberOfMissingPhoneNumbers=فون نمبر کے بغیر منتخب کیسز کی تعداد\: %s +messagesCharacters=حروف\: %d / 160 +messagesNumberOfMessages=نمبر پیغامات کی تعداد\: %d # Main Menu mainMenuAbout=متعلق mainMenuCampaigns=مہمات @@ -1569,7 +1503,6 @@ mainMenuTasks=کام mainMenuUsers=صارفین mainMenuAggregateReports=mSERS mainMenuShareRequests=شیئرز - MaternalHistory.childrenNumber=بچوں کی کل تعداد MaternalHistory.ageAtBirth=نوزائیدہ مریض کی پیدائش کے وقت ماں کی عمر MaternalHistory.conjunctivitis=آشوب چشم @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=دیگر پیچیدگیاں MaternalHistory.otherComplicationsOnset=شروع ہونے کی تاریخ MaternalHistory.otherComplicationsMonth=حمل کا مہینہ MaternalHistory.otherComplicationsDetails=پیچیدگی کی تفصیلات - # Outbreak outbreakAffectedDistricts=متاثرہ اضلاع outbreakNoOutbreak=کوئی وباء نہیں ہے outbreakNormal=نارمل outbreakOutbreak=پھیلاؤ - # PathogenTest pathogenTestAdd=پیتھوجین ٹیسٹ شامل کریں pathogenTestCreateNew=نيا پیتھوجین ٹیسٹ بنائیں @@ -1610,7 +1541,6 @@ pathogenTestNewResult=نیا نتیجہ pathogenTestNewTest=نۓ ٹیسٹ کا نتیجہ pathogenTestRemove=اس پیتھوجین ٹیسٹ کو مٹا دیں pathogenTestSelect=پیتھوجین ٹیسٹ کا انتخاب کریں - PathogenTest=پیتھوجین ٹیسٹ PathogenTests=پیتھوجین ٹیسٹس PathogenTest.fourFoldIncreaseAntibodyTiter=اینٹی باڈی ٹائٹر میں 4 فولڈ اضافہ @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=LIMS کے ذریعے PathogenTest.testedDiseaseVariantDetails=بیماری کے مختلف قسم کی تفصیلات PathogenTest.externalOrderId=بیرونی آرڈر کی شناخت PathogenTest.preliminary=ابتدائی - # Person personPersonsList=افراد کی فہرست personCreateNew=ایک نیا شخص بنائیں @@ -1652,7 +1581,6 @@ personLinkToContacts=اس شخص کے رابطے دیکھیں personsReplaceGeoCoordinates=موجودہ کوآرڈینیٹس کو بھی تبدیل کریں۔ انتباہ\: یہ کوآرڈینیٹس کی جگہ لے سکتا ہے جو جان بوجھ کر مختلف طریقے سے سیٹ کیے گئے تھے\! personsSetMissingGeoCoordinates=لاپتہ جیو کوآرڈینیٹس سیٹ کریں personsUpdated=اشخاص کو اپ ڈیٹ کر دیا گیا - Person=شخص Person.additionalDetails=عمومی تبصرہ Person.address=گھر کا پتہ @@ -1727,33 +1655,28 @@ Person.otherSalutation=دیگر سلام Person.birthName=پیدائشی نام Person.birthCountry=پیدائش کا ملک Person.citizenship=شہریت - -personContactDetailOwner = مالک -personContactDetailOwnerName = مالک کا نام -personContactDetailThisPerson = یہ شخص -personContactDetailThirdParty = کسی دوسرے شخص یا سہولت گاہ کے رابطے کی تفصیلات جمع کریں - -PersonContactDetail = شخص کے رابطے کی تفصیل -PersonContactDetail.person = شخص -PersonContactDetail.primaryContact = ابتدائی رابطے کی تفصیلات -PersonContactDetail.personContactDetailType = رابطے قسم کی تفصیلات -PersonContactDetail.phoneNumberType = فون نمبر کی قسم -PersonContactDetail.details = تفصیلات -PersonContactDetail.contactInformation = رابطے کی معلومات -PersonContactDetail.additionalInformation = اضافی معلومات -PersonContactDetail.thirdParty = فریق ثلاثہ -PersonContactDetail.thirdPartyRole = تیسرے فریق کا کردار -PersonContactDetail.thirdPartyName = تیسرے فریق کا نام - +personContactDetailOwner=مالک +personContactDetailOwnerName=مالک کا نام +personContactDetailThisPerson=یہ شخص +personContactDetailThirdParty=کسی دوسرے شخص یا سہولت گاہ کے رابطے کی تفصیلات جمع کریں +PersonContactDetail=شخص کے رابطے کی تفصیل +PersonContactDetail.person=شخص +PersonContactDetail.primaryContact=ابتدائی رابطے کی تفصیلات +PersonContactDetail.personContactDetailType=رابطے قسم کی تفصیلات +PersonContactDetail.phoneNumberType=فون نمبر کی قسم +PersonContactDetail.details=تفصیلات +PersonContactDetail.contactInformation=رابطے کی معلومات +PersonContactDetail.additionalInformation=اضافی معلومات +PersonContactDetail.thirdParty=فریق ثلاثہ +PersonContactDetail.thirdPartyRole=تیسرے فریق کا کردار +PersonContactDetail.thirdPartyName=تیسرے فریق کا نام pointOfEntryActivePointsOfEntry=داخلے کے فعال مقام pointOfEntryArchivedPointsOfEntry=آرکائیو شدہ ، داخلے کے مقام pointOfEntryAllPointsOfEntry=تمام داخلے کے مقام - PointOfEntry.OTHER_AIRPORT=دوسرا ہوائی اڈہ PointOfEntry.OTHER_SEAPORT=دوسری بندرگاہ PointOfEntry.OTHER_GROUND_CROSSING=دوسری گراؤنڈ کراسنگ PointOfEntry.OTHER_POE=داخلے کی دیگر جگہيں - PointOfEntry=داخلے کی جگہ PointOfEntry.pointOfEntryType=داخلے کی جگہ کی قسم PointOfEntry.active=فعال؟ @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=عرض بلد PointOfEntry.longitude=طول البلد PointOfEntry.externalID=بیرونی شناخت PointOfEntry.archived=آرکائیوڈ - populationDataMaleTotal=کل مرد populationDataFemaleTotal=کل خواتین - PortHealthInfo=پورٹ کی صحت کی معلومات PortHealthInfo.airlineName=ایئر لائن کا نام PortHealthInfo.flightNumber=پرواز نمبر @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=نقل و حمل کی قسم کی وضاح PortHealthInfo.departureLocation=سفر کا آغاز مقام کا PortHealthInfo.finalDestination=آخری منزل PortHealthInfo.details=داخلے کی جگہ کی تفصیلات - # Prescription prescriptionNewPrescription=نیا نسخہ - Prescription=نسخہ Prescription.additionalNotes=اضافی نوٹس Prescription.dose=خوراک @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=نسخہ کی قسم Prescription.route=راستہ Prescription.routeDetails=راستے کی تفصیلات Prescription.typeOfDrug=دوا کی قسم - PrescriptionExport.caseUuid=کیس کی شناخت PrescriptionExport.caseName=کیس کا نام - # Continent continentActiveContinents=فعال براعظموں continentArchivedContinents=آرکائیوڈ براعظم continentAllContinents=تمام براعظم - Continent=براعظم Continent.archived=آرکائیوڈ Continent.externalId=بیرونی شناخت Continent.defaultName=پہلے سے طے شدہ نام Continent.displayName=نام - # Subcontinent subcontinentActiveSubcontinents=فعال برصغیر subcontinentArchivedSubcontinents=آرکائیوڈ برصغیر subcontinentAllSubcontinents=تمام برصغیر - Subcontinent=برصغیر Subcontinent.archived=آرکائیوڈ Subcontinent.externalId=بیرونی شناخت Subcontinent.defaultName=پہلے سے طے شدہ نام Subcontinent.displayName=نام Subcontinent.continent=براعظم کا نام - # Country countryActiveCountries=فعال ممالک countryArchivedCountries=آرکائیوڈ شدہ ممالک countryAllCountries=تمام ممالک - Country=ملک Country.archived=آرکائیوڈ Country.externalId=بیرونی شناخت @@ -1848,12 +1760,10 @@ Country.displayName=نام Country.isoCode=ISO کوڈ Country.unoCode=UNO کوڈ Country.subcontinent=برصغیر - # Region regionActiveRegions=فعال علاقے regionArchivedRegions=آرکائیوڈ علاقے regionAllRegions=تمام علاقے - Region=علاقہ Region.archived=آرکائیوڈ Region.epidCode=Epid کوڈ @@ -1861,7 +1771,6 @@ Region.growthRate=اضافے کی شرح Region.population=آبادی Region.externalID=بیرونی شناخت Region.country=ملک - # Sample sampleCreateNew=نیا نمونہ بنائیں sampleIncludeTestOnCreation=اس نمونے کے لیے ابھی ٹیسٹ کا نتیجہ بنائیں @@ -1888,7 +1797,6 @@ sampleActiveSamples=فعال نمونے sampleArchivedSamples=آرکائیوڈ نمونے sampleAllSamples=تمام نمونے sampleAssociationType=نمونہ کی قسم - Sample=نمونہ Sample.additionalTestingRequested=اضافی ٹیسٹ کروانے کی درخواست کریں؟ Sample.additionalTestingStatus=اضافی ٹیسٹنگ کی حالت @@ -1941,23 +1849,22 @@ Sample.uuid=نمونہ کی شناخت Sample.samplePurpose=نمونہ کا مقصد Sample.samplingReason=نمونے لینے/ٹیسٹ کرنے کی وجہ Sample.samplingReasonDetails=نمونے لینے کی وجہ کی تفصیلات - SampleExport.additionalTestingRequested=کیا اضافی ٹیسٹ کی درخواست کی گئی ہے؟ SampleExport.personAddressCaption=کیس/رابطہ/تقریب میں شریک شخص کا پتہ SampleExport.personAge=کیس/رابطہ/تقریب میں شریک شخص کی عمر SampleExport.caseDistrict=کیس کا ضلع SampleExport.caseCommunity=کیس کی کمیونٹی SampleExport.caseFacility=کیس کی سہولت گاہ -SampleExport.contactRegion = رابطے کا علاقہ -SampleExport.contactDistrict = رابطہ کا ضلع -SampleExport.contactCommunity = رابطے کی کمیونٹی +SampleExport.contactRegion=رابطے کا علاقہ +SampleExport.contactDistrict=رابطہ کا ضلع +SampleExport.contactCommunity=رابطے کی کمیونٹی SampleExport.caseOutcome=کیس کا نتیجہ SampleExport.caseRegion=کیس کا علاقہ SampleExport.caseReportDate=کیس رپورٹ کی تاریخ SampleExport.personSex=کیس/رابطہ/تقریب میں شریک شخص کا جنس SampleExport.caseUuid=کیس UUID -SampleExport.contactUuid = رابطہ UUID -SampleExport.contactReportDate = رابطہ کی رپورٹ کی تاریخ +SampleExport.contactUuid=رابطہ UUID +SampleExport.contactReportDate=رابطہ کی رپورٹ کی تاریخ SampleExport.id=نمونہ کی SN SampleExport.sampleReportDate=نمونہ کی رپورٹ کی تاریخ SampleExport.noTestPossibleReason=ٹیسٹ کی کوئی وجہ نہیں @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=تازہ ترین اضافی ٹیسٹ کی تاریخ SampleExport.totalBilirubin=تازہ ترین اضافی ٹیسٹ کا کل بلیروبن SampleExport.urea=تازہ ترین اضافی ٹیسٹ کا یوریا SampleExport.wbcCount=تازہ ترین اضافی ٹیسٹ کی WBC گنتی - # Immunization Immunization=امیونائزیشن Immunization.reportDate=رپورٹ کی تاریخ Immunization.externalId=بیرونی شناخت Immunization.country=امیونائزیشن ملک -Immunization.disease = بیماری -Immunization.diseaseDetails = بیماری کی تفصیلات +Immunization.disease=بیماری +Immunization.diseaseDetails=بیماری کی تفصیلات Immunization.healthFacility=سہولت گاہ Immunization.healthFacilityDetails=سہولت گاہ کا نام اور تفصیل -Immunization.meansOfImmunization = امیونائزیشن کے ذرائع -Immunization.meansOfImmunizationDetails = امیونائزیشن کے ذرائع کی تفصیلات -Immunization.overwriteImmunizationManagementStatus = امیونائزیشن مینجمنٹ کی حالت کو اوور رائٹ کریں -Immunization.immunizationManagementStatus = مینجمنٹ کی حالت -Immunization.immunizationStatus = امیونائزیشن کی حالت -Immunization.startDate = شروع کرنے کی تاریخ -Immunization.endDate = تاریخ اختتام -Immunization.validFrom = سے مؤثر ہے -Immunization.validUntil = جب تک مؤثر ہے -Immunization.numberOfDoses = خوراک کی تعداد -Immunization.numberOfDosesDetails = خوراک کی تعداد کی تفصیلات -Immunization.vaccinations = ویکسینیشنز -Immunization.uuid = امیونائزیشن کی شناخت -Immunization.personUuid = شخص کی شناخت -Immunization.personFirstName = پہلا نام -Immunization.personLastName = آخری نام -Immunization.ageAndBirthDate = عمر اور تاریخ پیدائش -Immunization.recoveryDate = بازیابی کی تاریخ -Immunization.positiveTestResultDate = پہلے مثبت ٹیسٹ کے نتائج کی تاریخ -Immunization.previousInfection = اس بیماری کے ساتھ پچھلا انفیکشن -Immunization.lastInfectionDate = آخری انفیکشن کی تاریخ -Immunization.lastVaccineType = آخری ویکسین کی قسم -Immunization.firstVaccinationDate = پہلی ویکسینیشن کی تاریخ -Immunization.lastVaccinationDate = آخری ویکسینیشن کی تاریخ -Immunization.additionalDetails = اضافی تفصیلات -Immunization.responsibleRegion = ذمہ دار علاقہ -Immunization.responsibleDistrict = ذمہ دار ضلع -Immunization.responsibleCommunity = ذمہ دار کمیونیٹی -Immunization.immunizationPeriod = امیونائزیشن کی مدت -immunizationImmunizationsList = امیونائزیشن کی فہرست +Immunization.meansOfImmunization=امیونائزیشن کے ذرائع +Immunization.meansOfImmunizationDetails=امیونائزیشن کے ذرائع کی تفصیلات +Immunization.overwriteImmunizationManagementStatus=امیونائزیشن مینجمنٹ کی حالت کو اوور رائٹ کریں +Immunization.immunizationManagementStatus=مینجمنٹ کی حالت +Immunization.immunizationStatus=امیونائزیشن کی حالت +Immunization.startDate=شروع کرنے کی تاریخ +Immunization.endDate=تاریخ اختتام +Immunization.validFrom=سے مؤثر ہے +Immunization.validUntil=جب تک مؤثر ہے +Immunization.numberOfDoses=خوراک کی تعداد +Immunization.numberOfDosesDetails=خوراک کی تعداد کی تفصیلات +Immunization.vaccinations=ویکسینیشنز +Immunization.uuid=امیونائزیشن کی شناخت +Immunization.personUuid=شخص کی شناخت +Immunization.personFirstName=پہلا نام +Immunization.personLastName=آخری نام +Immunization.ageAndBirthDate=عمر اور تاریخ پیدائش +Immunization.recoveryDate=بازیابی کی تاریخ +Immunization.positiveTestResultDate=پہلے مثبت ٹیسٹ کے نتائج کی تاریخ +Immunization.previousInfection=اس بیماری کے ساتھ پچھلا انفیکشن +Immunization.lastInfectionDate=آخری انفیکشن کی تاریخ +Immunization.lastVaccineType=آخری ویکسین کی قسم +Immunization.firstVaccinationDate=پہلی ویکسینیشن کی تاریخ +Immunization.lastVaccinationDate=آخری ویکسینیشن کی تاریخ +Immunization.additionalDetails=اضافی تفصیلات +Immunization.responsibleRegion=ذمہ دار علاقہ +Immunization.responsibleDistrict=ذمہ دار ضلع +Immunization.responsibleCommunity=ذمہ دار کمیونیٹی +Immunization.immunizationPeriod=امیونائزیشن کی مدت +immunizationImmunizationsList=امیونائزیشن کی فہرست linkImmunizationToCaseButton=لنک کیس -openLinkedCaseToImmunizationButton = کھلا کیس -immunizationNewImmunization = نئی امیونائزیشن -immunizationKeepImmunization = موجودہ معلومات کو اپنے پاس رکھیں اور نئی امیونائزیشن کو ضائع کر دیں -immunizationOnlyPersonsWithOverdueImmunization = صرف ان لوگوں کو دکھائیں جن کی امیونائزیشن زائد المیعاد چکی ہے -immunizationOverwriteImmunization = اس ڈیٹا کے ساتھ موجودہ امیونائزیشن کو اوور رائٹ کریں -immunizationCreateNewImmunization = بہرحال، نیا امیونائزیشن بنائیں -immunizationNoImmunizationsForPerson = اس شخص کے لیے کوئی امیونائزیشن نہیں ہے - +openLinkedCaseToImmunizationButton=کھلا کیس +immunizationNewImmunization=نئی امیونائزیشن +immunizationKeepImmunization=موجودہ معلومات کو اپنے پاس رکھیں اور نئی امیونائزیشن کو ضائع کر دیں +immunizationOnlyPersonsWithOverdueImmunization=صرف ان لوگوں کو دکھائیں جن کی امیونائزیشن زائد المیعاد چکی ہے +immunizationOverwriteImmunization=اس ڈیٹا کے ساتھ موجودہ امیونائزیشن کو اوور رائٹ کریں +immunizationCreateNewImmunization=بہرحال، نیا امیونائزیشن بنائیں +immunizationNoImmunizationsForPerson=اس شخص کے لیے کوئی امیونائزیشن نہیں ہے # Statistics statisticsAddFilter=فلٹر شامل کریں statisticsAttribute=خصوصیت @@ -2081,13 +1986,11 @@ statisticsVisualizationType=قسم statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=ڈیٹا دکھایا گیا statisticsOpenSormasStats=Sormas-Stats کھولیں - # Symptoms symptomsLesionsLocations=گھاووں کی لوکلائزیشن symptomsMaxTemperature=° C میں جسم کا زیادہ سے زیادہ درجہ حرارت symptomsSetClearedToNo=کلیئرڈ کو نہیں پر سیٹ کریں symptomsSetClearedToUnknown=کلیئرڈ کو نا معلوم پر سیٹ کریں - Symptoms=علامات Symptoms.abdominalPain=پیٹ کا درد Symptoms.alteredConsciousness=شعور کی تبدیل شدہ سطح @@ -2275,7 +2178,6 @@ Symptoms.palpitations=بے ترتیب دھڑکن Symptoms.dizzinessStandingUp=چکر آنا (جب بیٹھنے یا لیٹنے کی پوزیشن سے کھڑے ہوئے) Symptoms.highOrLowBloodPressure=بلڈ پریشر بہت زیادہ یا بہت کم (ماپا ہوا) Symptoms.urinaryRetention=پیشاب کی برقراری - # Task taskMyTasks=میرے کام taskNewTask=نیا کام @@ -2284,7 +2186,6 @@ taskOfficerTasks=افسر کے کام taskActiveTasks=فعال کام taskArchivedTasks=آرکائیوڈ کام taskAllTasks=تمام کام - Task=کام Task.assigneeReply=عملدرآمدی پر تبصرے Task.assigneeUser=کرنے والا @@ -2306,7 +2207,6 @@ Task.taskType=کام کی قسم Task.taskAssignee=ٹاسک دينے والا Task.taskPriority=کام کی ترجیح Task.travelEntry=سفری اندراج - # TestReport TestReport=ٹیسٹ رپورٹ TestReport.testDateTime=نتیجہ کی تاریخ اور وقت @@ -2316,7 +2216,6 @@ TestReport.testLabName=لیب کا نام TestReport.testLabPostalCode=لیب پوسٹل کوڈ TestReport.testResult=ٹیسٹ کا نتیجہ TestReport.testType=ٹیسٹ کی قسم - # TravelEntry travelEntryCreateCase=کیس بنائیں travelEntryOnlyRecoveredEntries=صرف بازیافت شدہ اندراجات @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=آفیشل قرنطینہ آرڈر بھ TravelEntry.quarantineOfficialOrderSentDate=آفیشل قرنطینہ آرڈر بھیجے جانے کی تاریخ TravelEntry.dateOfArrival=آمد کی تاریخ travelEntryTravelEntriesList=سفری اندراجات کی فہرست - # Treatment treatmentCreateTreatment=علاج کا انداج کریں treatmentNewTreatment=نیا علاج treatmentOpenPrescription=نسخہ کھولیں - Treatment=علاج Treatment.additionalNotes=اضافی نوٹس Treatment.dose=خوراک @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=علاج کی تفصیلات Treatment.treatmentType=علاج کی قسم Treatment.typeOfDrug=دوا کی قسم Treatment.treatmentRoute=علاج کا راستہ - TreatmentExport.caseUuid=کیس کی شناخت TreatmentExport.caseName=کیس کا نام - # User userNewUser=نیا صارف userResetPassword=نیا پاس ورڈ بنائیں @@ -2402,7 +2297,6 @@ syncUsers=صارفین کی مطابقت پذیری syncErrors=%d خرابی syncSuccessful=مطابقت پذیر %d syncProcessed=%d/%d پروسیس شدہ - User=صارف User.active=فعال؟ User.associatedOfficer=وابستہ افسر @@ -2417,12 +2311,10 @@ User.userName=صارف کا نام User.userRoles=صارف کے کردار User.address=پتہ User.uuid=UUID - # Vaccination -vaccinationNewVaccination = نئی ویکسینیشن -vaccinationNoVaccinationsForPerson = اس شخص کے لیے کوئی ویکسینیشن نہیں ہے -vaccinationNoVaccinationsForPersonAndDisease = اس شخص اور بیماری کے لیے کوئی ویکسین نہیں ہے - +vaccinationNewVaccination=نئی ویکسینیشن +vaccinationNoVaccinationsForPerson=اس شخص کے لیے کوئی ویکسینیشن نہیں ہے +vaccinationNoVaccinationsForPersonAndDisease=اس شخص اور بیماری کے لیے کوئی ویکسین نہیں ہے Vaccination=ویکسینیشن Vaccination.uuid=ویکسینیشن شناخت Vaccination.reportDate=رپورٹ کی تاریخ @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC کوڈ Vaccination.vaccinationInfoSource=ویکسینیشن کی معلومات کا ذریعہ Vaccination.pregnant=حاملہ Vaccination.trimester=چوتھائی - # Views View.actions=ایکشن ڈائرکٹری View.groups=گروپ ڈائرکٹری - View.aggregatereports=مجموعی رپورٹنگ (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=مہم کی ڈائرکٹری View.campaign.campaigns.short=مہمات View.campaign.campaigndata=مہم کا ڈیٹا @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=مہم کا ڈیٹا فارم View.campaign.campaigndata.dataform.short=ڈیٹا فارم View.campaign.campaignstatistics=مہم کے اعدادوشمار View.campaign.campaignstatistics.short=مہم کے اعدادوشمار - View.cases=کیس ڈائرکٹری View.cases.merge=ڈپلیکیٹ کیسز کو ضم کریں View.cases.archive=کیس آرکائیو @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=طبی کورس View.cases.maternalhistory=زچگی کی تاریخ View.cases.porthealthinfo=پورٹ کی صحت کی معلومات View.cases.visits=کیس کے دورے - View.persons=شخصی ڈائریکٹری View.persons.data=شخص کی معلومات - View.configuration.communities=کمیونٹیز کنفیگریشن View.configuration.communities.short=کمیونیٹیز View.configuration.districts=اضلاع کی کنفیگریشن @@ -2511,7 +2397,6 @@ View.configuration.populationdata=آبادی کا ڈیٹا View.configuration.populationdata.short=آبادی View.configuration.linelisting=لائن لسٹنگ کنفیگریشن View.configuration.linelisting.short=لائن لسٹنگ - View.contacts=رابطہ کی ڈائرکٹری View.contacts.archive=آرکائیو رابطہ View.contacts.epidata=رابطے کے وبائی امراض کا ڈیٹا @@ -2520,11 +2405,9 @@ View.contacts.merge=ڈپلیکیٹ رابطوں کو ضم کریں View.contacts.person=رابطہ شخص View.contacts.sub= View.contacts.visits=رابطے کے دورے - View.dashboard.contacts=رابطوں کا ڈیش بورڈ View.dashboard.surveillance=نگرانی کا ڈیش بورڈ View.dashboard.campaigns=مہمات کا ڈیش بورڈ - View.events=تقریب کی ڈائرکٹری View.events.archive=تقریب کا آرکائیو View.events.data=تقریب کی معلومات @@ -2532,36 +2415,25 @@ View.events.eventactions=تقریب کی کارروائیاں View.events.eventparticipants=تقریب کے شرکاہ View.events.sub= View.events.eventparticipants.data=تقریب کے شرکاء کی معلومات - View.samples.labMessages=لیب میسج ڈائرکٹری - View.reports=ہفتہ وار رپورٹس View.reports.sub= - View.samples=نمونہ کی ڈائرکٹری View.samples.archive=نمونہ آرکائیو View.samples.data=نمونہ کی معلومات View.samples.sub= - View.travelEntries=سفری اندراجات کی ڈائرکٹری - View.immunizations=امیونائزیشن ڈائرکٹری - View.statistics=اعداد و شمار View.statistics.database-export=ڈیٹا بیس ایکسپورٹ - View.tasks=کام کی مینجمنٹ View.tasks.archive=کام کا آرکائیو View.tasks.sub= - View.users=صارفين کی مینجمنٹ View.users.sub= - View.shareRequests=شیئر کرنے کی درخواست - # Visit visitNewVisit=نیا دورہ - Visit=دورہ Visit.person=دورہ کرنے والا شخص Visit.symptoms=علامات @@ -2573,24 +2445,19 @@ Visit.visitUser=وزٹنگ آفیسر Visit.disease=بیماری Visit.reportLat=عرض البلد رپورٹ کريں Visit.reportLon=طول البلد رپورٹ کريں - # WeeklyReport weeklyReportNoReport=گمشدہ رپورٹ weeklyReportOfficerInformants=مخبر weeklyReportsInDistrict=ہفتہ وار رپورٹس میں %s weeklyReportRegionOfficers=افسران weeklyReportRegionInformants=مخبر - WeeklyReport.epiWeek=EPI ہفتہ WeeklyReport.year=سال - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=کیسز رپورٹ ہوئے - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=مخبر کی دی گئ رپورٹ WeeklyReportInformantSummary.totalCaseCount=مخبر کی طرف سے رپورٹ کردہ کیسز - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=مخبروں کی تعداد WeeklyReportOfficerSummary.informantReports=مخبر رپورٹس کی تعداد @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=مخبر رپورٹس کی تع WeeklyReportOfficerSummary.officer=افسر WeeklyReportOfficerSummary.officerReportDate=افسر کی دی گئ رپورٹ WeeklyReportOfficerSummary.totalCaseCount=افسر کی طرف سے رپورٹ کردہ کیسز - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=مخبروں کی تعداد WeeklyReportRegionSummary.informantReports=مخبر رپورٹس کی تعداد @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=افسران کی تعداد WeeklyReportRegionSummary.officerReports=افسر رپورٹس کی تعداد WeeklyReportRegionSummary.officerReportPercentage=فیصد WeeklyReportRegionSummary.officerZeroReports=افسر رپورٹس کی تعداد صفر - # SORMAS to SORMAS SormasToSormasOptions.organization=تنظیم SormasToSormasOptions.withAssociatedContacts=وابستہ رابطوں کو اشتراک شیئر کریں @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=کے ذریعے شیئرڈ sormasToSormasSharedDate=پر sormasToSormasSentFrom=کی طرف سے بھیجا گیا sormasToSormasSendLabMessage=کسی اور ادارے کو بھیجا گیا -sormasToSormasOriginInfo = کی طرف سے بھیجا گیا +sormasToSormasOriginInfo=کی طرف سے بھیجا گیا BAGExport=BAG ایکسپورٹ - # Survnet Gateway ExternalSurveillanceToolGateway.title=رپورٹنگ ٹول ExternalSurveillanceToolGateway.send=رپورٹنگ ٹول کو بھیجیں @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=بھیجنے کی تصدیق ExternalSurveillanceToolGateway.notTransferred=ابھی تک رپورٹنگ ٹول کو نہیں بھیجا گیا ہے ExternalSurveillanceToolGateway.confirmDelete=مٹانے کی تصدیق ExternalSurveillanceToolGateway.excludeAndSend=%d میں سے %d بھیجیں - patientDiaryRegistrationError=مریض کی ڈائری میں شخص کا اندراج نہیں ہو سکا۔ patientDiaryCancelError=بیرونی جرنل فالو اپ کو منسوخ نہیں کیا جا سکا patientDiaryPersonNotExportable=شخص کو مریض کی ڈائری میں ایکسپورٹ نہیں کیا جا سکتا۔ اس شخص کو ایک درست تاریخ پیدائش اور یا تو ایک درست فون نمبر یا ای میل ایڈریس کی ضرورت ہے۔ - showPlacesOnMap=دکھائیں - changeUserEmail=صارف کا ای میل تبدیل کریں - SurveillanceReport=رپورٹ SurveillanceReport.reportingType=رپورٹنگ کی قسم SurveillanceReport.creatingUser=صارف بنائیں @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=سہولت گاہ کی تفصیلات SurveillanceReport.notificationDetails=تفصیلات surveillanceReportNewReport=نئی رپورٹ surveillanceReportNoReportsForCase=اس کیس کی کوئی رپورٹ نہیں ہے - cancelExternalFollowUpButton=بیرونی فالو اپ کو منسوخ کریں createSymptomJournalAccountButton=PIA اکاؤنٹ بنائیں registerInPatientDiaryButton=CLIMEDO eDiary میں رجسٹر کریں @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=PIA میں کھوليں openInPatientDiaryButton=CLIMEDO میں کھوليں cancelExternalFollowUpPopupTitle=بیرونی فالو اپ کو منسوخ کریں - # User role/right exportUserRoles=صارف کے کردار ایکسپورٹ کریں userRights=صارف کے حقوق userRight=صارف کا حق +UserRight.caption=عنوان UserRight.description=تفصیل UserRight.jurisdiction=دائرہ اختیار UserRight.jurisdictionOfRole=کردار کا دائرہ اختیار - SormasToSormasShareRequest.uuid=درخواست کی شناخت SormasToSormasShareRequest.creationDate=درخواست کی تاریخ SormasToSormasShareRequest.dataType=ڈیٹا کی قسم SormasToSormasShareRequest.status=حالت -SormasToSormasShareRequest.cases = کیسز -SormasToSormasShareRequest.contacts = روابط -SormasToSormasShareRequest.events = تقریبات -SormasToSormasShareRequest.organizationName = بھیجنے والی تنظیم -SormasToSormasShareRequest.senderName = بھیجنے والے کا نام -SormasToSormasShareRequest.ownershipHandedOver = ملکیت حوالے کر دی گئی -SormasToSormasShareRequest.comment = تبصرہ -SormasToSormasShareRequest.responseComment = جوابی تبصرہ - -SormasToSormasPerson.personName = شخص کا نام -SormasToSormasPerson.sex = جنس -SormasToSormasPerson.birthdDate = تاریخ پیدائش -SormasToSormasPerson.address = پتہ - -TaskExport.personFirstName = شخص کا پہلا نام -TaskExport.personLastName = شخص کا آخری نام -TaskExport.personSex = شخص کا جنس -TaskExport.personBirthDate = شخص کی تاریخ پیدائش -TaskExport.personAddressRegion = شخص کے علاقہ کا پتہ -TaskExport.personAddressDistrict = شخص کے پتہ کا ضلع -TaskExport.personAddressCommunity = شخص کے پتہ کی کمیونٹی -TaskExport.personAddressFacility = شخص کے پتہ کی سہولت گاہ -TaskExport.personAddressFacilityDetail = شخص کے پتے کی سہولت کی تفصیلات -TaskExport.personAddressCity = شخص کے پتہ کا شہر -TaskExport.personAddressStreet = شخص کے پتہ کی گلی -TaskExport.personAddressHouseNumber = شخص کے پتہ کا گھر کا نمبر -TaskExport.personAddressPostalCode = شخص کے پتہ کا پوسٹل کوڈ -TaskExport.personPhone = شخص کا فون -TaskExport.personPhoneOwner = شخص کے فون کا مالک -TaskExport.personEmailAddress = شخص کا ای میل پتہ +SormasToSormasShareRequest.cases=کیسز +SormasToSormasShareRequest.contacts=روابط +SormasToSormasShareRequest.events=تقریبات +SormasToSormasShareRequest.organizationName=بھیجنے والی تنظیم +SormasToSormasShareRequest.senderName=بھیجنے والے کا نام +SormasToSormasShareRequest.ownershipHandedOver=ملکیت حوالے کر دی گئی +SormasToSormasShareRequest.comment=تبصرہ +SormasToSormasShareRequest.responseComment=جوابی تبصرہ +SormasToSormasPerson.personName=شخص کا نام +SormasToSormasPerson.sex=جنس +SormasToSormasPerson.birthdDate=تاریخ پیدائش +SormasToSormasPerson.address=پتہ +TaskExport.personFirstName=شخص کا پہلا نام +TaskExport.personLastName=شخص کا آخری نام +TaskExport.personSex=شخص کا جنس +TaskExport.personBirthDate=شخص کی تاریخ پیدائش +TaskExport.personAddressRegion=شخص کے علاقہ کا پتہ +TaskExport.personAddressDistrict=شخص کے پتہ کا ضلع +TaskExport.personAddressCommunity=شخص کے پتہ کی کمیونٹی +TaskExport.personAddressFacility=شخص کے پتہ کی سہولت گاہ +TaskExport.personAddressFacilityDetail=شخص کے پتے کی سہولت کی تفصیلات +TaskExport.personAddressCity=شخص کے پتہ کا شہر +TaskExport.personAddressStreet=شخص کے پتہ کی گلی +TaskExport.personAddressHouseNumber=شخص کے پتہ کا گھر کا نمبر +TaskExport.personAddressPostalCode=شخص کے پتہ کا پوسٹل کوڈ +TaskExport.personPhone=شخص کا فون +TaskExport.personPhoneOwner=شخص کے فون کا مالک +TaskExport.personEmailAddress=شخص کا ای میل پتہ TaskExport.personOtherContactDetails = شخص کے رابطے کی تفصیلات diff --git a/sormas-api/src/main/resources/captions_zh-CN.properties b/sormas-api/src/main/resources/captions_zh-CN.properties index 76d11f96cf9..8167a528f38 100644 --- a/sormas-api/src/main/resources/captions_zh-CN.properties +++ b/sormas-api/src/main/resources/captions_zh-CN.properties @@ -1,5 +1,5 @@ # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright � 2016-2022 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 @@ -14,7 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ############################################################################### - # General Captions all=所有 area=地区 @@ -59,10 +58,9 @@ unknown=未知的 diseaseVariantDetails=疾病变化详情 unassigned=Unassigned assign=Assign -assignToMe = Assign to me +assignToMe=Assign to me endOfProcessingDate=End of processing date dearchiveReason=De-archive reason - # About about=关于 aboutAdditionalInfo=附加信息 @@ -76,18 +74,16 @@ aboutDataDictionary=数据词典(XLSX) aboutSormasWebsite=SORMAS 官方网站 aboutTechnicalManual=技术手册 (PDF) aboutWhatsNew=新功能 -aboutLabMessageAdapter = Lab messages adapter -aboutServiceNotAvailable = Not available -aboutExternalSurveillanceToolGateway = External surveillance tool gateway -aboutDataProtectionDictionary = Data Protection Dictionary (XLSX) - +aboutLabMessageAdapter=Lab messages adapter +aboutServiceNotAvailable=Not available +aboutExternalSurveillanceToolGateway=External surveillance tool gateway +aboutDataProtectionDictionary=Data Protection Dictionary (XLSX) # Action actionNewAction=新建操作 actionNoActions=没有此 %s 操作 actionCreatingLabel=创建于 %s 由 %s actionLastModifiedByLabel=更新于 %s 由 %s actionStatusChangeDate=更新于 %s - Action=行 动 Action.title=标题 Action.description=描述 @@ -100,14 +96,13 @@ Action.actionContext=动作上下文 Action.actionStatus=操作状态 Action.lastModifiedBy=最后修改人 Action.actionMeasure=测量 - # Actions actionApplyDateFilter=应用日期筛选器 actionArchiveInfrastructure=Archive actionArchiveCoreEntity=Archive actionAssignNewEpidNumber=分配新的 epid 号码 actionBack=返回 -actionSend = 发送 +actionSend=发送 actionCancel=取消 actionClear=清空 actionClearAll=清除全部 @@ -175,9 +170,7 @@ actionSaveAndOpenEventParticipant=Save and open event participant actionSaveAndContinue=Save and continue actionDiscardAllAndContinue=Discard all and continue actionDiscardAndContinue=Discard and continue - activityAsCaseFlightNumber=航班号 - ActivityAsCase=Activity as case ActivityAsCase.startDate=活动开始 ActivityAsCase.endDate=活动结束 @@ -198,10 +191,8 @@ ActivityAsCase.gatheringDetails=收集详细信息类型 ActivityAsCase.habitationType=居住类型 ActivityAsCase.habitationDetails=居住详细信息类型 ActivityAsCase.role=角色 - # AdditionalTest additionalTestNewTest=新的测试结果 - AdditionalTest=附加测试 AdditionalTest.altSgpt=ALT/SGPT (U/L) AdditionalTest.arterialVenousBloodGas=动脉/通风血量 @@ -225,7 +216,6 @@ AdditionalTest.testDateTime=Date and time of result AdditionalTest.totalBilirubin=Total bilirubin (umol/L) AdditionalTest.urea=Urea (mmol/L) AdditionalTest.wbcCount=WBC count (x10^9/L) - aggregateReportDeathsShort=D aggregateReportLabConfirmationsShort=L aggregateReportLastWeek=Last Week @@ -242,16 +232,14 @@ AggregateReport.labConfirmations=实验室确认 AggregateReport.deaths=死亡数 AggregateReport.healthFacility=Facility AggregateReport.pointOfEntry=起始点 - -areaActiveAreas = Active areas -areaArchivedAreas = Archived areas -areaAllAreas = All areas -Area.archived = Archived -Area.externalId = External ID - +areaActiveAreas=Active areas +areaArchivedAreas=Archived areas +areaAllAreas=All areas +Area.archived=Archived +Area.externalId=External ID # Bulk actions bulkActions=批量操作 -bulkEditAssignee= Edit assignee +bulkEditAssignee=Edit assignee bulkCancelFollowUp=取消后续行动 bulkCaseClassification=更改案例分类 bulkCaseOutcome=更改案例结果 @@ -274,7 +262,6 @@ bulkSurveillanceOfficer=更换监视员 bulkTaskStatus=Change task status bulkTaskAssignee=Change assignee bulkTaskPriority=Change priority - # Campaign campaignActiveCampaigns=Active campaigns campaignAllCampaigns=All campaigns @@ -294,7 +281,6 @@ campaignDashboardChartHeight=Height in % campaignDashboardOrder=Order campaignSearch=Search Campaign campaignDiagramGroupBy=Group by - Campaign=Campaign Campaign.name=名称 Campaign.description=描述 @@ -308,14 +294,12 @@ Campaign.region=地区 Campaign.district=区域 Campaign.community=社区 Campaign.grouping=分组 - -CampaignFormData.campaign = 宣传活动 -CampaignFormData.campaignFormMeta = 表单 -CampaignFormData.formDate = 表单日期 -CampaignFormData.formValuesJson = 表单数据 -CampaignFormData.area = 区域 +CampaignFormData.campaign=宣传活动 +CampaignFormData.campaignFormMeta=表单 +CampaignFormData.formDate=表单日期 +CampaignFormData.formValuesJson=表单数据 +CampaignFormData.area=区域 CampaignFormData.edit=编辑 - # CaseData caseCasesList=病例列表 caseInfrastructureDataChanged=基础设施数据已更改 @@ -335,7 +319,7 @@ caseFilterWithExtendedQuarantine=仅限具有延伸检疫能力的情况 caseFilterWithReducedQuarantine=仅限检疫量减少 caseFilterOnlyQuarantineHelpNeeded=Help needed in quarantine caseFilterInludeCasesFromOtherJurisdictions=包括来自其他管辖区的案件 -caseFilterOnlyCasesWithFulfilledReferenceDefinition = 仅具有已完成的参考定义的情况 +caseFilterOnlyCasesWithFulfilledReferenceDefinition=仅具有已完成的参考定义的情况 caseFilterRelatedToEvent=Only cases with events caseFilterOnlyFromOtherInstances=Only cases from other instances caseFilterCasesWithReinfection=Only cases with reinfection @@ -343,7 +327,6 @@ caseFilterOnlyCasesNotSharedWithExternalSurvTool=Only cases not yet shared with caseFilterOnlyCasesSharedWithExternalSurvToo=Only cases already shared with reporting tool caseFilterOnlyCasesChangedSinceLastSharedWithExternalSurvTool=Only cases changed since last shared with reporting tool caseFilterOnlyCasesWithDontShareWithExternalSurvTool=Only cases marked with 'Don't share with reporting tool' - caseFacilityDetailsShort=Facility name caseNewCase=新病例 casePlaceOfStay=Place of stay @@ -352,7 +335,7 @@ caseArchivedCases=Archived cases caseAllCases=全部病例 caseTransferCase=移交病例 caseTransferCases=移交病例 -caseReferToFacility=Refer case to a facility +caseReferFromPointOfEntry=Refer case from point of entry casePickCase=选择一个现有的病例 caseCreateCase=创建新病例 caseDefaultView=Default view @@ -374,10 +357,10 @@ convertEventParticipantToCase=Create case from event participant with positive t convertContactToCase=Create case from contact with positive test result? caseSearchSpecificCase=Search specific case caseSearchCase=Search case -caseSelect= Select case +caseSelect=Select case caseCreateNew=Create new case caseDataEnterHomeAddressNow=Enter home address of the case person now - +caseCancelDeletion=Cancel case deletion CaseData=Case CaseData.additionalDetails=General comment CaseData.caseClassification=Case classification @@ -445,7 +428,7 @@ CaseData.reportLat=报告 GPS 纬度 CaseData.reportLon=报告 GPS 经度 CaseData.reportLatLonAccuracy=以米为单位报告 GPS 精度 CaseData.sequelae=序列号 -CaseData.sequelaeDetails=描述序列号 +CaseData.sequelaeDetails=Sequelae Description CaseData.smallpoxVaccinationReceived=过去是否曾接受过天花疫苗接种? CaseData.smallpoxVaccinationScar=是否有天花疫苗接种痕迹? CaseData.smallpoxLastVaccinationDate=Date of last Smallpox vaccination @@ -528,8 +511,7 @@ CaseData.caseReferenceDefinition=Reference definition CaseData.pointOfEntryRegion=Point of entry region CaseData.pointOfEntryDistrict=Point of entry district CaseData.externalData=External data -CaseData.reinfectionStatus = Reinfection status - +CaseData.reinfectionStatus=Reinfection status # CaseExport CaseExport.address=Address CaseExport.addressRegion=Address Region @@ -579,7 +561,6 @@ CaseExport.reportingUserName=Reporting user CaseExport.reportingUserRoles=Reporting user roles CaseExport.followUpStatusChangeUserName=Responsible user CaseExport.followUpStatusChangeUserRoles=Responsible user roles - # CaseHospitalization CaseHospitalization=Hospitalization CaseHospitalization.admissionDate=Date of visit or admission @@ -596,20 +577,20 @@ CaseHospitalization.intensiveCareUnitStart=Start of the stay CaseHospitalization.intensiveCareUnitEnd=End of the stay CaseHospitalization.hospitalizationReason=Reason for hospitalization CaseHospitalization.otherHospitalizationReason=Specify reason - - # CaseImport caseImportErrorDescription=Error description caseImportMergeCase=Override existing case with changes from the imported case? - # CasePreviousHospitalization CasePreviousHospitalization=Previous hospitalization CasePreviousHospitalization.admissionAndDischargeDate=Date of admission & discharge -CasePreviousHospitalization.admittedToHealthFacility =Was patient admitted at the facility as an inpatient? +CasePreviousHospitalization.admittedToHealthFacility=Was patient admitted at the facility as an inpatient? CasePreviousHospitalization.admissionDate=Date of admission CasePreviousHospitalization.description=Description CasePreviousHospitalization.dischargeDate=Date of discharge or transfer CasePreviousHospitalization.editColumn=Edit +CasePreviousHospitalization.region=Region +CasePreviousHospitalization.district=District +CasePreviousHospitalization.community=Community CasePreviousHospitalization.healthFacility=Hospital CasePreviousHospitalization.healthFacilityDetails=Hospital name & description CasePreviousHospitalization.isolated=Isolation @@ -620,10 +601,8 @@ CasePreviousHospitalization.otherHospitalizationReason=Specify reason CasePreviousHospitalization.intensiveCareUnit=Stay in the intensive care unit CasePreviousHospitalization.intensiveCareUnitStart=Start of the stay CasePreviousHospitalization.intensiveCareUnitEnd=End of the stay - # ClinicalVisit clinicalVisitNewClinicalVisit=New clinical assessment - ClinicalVisit=Clinical assessment ClinicalVisit.bloodPressure=Blood pressure ClinicalVisit.heartRate=Heart rate @@ -631,33 +610,26 @@ ClinicalVisit.temperature=Temperature ClinicalVisit.visitDateTime=Date and time of visit ClinicalVisit.visitingPerson=Attending clinician ClinicalVisit.visitRemarks=Clinician remarks - ClinicalVisitExport.caseUuid=Case ID ClinicalVisitExport.caseName=Case name - columnAdditionalTests=Additional tests columnDiseaseShort=Disease columnLastPathogenTest=Latest Pathogen test (CT/CQ-Value) columnNumberOfPendingTasks=Pending tasks columnVaccineName=Vaccine name columnVaccineManufacturer=Vaccine manufacturer - - # Community Community=Community Community.archived=Archived Community.externalID=External ID - communityActiveCommunities=Active communities communityArchivedCommunities=Archived communities communityAllCommunities=All communities - # Configuration Configuration.Facilities=Facilities Configuration.Outbreaks=Outbreaks Configuration.PointsOfEntry=Points of Entry Configuration.LineListing=Line Listing - # Contact contactCancelFollowUp=Cancel follow-up contactCaseContacts=Case contacts @@ -694,8 +666,8 @@ contactOnlyWithSharedEventWithSourceCase=Only contacts with source case linked t contactOnlyWithSourceCaseInGivenEvent=Only contacts whose source case is linked to this event contactFollowUpDay=Day contactQuarantineNotOrdered=No quarantine ordered -contactPersonPhoneNumber = Contact Person's Phone Number -contactSourceCase = Source case +contactPersonPhoneNumber=Contact Person's Phone Number +contactSourceCase=Source case contactMergeDuplicates=Merge duplicates contactBackToDirectory=Back to contact directory contactOpenCasesGuide=Open contacts guide @@ -703,7 +675,6 @@ contactOpenMergeGuide=Open merge guide contactCalculateCompleteness=Calculate completeness contactNumberOfDuplicatesDetected=%d potential duplicates detected contactFilterWithDifferentRegion=Show duplicates with differing regions - Contact=Contact Contact.additionalDetails=General comment Contact.caseClassification=Classification of the source case @@ -720,10 +691,10 @@ Contact.community=Responsible community Contact.contactClassification=Contact classification Contact.contactOfficer=Responsible contact officer Contact.contactOfficerUuid=Responsible contact officer -Contact.contactIdentificationSource = Contact identification source -Contact.contactIdentificationSourceDetails = Contact identification source details -Contact.tracingApp = Tracing app -Contact.tracingAppDetails = Tracing app details, e.g. name +Contact.contactIdentificationSource=Contact identification source +Contact.contactIdentificationSourceDetails=Contact identification source details +Contact.tracingApp=Tracing app +Contact.tracingAppDetails=Tracing app details, e.g. name Contact.contactProximity=Type of contact Contact.contactProximityLongForm=Type of contact - if multiple pick the closest contact proximity Contact.contactStatus=Contact status @@ -803,7 +774,6 @@ Contact.followUpStatusChangeDate=Date of follow-up status change Contact.followUpStatusChangeUser=Responsible user Contact.expectedFollowUpUntil=Expected follow-up until Contact.vaccinationStatus=Vaccination status - # ContactExport ContactExport.address=Address ContactExport.addressDistrict=Address District @@ -826,7 +796,6 @@ ContactExport.reportingUserName=Reporting user ContactExport.reportingUserRoles=Reporting user roles ContactExport.followUpStatusChangeUserName=Responsible user ContactExport.followUpStatusChangeUserRoles=Responsible user roles - # Dashboard dashboardAlive=Alive dashboardApplyCustomFilter=Apply custom filter @@ -951,14 +920,12 @@ dashboardAggregatedNumber=Count dashboardProportion=Proportion (%) dashboardViewAsColumnChart=View as Column Chart dashboardViewAsBarChart=View as Bar Chart - defaultRegion=Default Region defaultDistrict=Default District defaultCommunity=Default Community defaultFacility=Default Facility defaultLaboratory=Default Laboratory defaultPointOfEntry=Default Point Of Entry - devModeCaseCount=Number of generated cases devModeCaseDisease=Disease of the cases devModeCaseDistrict=District of the cases @@ -1008,7 +975,6 @@ devModeGeneratorSeed=Generator Seed devModeLoadDefaultConfig=Load default config devModeLoadPerformanceTestConfig=Load performance testing config devModeUseSeed=Use Seed - DiseaseBurden.caseCount=New cases DiseaseBurden.caseDeathCount=Fatalities DiseaseBurden.casesDifference=Dynamic @@ -1016,36 +982,30 @@ DiseaseBurden.caseFatalityRate=CFR DiseaseBurden.eventCount=Number of events DiseaseBurden.outbreakDistrictCount=Outbreak districts DiseaseBurden.previousCaseCount=Previous cases - # District districtActiveDistricts=Active districts districtArchivedDistricts=Archived districts districtAllDistricts=All districts - District=District District.archived=Archived District.epidCode=Epid code District.growthRate=Growth rate District.population=Population District.externalID=External ID - epiDataNoSourceContacts=No source contacts have been created for this case - EpiData=Epidemiological data EpiData.areaInfectedAnimals=Residing, working or travelling to an area where infected animals have been confirmed EpiData.exposureDetailsKnown=Exposure details known EpiData.exposures=Exposures -EpiData.activityAsCaseDetailsKnown = Activity details known -EpiData.activitiesAsCase = Activities as case +EpiData.activityAsCaseDetailsKnown=Activity details known +EpiData.activitiesAsCase=Activities as case EpiData.highTransmissionRiskArea=Residing or working in an area with high risk of transmission of the disease, e.g. closed residential and camp-like settings EpiData.largeOutbreaksArea=Residing or travelling to countries/territories/areas experiencing larger outbreaks of local transmission EpiData.contactWithSourceCaseKnown=Contacts with source case known - # Documents documentUploadDocument=New document documentNoDocuments=There are no documents for this %s bulkActionCreatDocuments=Create quarantine order documents - # DocumentTemplate DocumentTemplate=Document Template DocumentTemplate.buttonUploadTemplate=Upload Template @@ -1068,7 +1028,6 @@ DocumentTemplate.uploadGeneratedDocumentsToEntities=Also upload the generated do DocumentTemplate.documentUploadWarning=Document upload warning DocumentTemplate.fileTooBig=The documents were successfully generated, but at least one document could not be uploaded to its entity because its file size exceeds the specified file size limit of %dMB DocumentTemplate.notUploaded=Documents could not be uploaded to the following entities\: - # Event eventActiveEvents=Active events eventArchivedEvents=Archived events @@ -1110,11 +1069,9 @@ eventLinkToEventsWithinTheSameFacility=See events within the same facility eventNoDisease=No disease eventGroups=Event groups eventGroupsMultiple=This event is related to %s event groups - eventFilterOnlyEventsNotSharedWithExternalSurvTool=Only events not yet shared with reporting tool eventFilterOnlyEventsSharedWithExternalSurvTool=Only events already shared with reporting tool eventFilterOnlyEventsChangedSinceLastSharedWithExternalSurvTool=Only events changed since last shared with reporting tool - Event=Event Event.caseCount=Cases Event.contactCount=Contacts @@ -1185,7 +1142,6 @@ Event.internalToken=Internal Token Event.eventGroups=Groups Event.latestEventGroup=Latest Event Group Event.eventGroupCount=Event Group Count - # Event action EventAction.eventUuid=Event id EventAction.eventTitle=Event title @@ -1207,12 +1163,9 @@ EventAction.actionChangeDate=Action change date EventAction.actionStatus=Action status EventAction.actionPriority=Action priority EventAction.actionLastModifiedBy=Action last modified by - # Event action export EventActionExport.eventDate=Date of event - #Event export - # EventParticipant eventParticipantAddPerson=Add participant eventParticipantContactCountOnlyWithSourceCaseInEvent=Only counts contacts whose source case is related to this event @@ -1221,7 +1174,6 @@ eventParticipantCreateNew=Create new event participant eventParticipantActiveEventParticipants=Active event participants eventParticipantAllEventParticipants=All event participants eventParticipantArchivedEventParticipants=Archived event participants - EventParticipant=Event participant EventParticipant.contactCount=Contact count EventParticipant.event=Event @@ -1238,7 +1190,6 @@ EventParticipant.uuid=Event participant ID EventParticipant.region=Responsible region EventParticipant.district=Responsible district EventParticipant.vaccinationStatus=Vaccination status - #EventParticipant export EventParticipantExport.eventParticipantU=Event disease EventParticipantExport.eventDisease=Event disease @@ -1263,13 +1214,11 @@ EventParticipantExport.sampleInformation=Sample information EventParticipantExport.personNationalHealthId=Person National Health Id EventParticipantExport.eventParticipantInvolvmentDescription=Involvment description EventParticipantExport.eventParticipantUuid=Event participant ID - # Event Group EventGroup=Event group EventGroup.uuid=Group id EventGroup.name=Group name EventGroup.eventCount=Event count - # Expo export=Export exportBasic=Basic Export @@ -1285,18 +1234,15 @@ exportCaseCustom=Custom Case Export exportNewExportConfiguration=New Export Configuration exportEditExportConfiguration=Edit Export Configuration exportConfigurationData=Configuration data - ExportConfiguration.NAME=Configuration name ExportConfiguration.myExports=My exports ExportConfiguration.sharedExports=Shared exports ExportConfiguration.sharedToPublic=Shared to public - exposureFlightNumber=Flight number exposureTimePeriod=Time period exposureSourceCaseName=Name of source case - Exposure=Exposure -Exposure.probableInfectionEnvironment= Probable infection environment +Exposure.probableInfectionEnvironment=Probable infection environment Exposure.startDate=Start of exposure Exposure.endDate=End of exposure Exposure.exposureType=Type of activity @@ -1348,16 +1294,13 @@ Exposure.riskArea=Risk area as defined by public health institution Exposure.exposureDate=Exposure date Exposure.exposureRole=Role Exposure.largeAttendanceNumber=More than 300 attendees - # Facility facilityActiveFacilities=Active facilities facilityArchivedFacilities=Archived facilities facilityAllFacilities=All facilities - Facility.CONFIGURED_FACILITY=Configured facility Facility.NO_FACILITY=Home or other place Facility.OTHER_FACILITY=Other facility - Facility=Facility Facility.additionalInformation=Additional information Facility.archived=Archived @@ -1376,26 +1319,22 @@ Facility.publicOwnership=Public ownership Facility.region=Region Facility.type=Facility type Facility.typeGroup=Facility category -Facility.contactPersonFirstName = Contact person first name -Facility.contactPersonLastName = Contact person last name -Facility.contactPersonPhone = Contact person phone number -Facility.contactPersonEmail = Contact person email address - +Facility.contactPersonFirstName=Contact person first name +Facility.contactPersonLastName=Contact person last name +Facility.contactPersonPhone=Contact person phone number +Facility.contactPersonEmail=Contact person email address FeatureConfiguration.districtName=District FeatureConfiguration.enabled=Line listing enabled? FeatureConfiguration.endDate=End date - # Formats formatNumberOfVisitsFormat=%d (%d missed) formatNumberOfVisitsLongFormat=%d visits (%d missed) formatSimpleNumberFormat=%d - # FollowUp FollowUp.uuid=Follow-up ID FollowUp.person=Follow-up person FollowUp.reportDate=Date of report FollowUp.followUpUntil=Follow-up until - # HealthConditions HealthConditions=Health conditions HealthConditions.tuberculosis=Tuberculosis @@ -1421,7 +1360,6 @@ HealthConditions.formerSmoker=Former smoker HealthConditions.asthma=Asthma HealthConditions.sickleCellDisease=Sickle cell disease HealthConditions.immunodeficiencyIncludingHiv=Immunodeficiency including HIV - # Import importDetailed=Detailed Import importDownloadCaseImportTemplate=Download Case Import Template @@ -1440,7 +1378,6 @@ importSkips=%d Skipped importValueSeparator=Value separator importCancelImport=Cancel import infrastructureImportAllowOverwrite=Overwrite existing entries with imported data - #Lab Message LabMessage=Lab Message LabMessage.labMessageDetails=Lab message details @@ -1473,7 +1410,7 @@ labMessage.deleteNewlyCreatedEventParticipant=Delete new event participant you j LabMessage.reportId=Report ID LabMessage.sampleOverallTestResult=Overall test result LabMessage.assignee=Assignee - +LabMessage.type=Type labMessageFetch=Fetch lab messages labMessageProcess=Process labMessageNoDisease=No tested disease found @@ -1481,12 +1418,10 @@ labMessageNoNewMessages=No new messages available labMessageForwardedMessageFound=Related forwarded lab message(s) found labMessageLabMessagesList=Lab messages list labMessageRelatedEntriesFound=Related entries found - LabMessageCriteria.messageDateFrom=Message date from... LabMessageCriteria.messageDateTo=... to LabMessageCriteria.birthDateFrom=Birth date from... LabMessageCriteria.birthDateTo=... to - #Line listing lineListing=Line listing lineListingAddLine=Add line @@ -1502,7 +1437,6 @@ lineListingEnableAll=Enable all lineListingDisableAllShort=Disable all lineListingEndDate=End date lineListingSetEndDateForAll=Set end date for all - # Location Location=Location Location.additionalInformation=Additional information @@ -1519,38 +1453,38 @@ Location.latLon=GPS lat and lon Location.latLonAccuracy=GPS accuracy in m Location.longitude=GPS longitude Location.postalCode=Postal code +Location.continent=Continent +Location.subcontinent=Subcontinent +Location.country=Country +Location.region=Region Location.district=District Location.community=Community Location.street=Street -Location.contactPersonFirstName = Contact person first name -Location.contactPersonLastName = Contact person last name -Location.contactPersonPhone = Contact person phone number -Location.contactPersonEmail = Contact person email address - +Location.contactPersonFirstName=Contact person first name +Location.contactPersonLastName=Contact person last name +Location.contactPersonPhone=Contact person phone number +Location.contactPersonEmail=Contact person email address # Login Login.doLogIn=Log in Login.login=Login Login.password=password Login.username=username - #LoginSidebar LoginSidebar.diseaseDetection=Disease Detection LoginSidebar.diseasePrevention=Disease Prevention LoginSidebar.outbreakResponse=Outbreak Response LoginSidebar.poweredBy=Powered By - # Messaging messagesSendSMS=Send SMS messagesSentBy=Sent by messagesNoSmsSentForCase=No SMS sent to case person messagesNoPhoneNumberForCasePerson=Case person has no phone number -messagesSms = SMS -messagesEmail = Email -messagesSendingSms = Send new SMS -messagesNumberOfMissingPhoneNumbers = Number of selected cases without phone number\: %s -messagesCharacters = Characters\: %d / 160 -messagesNumberOfMessages = Nr. of messages\: %d - +messagesSms=SMS +messagesEmail=Email +messagesSendingSms=Send new SMS +messagesNumberOfMissingPhoneNumbers=Number of selected cases without phone number\: %s +messagesCharacters=Characters\: %d / 160 +messagesNumberOfMessages=Nr. of messages\: %d # Main Menu mainMenuAbout=About mainMenuCampaigns=Campaigns @@ -1569,7 +1503,6 @@ mainMenuTasks=Tasks mainMenuUsers=Users mainMenuAggregateReports=mSERS mainMenuShareRequests=Shares - MaternalHistory.childrenNumber=Total number of children MaternalHistory.ageAtBirth=Mother's age at birth of infant patient MaternalHistory.conjunctivitis=Conjunctivitis @@ -1596,13 +1529,11 @@ MaternalHistory.otherComplications=Other complications MaternalHistory.otherComplicationsOnset=Date of onset MaternalHistory.otherComplicationsMonth=Month of pregnancy MaternalHistory.otherComplicationsDetails=Complication details - # Outbreak outbreakAffectedDistricts=Affected districts outbreakNoOutbreak=No outbreak outbreakNormal=Normal outbreakOutbreak=Outbreak - # PathogenTest pathogenTestAdd=Add pathogen test pathogenTestCreateNew=Create new pathogen test @@ -1610,7 +1541,6 @@ pathogenTestNewResult=New result pathogenTestNewTest=New test result pathogenTestRemove=Remove this pathogen test pathogenTestSelect=Select pathogen test - PathogenTest=Pathogen test PathogenTests=Pathogen tests PathogenTest.fourFoldIncreaseAntibodyTiter=4 fold increase of antibody titer @@ -1635,7 +1565,6 @@ PathogenTest.viaLims=Via LIMS PathogenTest.testedDiseaseVariantDetails=Disease variant details PathogenTest.externalOrderId=External order ID PathogenTest.preliminary=Preliminary - # Person personPersonsList=Person list personCreateNew=Create a new person @@ -1652,7 +1581,6 @@ personLinkToContacts=See contacts for this person personsReplaceGeoCoordinates=Also replace existing coordinates. Warning\: This might replace coordinates which were intentionally set differently\! personsSetMissingGeoCoordinates=Set Missing Geo Coordinates personsUpdated=Persons Updated - Person=Person Person.additionalDetails=General comment Person.address=Home address @@ -1727,33 +1655,28 @@ Person.otherSalutation=Other salutation Person.birthName=Birth name Person.birthCountry=Country of birth Person.citizenship=Citizenship - -personContactDetailOwner = Owner -personContactDetailOwnerName = Owner name -personContactDetailThisPerson = This person -personContactDetailThirdParty = Collect contact details of another person or facility - -PersonContactDetail = Person contact detail -PersonContactDetail.person = Person -PersonContactDetail.primaryContact = Primary contact details -PersonContactDetail.personContactDetailType = Type of contact details -PersonContactDetail.phoneNumberType = Phone number type -PersonContactDetail.details = Details -PersonContactDetail.contactInformation = Contact information -PersonContactDetail.additionalInformation = Additional information -PersonContactDetail.thirdParty = Third party -PersonContactDetail.thirdPartyRole = Third party role -PersonContactDetail.thirdPartyName = Third party name - +personContactDetailOwner=Owner +personContactDetailOwnerName=Owner name +personContactDetailThisPerson=This person +personContactDetailThirdParty=Collect contact details of another person or facility +PersonContactDetail=Person contact detail +PersonContactDetail.person=Person +PersonContactDetail.primaryContact=Primary contact details +PersonContactDetail.personContactDetailType=Type of contact details +PersonContactDetail.phoneNumberType=Phone number type +PersonContactDetail.details=Details +PersonContactDetail.contactInformation=Contact information +PersonContactDetail.additionalInformation=Additional information +PersonContactDetail.thirdParty=Third party +PersonContactDetail.thirdPartyRole=Third party role +PersonContactDetail.thirdPartyName=Third party name pointOfEntryActivePointsOfEntry=Active points of entry pointOfEntryArchivedPointsOfEntry=Archived points of entry pointOfEntryAllPointsOfEntry=All points of entry - PointOfEntry.OTHER_AIRPORT=Other airport PointOfEntry.OTHER_SEAPORT=Other seaport PointOfEntry.OTHER_GROUND_CROSSING=Other ground crossing PointOfEntry.OTHER_POE=Other point of entry - PointOfEntry=Point of entry PointOfEntry.pointOfEntryType=Point of entry type PointOfEntry.active=Active? @@ -1761,10 +1684,8 @@ PointOfEntry.latitude=Latitude PointOfEntry.longitude=Longitude PointOfEntry.externalID=External ID PointOfEntry.archived=Archived - populationDataMaleTotal=Male total populationDataFemaleTotal=Female total - PortHealthInfo=Port health information PortHealthInfo.airlineName=Airline name PortHealthInfo.flightNumber=Flight number @@ -1788,10 +1709,8 @@ PortHealthInfo.conveyanceTypeDetails=Specify the conveyance type PortHealthInfo.departureLocation=Start location of travel PortHealthInfo.finalDestination=Final destination PortHealthInfo.details=Point of entry details - # Prescription prescriptionNewPrescription=New prescription - Prescription=Prescription Prescription.additionalNotes=Additional notes Prescription.dose=Dose @@ -1808,38 +1727,31 @@ Prescription.prescriptionType=Prescription type Prescription.route=Route Prescription.routeDetails=Route specification Prescription.typeOfDrug=Type of drug - PrescriptionExport.caseUuid=Case ID PrescriptionExport.caseName=Case name - # Continent continentActiveContinents=Active continents continentArchivedContinents=Archived continents continentAllContinents=All continents - Continent=Continent Continent.archived=Archived Continent.externalId=External ID Continent.defaultName=Default name Continent.displayName=Name - # Subcontinent subcontinentActiveSubcontinents=Active subcontinents subcontinentArchivedSubcontinents=Archived subcontinents subcontinentAllSubcontinents=All subcontinents - Subcontinent=Subcontinent Subcontinent.archived=Archived Subcontinent.externalId=External ID Subcontinent.defaultName=Default name Subcontinent.displayName=Name Subcontinent.continent=Continent name - # Country countryActiveCountries=Active countries countryArchivedCountries=Archived countries countryAllCountries=All countries - Country=Country Country.archived=Archived Country.externalId=External ID @@ -1848,12 +1760,10 @@ Country.displayName=Name Country.isoCode=ISO code Country.unoCode=UNO code Country.subcontinent=Subcontinent - # Region regionActiveRegions=Active regions regionArchivedRegions=Archived regions regionAllRegions=All regions - Region=Region Region.archived=Archived Region.epidCode=Epid code @@ -1861,7 +1771,6 @@ Region.growthRate=Growth rate Region.population=Population Region.externalID=External ID Region.country=Country - # Sample sampleCreateNew=Create new sample sampleIncludeTestOnCreation=Create test result for this sample now @@ -1888,7 +1797,6 @@ sampleActiveSamples=Active samples sampleArchivedSamples=Archived samples sampleAllSamples=All samples sampleAssociationType=Sample type - Sample=Sample Sample.additionalTestingRequested=Request additional tests to be performed? Sample.additionalTestingStatus=Additional testing status @@ -1941,23 +1849,22 @@ Sample.uuid=Sample ID Sample.samplePurpose=Purpose of the Sample Sample.samplingReason=Reason for sampling/testing Sample.samplingReasonDetails=Sampling reason details - SampleExport.additionalTestingRequested=Have additional tests been requested? SampleExport.personAddressCaption=Address of case/contact/event participant person SampleExport.personAge=Age of case/contact/event participant person SampleExport.caseDistrict=District of case SampleExport.caseCommunity=Community of case SampleExport.caseFacility=Facility of case -SampleExport.contactRegion = Region of contact -SampleExport.contactDistrict = District of contact -SampleExport.contactCommunity = Community of contact +SampleExport.contactRegion=Region of contact +SampleExport.contactDistrict=District of contact +SampleExport.contactCommunity=Community of contact SampleExport.caseOutcome=Outcome of case SampleExport.caseRegion=Region of case SampleExport.caseReportDate=Case report date SampleExport.personSex=Sex of case/contact/event participant person SampleExport.caseUuid=Case UUID -SampleExport.contactUuid = Contact UUID -SampleExport.contactReportDate = Contact report date +SampleExport.contactUuid=Contact UUID +SampleExport.contactReportDate=Contact report date SampleExport.id=Sample SN SampleExport.sampleReportDate=Sample report date SampleExport.noTestPossibleReason=No test possible reason @@ -2009,55 +1916,53 @@ SampleExport.testDateTime=Date and time of latest additional test SampleExport.totalBilirubin=Total bilirubin of latest additional test SampleExport.urea=Urea of latest additional test SampleExport.wbcCount=WBC count of latest additional test - # Immunization Immunization=免疫 Immunization.reportDate=Date of report Immunization.externalId=External ID Immunization.country=Immunization country -Immunization.disease = Disease -Immunization.diseaseDetails = Disease details +Immunization.disease=Disease +Immunization.diseaseDetails=Disease details Immunization.healthFacility=Facility Immunization.healthFacilityDetails=Facility name & description -Immunization.meansOfImmunization = Means of immunization -Immunization.meansOfImmunizationDetails = Means of immunization details -Immunization.overwriteImmunizationManagementStatus = Overwrite immunization management status -Immunization.immunizationManagementStatus = Management status -Immunization.immunizationStatus = Immunization status -Immunization.startDate = Start date -Immunization.endDate = End date -Immunization.validFrom = Valid from -Immunization.validUntil = Valid until -Immunization.numberOfDoses = Number of doses -Immunization.numberOfDosesDetails = Number of doses details -Immunization.vaccinations = Vaccinations -Immunization.uuid = Immunization Id -Immunization.personUuid = Person Id -Immunization.personFirstName = First name -Immunization.personLastName = Last name -Immunization.ageAndBirthDate = Age and birthdate -Immunization.recoveryDate = Date of recovery -Immunization.positiveTestResultDate = Date of first positive test result -Immunization.previousInfection = Previous infection with this disease -Immunization.lastInfectionDate = Date of last infection -Immunization.lastVaccineType = Type of last vaccine -Immunization.firstVaccinationDate = Date of first vaccination -Immunization.lastVaccinationDate = Date of last vaccination -Immunization.additionalDetails = Additional details -Immunization.responsibleRegion = Responsible region -Immunization.responsibleDistrict = Responsible district -Immunization.responsibleCommunity = Responsible community -Immunization.immunizationPeriod = Immunization period -immunizationImmunizationsList = Immunizations list +Immunization.meansOfImmunization=Means of immunization +Immunization.meansOfImmunizationDetails=Means of immunization details +Immunization.overwriteImmunizationManagementStatus=Overwrite immunization management status +Immunization.immunizationManagementStatus=Management status +Immunization.immunizationStatus=Immunization status +Immunization.startDate=Start date +Immunization.endDate=End date +Immunization.validFrom=Valid from +Immunization.validUntil=Valid until +Immunization.numberOfDoses=Number of doses +Immunization.numberOfDosesDetails=Number of doses details +Immunization.vaccinations=Vaccinations +Immunization.uuid=Immunization Id +Immunization.personUuid=Person Id +Immunization.personFirstName=First name +Immunization.personLastName=Last name +Immunization.ageAndBirthDate=Age and birthdate +Immunization.recoveryDate=Date of recovery +Immunization.positiveTestResultDate=Date of first positive test result +Immunization.previousInfection=Previous infection with this disease +Immunization.lastInfectionDate=Date of last infection +Immunization.lastVaccineType=Type of last vaccine +Immunization.firstVaccinationDate=Date of first vaccination +Immunization.lastVaccinationDate=Date of last vaccination +Immunization.additionalDetails=Additional details +Immunization.responsibleRegion=Responsible region +Immunization.responsibleDistrict=Responsible district +Immunization.responsibleCommunity=Responsible community +Immunization.immunizationPeriod=Immunization period +immunizationImmunizationsList=Immunizations list linkImmunizationToCaseButton=Link case -openLinkedCaseToImmunizationButton = Open case -immunizationNewImmunization = New immunization -immunizationKeepImmunization = Keep the existing information and discard the new immunization -immunizationOnlyPersonsWithOverdueImmunization = Only show persons with overdue immunization -immunizationOverwriteImmunization = Overwrite the existing immunization with this data -immunizationCreateNewImmunization = Create the new immunization anyway -immunizationNoImmunizationsForPerson = There are no immunizations for this person - +openLinkedCaseToImmunizationButton=Open case +immunizationNewImmunization=New immunization +immunizationKeepImmunization=Keep the existing information and discard the new immunization +immunizationOnlyPersonsWithOverdueImmunization=Only show persons with overdue immunization +immunizationOverwriteImmunization=Overwrite the existing immunization with this data +immunizationCreateNewImmunization=Create the new immunization anyway +immunizationNoImmunizationsForPerson=There are no immunizations for this person # Statistics statisticsAddFilter=Add filter statisticsAttribute=Attribute @@ -2081,13 +1986,11 @@ statisticsVisualizationType=Type statisticsIncidenceDivisor=Incidence divisor statisticsDataDisplayed=Data displayed statisticsOpenSormasStats=Open Sormas-Stats - # Symptoms symptomsLesionsLocations=Localization of the lesions symptomsMaxTemperature=Maximum body temperature in ° C symptomsSetClearedToNo=Set cleared to No symptomsSetClearedToUnknown=Set cleared to Unknown - Symptoms=Symptoms Symptoms.abdominalPain=Abdominal pain Symptoms.alteredConsciousness=Altered level of consciousness @@ -2275,7 +2178,6 @@ Symptoms.palpitations=Palpitations Symptoms.dizzinessStandingUp=Dizziness (when standing up from a sitting or lying position) Symptoms.highOrLowBloodPressure=Blood pressure too high or too low (measured) Symptoms.urinaryRetention=Urinary retention - # Task taskMyTasks=My tasks taskNewTask=New task @@ -2284,7 +2186,6 @@ taskOfficerTasks=Officer tasks taskActiveTasks=Active tasks taskArchivedTasks=Archived tasks taskAllTasks=All tasks - Task=Task Task.assigneeReply=Comments on execution Task.assigneeUser=Assigned to @@ -2306,7 +2207,6 @@ Task.taskType=Task type Task.taskAssignee=Task assignee Task.taskPriority=Task priority Task.travelEntry=Travel entry - # TestReport TestReport=Test report TestReport.testDateTime=Date and time of result @@ -2316,7 +2216,6 @@ TestReport.testLabName=Lab name TestReport.testLabPostalCode=Lab postal code TestReport.testResult=Test result TestReport.testType=Type of test - # TravelEntry travelEntryCreateCase=Create case travelEntryOnlyRecoveredEntries=Only recovered entries @@ -2369,12 +2268,10 @@ TravelEntry.quarantineOfficialOrderSent=Official quarantine order sent? TravelEntry.quarantineOfficialOrderSentDate=Date official quarantine order was sent TravelEntry.dateOfArrival=Date of Arrival travelEntryTravelEntriesList=Travel entries list - # Treatment treatmentCreateTreatment=Create treatment treatmentNewTreatment=New treatment treatmentOpenPrescription=Open prescription - Treatment=Treatment Treatment.additionalNotes=Additional notes Treatment.dose=Dose @@ -2389,10 +2286,8 @@ Treatment.treatmentDetails=Treatment details Treatment.treatmentType=Treatment type Treatment.typeOfDrug=Type of drug Treatment.treatmentRoute=Treatment route - TreatmentExport.caseUuid=Case ID TreatmentExport.caseName=Case name - # User userNewUser=New user userResetPassword=Create new password @@ -2402,7 +2297,6 @@ syncUsers=Sync Users syncErrors=%d Error(s) syncSuccessful=%d Synced syncProcessed=%d/%d Processed - User=User User.active=Active? User.associatedOfficer=Associated officer @@ -2417,12 +2311,10 @@ User.userName=User name User.userRoles=User roles User.address=Address User.uuid=UUID - # Vaccination -vaccinationNewVaccination = New vaccination -vaccinationNoVaccinationsForPerson = There are no vaccinations for this person -vaccinationNoVaccinationsForPersonAndDisease = There are no vaccinations for this person and disease - +vaccinationNewVaccination=New vaccination +vaccinationNoVaccinationsForPerson=There are no vaccinations for this person +vaccinationNoVaccinationsForPersonAndDisease=There are no vaccinations for this person and disease Vaccination=Vaccination Vaccination.uuid=Vaccination ID Vaccination.reportDate=Report date @@ -2441,14 +2333,11 @@ Vaccination.vaccineAtcCode=ATC code Vaccination.vaccinationInfoSource=Vaccination info source Vaccination.pregnant=Pregnant Vaccination.trimester=Trimester - # Views View.actions=Action Directory View.groups=Group Directory - View.aggregatereports=Aggregate Reporting (mSERS) View.aggregatereports.sub= - View.campaign.campaigns=Campaign Directory View.campaign.campaigns.short=Campaigns View.campaign.campaigndata=Campaign Data @@ -2457,7 +2346,6 @@ View.campaign.campaigndata.dataform=Campaign Data Form View.campaign.campaigndata.dataform.short=Data Form View.campaign.campaignstatistics=Campaign statistics View.campaign.campaignstatistics.short=Campaign statistics - View.cases=Case Directory View.cases.merge=Merge Duplicate Cases View.cases.archive=Case Archive @@ -2473,10 +2361,8 @@ View.cases.clinicalcourse=Clinical Course View.cases.maternalhistory=Maternal History View.cases.porthealthinfo=Port Health Information View.cases.visits=Case Visits - View.persons=Person Directory View.persons.data=Person Information - View.configuration.communities=Communities Configuration View.configuration.communities.short=Communities View.configuration.districts=Districts Configuration @@ -2511,7 +2397,6 @@ View.configuration.populationdata=Population Data View.configuration.populationdata.short=Population View.configuration.linelisting=Line Listing Configuration View.configuration.linelisting.short=Line Listing - View.contacts=Contact Directory View.contacts.archive=Contact Archive View.contacts.epidata=Contact Epidemiological Data @@ -2520,11 +2405,9 @@ View.contacts.merge=Merge Duplicate Contacts View.contacts.person=Contact Person View.contacts.sub= View.contacts.visits=Contact Visits - View.dashboard.contacts=Contacts Dashboard View.dashboard.surveillance=Surveillance Dashboard View.dashboard.campaigns=Campaigns Dashboard - View.events=Event Directory View.events.archive=Event Archive View.events.data=Event Information @@ -2532,36 +2415,25 @@ View.events.eventactions=Event Actions View.events.eventparticipants=Event Participants View.events.sub= View.events.eventparticipants.data=Event Participant Information - View.samples.labMessages=Lab Message Directory - View.reports=Weekly Reports View.reports.sub= - View.samples=Sample Directory View.samples.archive=Sample Archive View.samples.data=Sample Information View.samples.sub= - View.travelEntries=Travel Entries Directory - View.immunizations=Immunization Directory - View.statistics=Statistics View.statistics.database-export=Database export - View.tasks=Task Management View.tasks.archive=Task Archive View.tasks.sub= - View.users=User Management View.users.sub= - View.shareRequests=Share requests - # Visit visitNewVisit=New visit - Visit=Visit Visit.person=Visited person Visit.symptoms=Symptoms @@ -2573,24 +2445,19 @@ Visit.visitUser=Visiting officer Visit.disease=Disease Visit.reportLat=Report latitude Visit.reportLon=Report longitude - # WeeklyReport weeklyReportNoReport=Missing report weeklyReportOfficerInformants=Informants weeklyReportsInDistrict=Weekly Reports in %s weeklyReportRegionOfficers=Officers weeklyReportRegionInformants=Informants - WeeklyReport.epiWeek=Epi Week WeeklyReport.year=Year - # WeeklyReportEntry WeeklyReportEntry.numberOfCases=Cases reported - # WeeklyReportInformantSummary WeeklyReportInformantSummary.informantReportDate=Informant report submission WeeklyReportInformantSummary.totalCaseCount=Cases reported by informant - # WeeklyReportOfficerSummary WeeklyReportOfficerSummary.informants=Number of informants WeeklyReportOfficerSummary.informantReports=Number of informant reports @@ -2599,7 +2466,6 @@ WeeklyReportOfficerSummary.informantZeroReports=Number of informant zero reports WeeklyReportOfficerSummary.officer=Officer WeeklyReportOfficerSummary.officerReportDate=Officer report submission WeeklyReportOfficerSummary.totalCaseCount=Cases reported by officer - # WeeklyReportRegionSummary WeeklyReportRegionSummary.informants=Number of informants WeeklyReportRegionSummary.informantReports=Number of informant reports @@ -2609,7 +2475,6 @@ WeeklyReportRegionSummary.officers=Number of officers WeeklyReportRegionSummary.officerReports=Number of officers reports WeeklyReportRegionSummary.officerReportPercentage=Percentage WeeklyReportRegionSummary.officerZeroReports=Number of officer zero reports - # SORMAS to SORMAS SormasToSormasOptions.organization=Organization SormasToSormasOptions.withAssociatedContacts=Share associated contacts @@ -2638,9 +2503,8 @@ sormasToSormasSharedBy=Shared by sormasToSormasSharedDate=On sormasToSormasSentFrom=Sent from sormasToSormasSendLabMessage=Send to another organization -sormasToSormasOriginInfo = 发自 +sormasToSormasOriginInfo=发自 BAGExport=BAG Export - # Survnet Gateway ExternalSurveillanceToolGateway.title=Reporting Tool ExternalSurveillanceToolGateway.send=Send to reporting tool @@ -2649,15 +2513,11 @@ ExternalSurveillanceToolGateway.confirmSend=Confirm sending ExternalSurveillanceToolGateway.notTransferred=Not yet sent to reporting tool ExternalSurveillanceToolGateway.confirmDelete=Confirm delete ExternalSurveillanceToolGateway.excludeAndSend=Send %d of %d - patientDiaryRegistrationError=Could not register person in the patient diary. patientDiaryCancelError=Could not cancel external journal follow-up patientDiaryPersonNotExportable=Cannot export the person to the patient diary. The person needs a valid birthdate and either a valid phone number or email address. - showPlacesOnMap=Show - changeUserEmail=Change user email - SurveillanceReport=Report SurveillanceReport.reportingType=Type of reporting SurveillanceReport.creatingUser=Creating user @@ -2671,7 +2531,6 @@ SurveillanceReport.facilityDetails=Facility details SurveillanceReport.notificationDetails=Details surveillanceReportNewReport=New report surveillanceReportNoReportsForCase=There are no reports for this case - cancelExternalFollowUpButton=Cancel external follow-up createSymptomJournalAccountButton=Create PIA Account registerInPatientDiaryButton=Register in CLIMEDO eDiary @@ -2680,47 +2539,44 @@ patientDiaryOptionsButton=CLIMEDO eDiary openInSymptomJournalButton=Open in PIA openInPatientDiaryButton=Open in CLIMEDO cancelExternalFollowUpPopupTitle=Cancel External Follow-Up - # User role/right exportUserRoles=Export user roles userRights=User Rights userRight=User Right +UserRight.caption=Caption UserRight.description=Description UserRight.jurisdiction=Jurisdiction UserRight.jurisdictionOfRole=Jurisdiction of role - SormasToSormasShareRequest.uuid=Request ID SormasToSormasShareRequest.creationDate=Request date SormasToSormasShareRequest.dataType=Type of data SormasToSormasShareRequest.status=Status -SormasToSormasShareRequest.cases = Cases -SormasToSormasShareRequest.contacts = Contacts -SormasToSormasShareRequest.events = Events -SormasToSormasShareRequest.organizationName = Sender organization -SormasToSormasShareRequest.senderName = Sender name -SormasToSormasShareRequest.ownershipHandedOver = Ownership handed over -SormasToSormasShareRequest.comment = Comment -SormasToSormasShareRequest.responseComment = Response comment - -SormasToSormasPerson.personName = Person name -SormasToSormasPerson.sex = Sex -SormasToSormasPerson.birthdDate = Birth date -SormasToSormasPerson.address = Address - -TaskExport.personFirstName = Person first name -TaskExport.personLastName = Person last name -TaskExport.personSex = Person sex -TaskExport.personBirthDate = Person birth date -TaskExport.personAddressRegion = Person address region -TaskExport.personAddressDistrict = Person address district -TaskExport.personAddressCommunity = Person address community -TaskExport.personAddressFacility = Person address facility -TaskExport.personAddressFacilityDetail = Person address facility details -TaskExport.personAddressCity = Person address city -TaskExport.personAddressStreet = Person address street -TaskExport.personAddressHouseNumber = Person address house number -TaskExport.personAddressPostalCode = Person address postal code -TaskExport.personPhone = Person phone -TaskExport.personPhoneOwner = Person phone owner -TaskExport.personEmailAddress = Person email address +SormasToSormasShareRequest.cases=Cases +SormasToSormasShareRequest.contacts=Contacts +SormasToSormasShareRequest.events=Events +SormasToSormasShareRequest.organizationName=Sender organization +SormasToSormasShareRequest.senderName=Sender name +SormasToSormasShareRequest.ownershipHandedOver=Ownership handed over +SormasToSormasShareRequest.comment=Comment +SormasToSormasShareRequest.responseComment=Response comment +SormasToSormasPerson.personName=Person name +SormasToSormasPerson.sex=Sex +SormasToSormasPerson.birthdDate=Birth date +SormasToSormasPerson.address=Address +TaskExport.personFirstName=Person first name +TaskExport.personLastName=Person last name +TaskExport.personSex=Person sex +TaskExport.personBirthDate=Person birth date +TaskExport.personAddressRegion=Person address region +TaskExport.personAddressDistrict=Person address district +TaskExport.personAddressCommunity=Person address community +TaskExport.personAddressFacility=Person address facility +TaskExport.personAddressFacilityDetail=Person address facility details +TaskExport.personAddressCity=Person address city +TaskExport.personAddressStreet=Person address street +TaskExport.personAddressHouseNumber=Person address house number +TaskExport.personAddressPostalCode=Person address postal code +TaskExport.personPhone=Person phone +TaskExport.personPhoneOwner=Person phone owner +TaskExport.personEmailAddress=Person email address TaskExport.personOtherContactDetails = Person contact details diff --git a/sormas-api/src/main/resources/continents_ar-SA.properties b/sormas-api/src/main/resources/continents_ar-SA.properties new file mode 100644 index 00000000000..e7cb993fedf --- /dev/null +++ b/sormas-api/src/main/resources/continents_ar-SA.properties @@ -0,0 +1,24 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2020 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 . +############################################################################### + +continent.AFRICA.name = Africa +continent.AMERICA.name = America +continent.ASIA.name = Asia +continent.AUSTRALIA.name = Australia (Continent) +continent.EUROPE.name = Europe +continent.FOREIGN_COUNTRIES.name = Foreign Countries (Unknown) \ No newline at end of file diff --git a/sormas-api/src/main/resources/countries_ar-SA.properties b/sormas-api/src/main/resources/countries_ar-SA.properties new file mode 100644 index 00000000000..c89ead54619 --- /dev/null +++ b/sormas-api/src/main/resources/countries_ar-SA.properties @@ -0,0 +1,215 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2020 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 . +############################################################################### + +country.AFG.name=Afghanistan +country.ALB.name=Albania +country.DZA.name=Algeria +country.AND.name=Andorra +country.AGO.name=Angola +country.ATG.name=Antigua and Barbuda +country.ARG.name=Argentina +country.ARM.name=Armenia +country.AUS.name=Australia +country.AUT.name=Austria +country.AZE.name=Azerbaijan +country.BHS.name=Bahamas +country.BHR.name=Bahrain +country.BGD.name=Bangladesh +country.BRB.name=Barbados +country.BLR.name=Belarus +country.BEL.name=Belgium +country.BLZ.name=Belize +country.BEN.name=Benin +country.BTN.name=Bhutan +country.BOL.name=Bolivia (Plurinational State of) +country.BIH.name=Bosnia and Herzegovina +country.BWA.name=Botswana +country.BRA.name=Brazil +country.BRN.name=Brunei Darussalam +country.BGR.name=Bulgaria +country.BFA.name=Burkina Faso +country.BDI.name=Burundi +country.CPV.name=Cabo Verde +country.KHM.name=Cambodia +country.CMR.name=Cameroon +country.CAN.name=Canada +country.CAF.name=Central African Republic +country.TCD.name=Chad +country.CHL.name=Chile +country.CHN.name=China +country.COL.name=Colombia +country.COM.name=Comoros +country.COG.name=Congo (Brazzaville) +country.COK.name=Cook Islands +country.CRI.name=Costa Rica +country.HRV.name=Croatia +country.CUB.name=Cuba +country.CYP.name=Cyprus +country.CZE.name=Czech Republic +country.PRK.name=Democratic People's Republic of Korea +country.COD.name=Democratic Republic of the Congo +country.DNK.name=Denmark +country.DJI.name=Djibouti +country.DMA.name=Dominica +country.DOM.name=Dominican Republic +country.ECU.name=Ecuador +country.EGY.name=Egypt +country.SLV.name=El Salvador +country.GNQ.name=Equatorial Guinea +country.ERI.name=Eritrea +country.EST.name=Estonia +country.SWZ.name=Eswatini +country.ETH.name=Ethiopia +country.FJI.name=Fiji +country.FIN.name=Finland +country.FRA.name=France +country.GAB.name=Gabon +country.GMB.name=Gambia +country.GEO.name=Georgia +country.DEU.name=Germany +country.GHA.name=Ghana +country.GRC.name=Greece +country.GRL.name=Greenland +country.GRD.name=Grenada +country.GTM.name=Guatemala +country.GIN.name=Guinea +country.GNB.name=Guinea-Bissau +country.GUY.name=Guyana +country.HTI.name=Haiti +country.HND.name=Honduras +country.HUN.name=Hungary +country.ISL.name=Iceland +country.IND.name=India +country.IDN.name=Indonesia +country.IRN.name=Iran (Islamic Republic of) +country.IRQ.name=Iraq +country.IRL.name=Ireland +country.ISR.name=Israel +country.ITA.name=Italy +country.JAM.name=Jamaica +country.JPN.name=Japan +country.JOR.name=Jordan +country.KAZ.name=Kazakhstan +country.KEN.name=Kenya +country.KIR.name=Kiribati +country.KWT.name=Kuwait +country.KGZ.name=Kyrgyzstan +country.LAO.name=Lao People's Democratic Republic +country.LVA.name=Latvia +country.LBN.name=Lebanon +country.LSO.name=Lesotho +country.LBR.name=Liberia +country.LBY.name=Libya +country.LIE.name=Liechtenstein +country.LTU.name=Lithuania +country.LUX.name=Luxembourg +country.MDG.name=Madagascar +country.MWI.name=Malawi +country.MYS.name=Malaysia +country.MDV.name=Maldives +country.MLI.name=Mali +country.MLT.name=Malta +country.MHL.name=Marshall Islands +country.MRT.name=Mauritania +country.MUS.name=Mauritius +country.MEX.name=Mexico +country.FSM.name=Micronesia (Federated States of) +country.MCO.name=Monaco +country.MNG.name=Mongolia +country.MNE.name=Montenegro +country.MAR.name=Morocco +country.MOZ.name=Mozambique +country.MMR.name=Myanmar +country.NAM.name=Namibia +country.NRU.name=Nauru +country.NPL.name=Nepal +country.NLD.name=Netherlands +country.NCL.name=New Caledonia +country.NZL.name=New Zealand +country.NIC.name=Nicaragua +country.NER.name=Niger +country.NGA.name=Nigeria +country.NIU.name=Niue +country.MKD.name=North Macedonia +country.NOR.name=Norway +country.OMN.name=Oman +country.PAK.name=Pakistan +country.PLW.name=Palau +country.PAN.name=Panama +country.PNG.name=Papua New Guinea +country.PRY.name=Paraguay +country.PER.name=Peru +country.PHL.name=Philippines +country.POL.name=Poland +country.PRT.name=Portugal +country.PRI.name=Puerto Rico +country.QAT.name=Qatar +country.KOR.name=Republic of Korea +country.MDA.name=Republic of Moldova +country.ROU.name=Romania +country.RUS.name=Russian Federation +country.RWA.name=Rwanda +country.KNA.name=Saint Kitts and Nevis +country.LCA.name=Saint Lucia +country.VCT.name=Saint Vincent and the Grenadines +country.WSM.name=Samoa +country.SMR.name=San Marino +country.STP.name=Sao Tome and Principe +country.SAU.name=Saudi Arabia +country.SEN.name=Senegal +country.SRB.name=Serbia +country.SYC.name=Seychelles +country.SLE.name=Sierra Leone +country.SGP.name=Singapore +country.SVK.name=Slovakia +country.SVN.name=Slovenia +country.SLB.name=Solomon Islands +country.SOM.name=Somalia +country.ZAF.name=South Africa +country.SSD.name=South Sudan +country.ESP.name=Spain +country.LKA.name=Sri Lanka +country.PSE.name=State of Palestine +country.SDN.name=Sudan +country.SUR.name=Suriname +country.SWE.name=Sweden +country.CHE.name=Switzerland +country.SYR.name=Syrian Arab Republic +country.TJK.name=Tajikistan +country.THA.name=Thailand +country.TLS.name=Timor-Leste +country.TGO.name=Togo +country.TKL.name=Tokelau +country.TON.name=Tonga +country.TTO.name=Trinidad and Tobago +country.TUN.name=Tunisia +country.TUR.name=Turkey +country.TKM.name=Turkmenistan +country.TUV.name=Tuvalu +country.UGA.name=Uganda +country.UKR.name=Ukraine +country.ARE.name=United Arab Emirates +country.GBR.name=United Kingdom of Great Britain and Northern Ireland +country.TZA.name=United Republic of Tanzania +country.USA.name=United States of America +country.URY.name=Uruguay +country.UZB.name=Uzbekistan +country.VUT.name=Vanuatu +country.VAT.name=Vatican City +country.VEN.name=Venezuela (Bolivarian Republic of) +country.VNM.name=Viet Nam \ No newline at end of file diff --git a/sormas-api/src/main/resources/descriptions_ar-SA.properties b/sormas-api/src/main/resources/descriptions_ar-SA.properties new file mode 100644 index 00000000000..0c4aee148fa --- /dev/null +++ b/sormas-api/src/main/resources/descriptions_ar-SA.properties @@ -0,0 +1,215 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2018 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 . +############################################################################### + +# Descriptions used to detail captions + +# Campaign +Campaign.campaignPhase = This is a preview for a feature that will be implemented later +Campaign.calculatedBasedOn=Calculated based on + +# CaseData +CaseData.caseClassification = Select the case status for the person +CaseData.clinicianDetails = Please specify the name, phone number and email address of the clinician responsible for this case +CaseData.disease = Select the disease in question +CaseData.healthFacility = Provide the facility the patient was admitted to +CaseData.reportLat = Report GPS latitude is the the north/south angular location of the case in degrees +CaseData.reportLon = Report GPS longitude is the the east/west angular location of the case in degrees +CaseData.reportLatLonAccuracy = If you draw a circle centered at this location's latitude and longitude, and with a radius equal to the accuracy, then there is a 68% probability that the true location of the case is inside the circle +CaseData.measlesVaccination = Is the person vaccinated against measles? +CaseData.pregnant = Is the person currently pregnant? +CaseData.vaccineInn = International non-proprietary name +CaseData.vaccineUniiCode = Unique ingredient identifier code + + +# CaseHospitalization +CaseHospitalization.admissionDate = Please provide the date of admission to the hospital +CaseHospitalization.isolated = Is the person in isolation or currently being placed there? + +# CasePreviousHospitalization +CasePreviousHospitalization.admissionDate = Please provide the date of admission to the hospital + +# Contact +Contact.community = Users associated to the responsible region/district/community will be able to access this contact. +Contact.contactProximity = Select the type of contact with the case +Contact.district = Users associated to the responsible region/district/community will be able to access this contact. +Contact.followUpStatus =

  • Under follow-up\: The follow-up process is running.
  • Follow-up completed\: The follow-up has been completed.
  • Follow-up canceled\: The follow-up process has been canceled, e.g. because the person died or the contact became irrelevant.
  • Lost to follow-up\: The follow-up process could not be continued, e.g. because the person could not be found.
  • No follow-up\: No contact follow-up is being done.
+Contact.region = Users associated to the responsible region/district/community will be able to access this contact. +Contact.relationToCase = Select the person's relation to the case + +# General +descCommunityFilter = Select a community in the district +descDistrictFilter = Select an district in the region +descFacilityFilter = Select a facility in the district +descPointOfEntryFilter = Select a point of entry in the district +descExportButton = Export the columns and rows that are shown in the table below. +descDetailedExportButton = Export the rows that are shown in the table below with an extended set of columns. This may take a while. +descFollowUpExportButton = Export the follow-up visits for all contacts below. +descDashboardConvertedToCase = The contact has been converted to a case because it has become symptomatic +descDashboardFollowUpInfo = Follow-up status is calculated by taking the status of the last visit to the respective contact. "Never visited" means that the contact has not yet been visited at all. +descDashboardFatalityRateInfo = The fatality rate is calculated based on the number of confirmed, suspect and probable cases. +descDashboardNewTestResults = Test results of the new cases +descCaseFilterWithoutGeo = Only list cases that don't have address or report geo coordinates +descCaseFilterPortHealthWithoutFacility = Only list cases that origin from a point of entry and have not yet been referred to a facility +descCaseFilterCasesWithCaseManagementData = Only list cases that have at least one prescription, treatment or clinical visit +descCaseFilterExcludeSharedCases = Exclude all cases that do not originally belong to your jurisdiction, but have been shared with you by other users +descCaseFilterWithoutResponsibleUser = Only list cases that don't have responsible surveillance user +descCaseFilterWithExtendedQuarantine = Only list cases whose quarantine period has been extended +descContactOnlyWithExtendedQuarantine = Only list contacts whose quarantine period has been extended +descCaseFilterWithReducedQuarantine = Only list cases whose quarantine period has been reduced +descCaseFilterRelatedToEvent = Only list cases related to events +descCaseFilterIncludeCasesFromOtherJurisdictions = Include all cases from other jurisdictions that you have access to, e.g. because you created them or they have a contact in your jurisdiction +descCaseFilterOnlyCasesWithFulfilledReferenceDefinition = Include only cases with fulfilled reference definition +descCaseFilterOnlyFromOtherInstances = Only cases that have been received from or sent to other SORMAS instances +descCaseFilterCasesWithReinfection = Only list cases for reinfected persons +descContactOnlyWithReducedQuarantine = Only list contacts whose quarantine period has been reduced +descContactIncludeContactsFromOtherJurisdictions = Include all contacts from other jurisdictions that you have access to, e.g. because you created them or their source case is in your jurisdiction +descGdpr = Reminder\: All comments entered must comply with GDPR rules as described during connection. +discardDescription = Discards any unsaved changes + +# EpiData +EpiData.bats = Did you have contact with live or dead bats or their excreta during the incubation period? +EpiData.birds = Did you have contact with live or dead poultry or wild birds during the incubation period? +EpiData.burialAttended = Did you attend a burial during the incubation period? +EpiData.cattle = Did you have contact with live or dead cattle (cows, sheep, goats) during the incubation period? +EpiData.fleaBite = Did you get bitten by fleas during the incubation period? +EpiData.gatheringAttended = Did you visit a social event during the incubation period? (e.g. religious event, family occasion) +EpiData.otherAnimals = Did you have contact with other animals during the incubation period? +EpiData.otherAnimalsDetails = Please specify +EpiData.primates = Did you have contact with live or dead monkeys during the incubation period? +EpiData.rodents = Did you have contact with live or dead rodents or their excreta during the incubation period? +EpiData.swine = Did you have contact with live or dead swine/pigs during the incubation period? +EpiData.tickBite = Did you get bitten by tick during the incubation period? +EpiData.traveled = Did you travel outside your home village/locality during the incubation period? +EpiData.waterBody = Did you have contact with a body of water (e.g. bathing, doing laundry, or fishing in a river) during the incubation period? +EpiData.waterBodyDetails = Please provide the name and location of this body of water +EpiData.waterSource = What is the main source for your drinking water? +EpiData.waterSourceOther = Please, specify +EpiData.visitedHealthFacility = Did you visit any facility during the incubation period? +EpiData.contactWithSourceRespiratoryCase = Did you have close contact with a person with accute respiratory infection during the incubation period? +EpiData.camels = Did you have contact with live, dead or consume camel products during the incubation period? +EpiData.snakes = Did you have contact with live, dead or eat snakes during the incubation period? + +# EpiDataBurial +EpiDataBurial.address = Please provide the address (village/city, district) of the burial +EpiDataBurial.burialIll = Was the deceased person ill before his/her death with similar disease to yours? +EpiDataBurial.burialPersonName = Please provide the name of the deceased person +EpiDataBurial.burialRelation = Please provide your relation to the deceased person +EpiDataBurial.burialTouching = Did you touch or carry the body? + +# EpiDataTravel +EpiDataTravel.travelType = Did you travel abroad or within the country? + +# Event +Event.startDate = Enter the start date of the event occurrence (dd/mm/yyyy) +Event.endDate = Enter the end date of the event occurrence (dd/mm/yyyy) +Event.eventDesc = Provide a description of the event +Event.eventStatus = Select the status of the event +Event.srcEmail = Enter the source's e-mail address +Event.srcFirstName = Enter the source's first name +Event.srcLastName = Enter the source's last name +Event.srcTelNo = Enter the source's phone number +Event.srcMediaWebsite = Enter the source's website +Event.srcMediaName = Enter the source's name +Event.srcMediaDetails = Enter the source's details +Event.typeOfPlace = Select the place where the event took place +Event.infectionPathCertainty=Certainty of proof in regards to the infection path/source/vehicle/medical procedure in a nosocomial relation of the infections + +# Facility +Facility.CONFIGURED_FACILITY = This should be used if a facility named has been configured for the district and community. The corresponding facilityType must be filled in. +Facility.NO_FACILITY = This facility should be used if explicitly not a facility but another place (e.g. at home) is meant. In this case, the corresponding facilityType must be empty. +Facility.OTHER_FACILITY = This facility should be used if the desired facility does not (yet) exist in Sormas for any reason. Provide a description in the corresponding facilityDetails. The corresponding facilityType must be filled in to make clear what kind of facility it is. + +# Hospitalization +Hospitalization.admissionDate = Please provide the date of admission to the hospital +Hospitalization.isolated = Is the person in isolation or currently being placed there? + +# Location +Location.areaType = The type of area of the community. +Location.latitude = GPS latitude is the north/south angular location in degrees +Location.latLonAccuracy = If you draw a circle centered at this location's latitude and longitude, and with a radius equal to the accuracy, then there is a 68% probability that the true location is inside the circle +Location.longitude = GPS longitude is the the east/west angular location in degrees + +MaternalHistory.rubella = Laboratory-confirmed rubella in the mother +MaternalHistory.rashExposure = Known exposure during pregnancy to any person with maculopapular rash (not vesicular) illness with fever + +# PathogenTest +PathogenTest.fourFoldIncreaseAntibodyTiter = You can only edit this field when there are at least two received samples for the case this pathogen test has been done for +PathogenTest.lab = The laboratory where the pathogen test is done +PathogenTest.labDetails = The name and/or description of the laboratory +PathogenTest.testDateTime = The date and time when the sample is analyzed +PathogenTest.testResult = The result of the pathogen test +PathogenTest.testResultText = Any additional information associated with this pathogen test +PathogenTest.testResultVerified = Is the result of this test verified by a lab supervisor? +PathogenTest.testType = The type of test that is performed on this sample +PathogenTest.testTypeText = The name of the pathogen test that is performed on this sample +PathogenTest.testedDisease = The disease for which this pathogen test is done +PathogenTest.testedDiseaseDetails = The name of the disease for which this pathogen test is done +PathogenTest.serotype = The serotype/serogroup for this test + +# Person +Person.approximateAge = Enter the age of the person +Person.birthdate = Enter the date of birth of the person (dd/mm/yyyy) +Person.deathDate = Enter the person's death date (dd/mm/yyyy) +Person.firstName = Enter the first name of the person +Person.lastName = Enter the last name of the person +Person.phone = Enter phone number of the person +Person.presentCondition = Select the person's current health condition +Person.sex = Select the sex of the person + +# Sample +Sample.sampleDateTime = When the sample was taken (enter a date)? +Sample.associatedLabMessages = Display associated lab messages + +# Symptoms +Symptoms.alteredConsciousness = Altered level of consciousness, e.g. lethargy, stuporous, coma +Symptoms.bloodInStool = Visible blood in stool +Symptoms.confusedDisoriented = Confused or disoriented +Symptoms.conjunctivitis = Conjunctivitis, redness of the eyes +Symptoms.diarrhea = >\= 3 loose stools within 24h +Symptoms.difficultyBreathing = Difficulty breathing or shortness of breath/dyspnea +Symptoms.eyePainLightSensitive = Pain behind eyes or eyes sensitive to light +Symptoms.fatigueWeakness = Fatigue or general weakness +Symptoms.fever = >\= 38°C +Symptoms.firstSymptom = Enter the person's first symptom +Symptoms.hearingloss = Acute hearing loss not related to an injury +Symptoms.hiccups = Hiccups +Symptoms.kopliksSpots = Koplik's Spots +Symptoms.musclePain = Muscle pain (myalgia) +Symptoms.neckStiffness = Neck feels stiff +Symptoms.onsetDate = Enter the date of onset of the person's first symptom (dd/mm/yyyy) +Symptoms.onsetSymptom = What was the first symptom? +Symptoms.otherHemorrhagicSymptomsText = Specify other hemorrhagic symptoms +Symptoms.refusalFeedorDrink = Refusal to feed or drink +Symptoms.runnyNose = Runny nose (rhinitis or coryza) +Symptoms.skinRash = Sudden onset of skin rash +Symptoms.symptomatic = Did the person have any symptoms or signs of illness? +Symptoms.symptomOnset = Select the date when the person became ill +Symptoms.temperature = Enter the measured body temperature +Symptoms.temperatureSource = Select the source of body temperature +Symptoms.throbocytopenia = Decreased level of thrombocytes in the blood +Symptoms.unexplainedBleeding = Unexplained bleeding or bruising from any site not related to an injury + +# Task +Task.taskType = Select the type of task + +User.limitedDisease = Select a disease here if the user should be restricted to only see data for one disease + +# Visit +Visit.visitDateTime = Enter the date of the follow-up visit (dd/mm/yyyy) +Visit.visitRemarks = Type your remarks of the visit +Visit.visitStatus = Select the visit status diff --git a/sormas-api/src/main/resources/descriptions_de-DE.properties b/sormas-api/src/main/resources/descriptions_de-DE.properties index 5d568965dfe..7128b3a9233 100644 --- a/sormas-api/src/main/resources/descriptions_de-DE.properties +++ b/sormas-api/src/main/resources/descriptions_de-DE.properties @@ -59,7 +59,7 @@ descPointOfEntryFilter = Wählen Sie einen Einreiseort in dem Landkreis descExportButton = Export der Spalten und Zeilen, die in der Tabelle unten angezeigt werden. descDetailedExportButton = Export der Zeilen, die in der Tabelle unten angezeigt werden, mit einem erweiterten Satz von Spalten. Dies kann eine Weile dauern. descFollowUpExportButton = Exportieren Sie die Nachverfolgungsanrufe für alle untenstehenden Kontakte. -descDashboardConvertedToCase = Der Kontakt wurde in einen Fall umgewandelt, weil er symptomatisch geworden ist +descDashboardConvertedToCase = Der Kontakt wurde in einen Fall konvertiert, weil er symptomatisch geworden ist descDashboardFollowUpInfo = Der Follow-up/Nachverfolgungs-Status wird anhand des Status beim letzten Anruf des jeweiligen Kontakts berechnet. "Nie angerufen" bedeutet, dass der Kontakt bisher noch nicht angerufen wurde. descDashboardFatalityRateInfo = Die Todesrate wird anhand der Anzahl bestätigter, verdächtiger und wahrscheinlicher Fälle berechnet. descDashboardNewTestResults = Testergebnisse der neuen Fälle 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 5480254c424..54d704d488d 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_Rights.xlsx b/sormas-api/src/main/resources/doc/SORMAS_User_Rights.xlsx index 4a9435e1c08..4a844dc1b83 100644 Binary files a/sormas-api/src/main/resources/doc/SORMAS_User_Rights.xlsx and b/sormas-api/src/main/resources/doc/SORMAS_User_Rights.xlsx differ diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties index ba9309f8bac..fdf6c507fbe 100644 --- a/sormas-api/src/main/resources/enum.properties +++ b/sormas-api/src/main/resources/enum.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_ar-SA.properties b/sormas-api/src/main/resources/enum_ar-SA.properties new file mode 100644 index 00000000000..3125905735e --- /dev/null +++ b/sormas-api/src/main/resources/enum_ar-SA.properties @@ -0,0 +1,1990 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2022 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 . +############################################################################### + +# Enum captions and descriptions + +# ActionContext +ActionContext.EVENT = Event + +ActionMeasure.PROHIBITION_OF_ENTRY_AND_WORK_CASES = Prohibition of entry and work for case persons +ActionMeasure.SAMPLE_COLLECTION = Sample collection +ActionMeasure.FORWARDING_TO_NATIONAL_REFERENCE_CENTER = Forwarding to the national reference center +ActionMeasure.CONTACT_FOLLOW_UP = Active follow-up of contact persons +ActionMeasure.VERIFICATION_OF_VACCINATION_IMMUNIZATION = Verification of vaccination or immunization status +ActionMeasure.POST_EXPOSURE_PROPHYLAXIS_VACCINATION = Conduct post-exposure prophylaxis vaccination +ActionMeasure.CLOSURE_OF_FACILITY = Closure of facility +ActionMeasure.PROHIBITION_OF_ENTRY_AND_WORK_CONTACTS = Prohibition of entry and work for contact persons +ActionMeasure.POPULATION_INFORMATION = Population information about outbreak +ActionMeasure.OTHER = Other + +# ActionPriority +ActionPriority.HIGH = High +ActionPriority.LOW = Low +ActionPriority.NORMAL = Normal + +# ActionStatus +ActionStatus.DONE = Done +ActionStatus.PENDING = Pending +ActionStatus.IN_PROGRESS = In progress + +# ActivityAsCaseType +ActivityAsCaseType.WORK=Work +ActivityAsCaseType.TRAVEL=Travel +ActivityAsCaseType.SPORT=Sport +ActivityAsCaseType.VISIT=Visit +ActivityAsCaseType.GATHERING=Gathering +ActivityAsCaseType.HABITATION=Habitation +ActivityAsCaseType.PERSONAL_SERVICES=Personal Services +ActivityAsCaseType.CARED_FOR=Cared for +ActivityAsCaseType.OTHER=Other +ActivityAsCaseType.UNKNOWN=Unknown + +# AdditionalTestingStatus +AdditionalTestingStatus.NOT_REQUESTED = Not requested +AdditionalTestingStatus.REQUESTED = Requested +AdditionalTestingStatus.PERFORMED = Performed + +# AdditionalTestType +AdditionalTestType.HAEMOGLOBINURIA = Haemoglobin in urine +AdditionalTestType.PROTEINURIA = Protein in urine +AdditionalTestType.HEMATURIA = Red blood cells in urine +AdditionalTestType.ARTERIAL_VENOUS_BLOOD_GAS = Arterial/venous blood gas +AdditionalTestType.ALT_SGPT = ALT/SGPT +AdditionalTestType.AST_SGOT = AST/SGOT +AdditionalTestType.CREATININE = Creatinine +AdditionalTestType.POTASSIUM = Potassium +AdditionalTestType.UREA = Urea +AdditionalTestType.HAEMOGLOBIN = Haemoglobin +AdditionalTestType.TOTAL_BILIRUBIN = Total bilirubin +AdditionalTestType.CONJ_BILIRUBIN = Conj. bilirubin +AdditionalTestType.WBC_COUNT = WBC count +AdditionalTestType.PLATELETS = Platelets +AdditionalTestType.PROTHROMBIN_TIME = Prothrombin time + +AgeGroup.AGE_0_4 = 0--4 +AgeGroup.AGE_5_9 = 5--9 +AgeGroup.AGE_10_14 = 10--14 +AgeGroup.AGE_15_19 = 15--19 +AgeGroup.AGE_20_24 = 20--24 +AgeGroup.AGE_25_29 = 25--29 +AgeGroup.AGE_30_34 = 30--34 +AgeGroup.AGE_35_39 = 35--59 +AgeGroup.AGE_40_44 = 40--44 +AgeGroup.AGE_45_49 = 45--49 +AgeGroup.AGE_50_54 = 50--54 +AgeGroup.AGE_55_59 = 55--59 +AgeGroup.AGE_60_64 = 60--64 +AgeGroup.AGE_65_69 = 65--69 +AgeGroup.AGE_70_74 = 70--74 +AgeGroup.AGE_75_79 = 75--79 +AgeGroup.AGE_80_84 = 80--84 +AgeGroup.AGE_80_PLUS = 80+ + +# AnimalCondition +AnimalCondition.ALIVE = Alive +AnimalCondition.DEAD = Dead +AnimalCondition.PROCESSED = Processed +AnimalCondition.UNKNOWN = Unknown + +AnimalContactType.BITE=Bite +AnimalContactType.TOUCH=Touch +AnimalContactType.SCRATCH=Scratch +AnimalContactType.LICK=Lick +AnimalContactType.OTHER=Other + +# ApproximateAgeType +ApproximateAgeType.DAYS = Days +ApproximateAgeType.MONTHS = Months +ApproximateAgeType.YEARS = Years + +AreaType.URBAN = Urban +AreaType.RURAL = Rural +AreaType.UNKNOWN = Unknown + +ArmedForcesRelationType.UNKNOWN = Unknown +ArmedForcesRelationType.NO_RELATION = No relation to armed forces +ArmedForcesRelationType.CIVIL = Civil person working for/accomodated in facility of armed forces +ArmedForcesRelationType.SOLDIER_OR_RELATIVE = Soldier, Relative + +ArrivalOrDeparture.ARRIVAL = Arrival +ArrivalOrDeparture.DEPARTURE = Departure +ArrivalOrDeparture.UNKNOWN = Unknown + +# BurialConductor +BurialConductor.FAMILY_COMMUNITY = Family/Community +BurialConductor.OUTBREAK_TEAM = Outbreak burial team + +# CampaignPhase +CampaignPhase.PRE = Pre-Campaign +CampaignPhase.INTRA = Intra-Campaign +CampaignPhase.POST = Post-Campaign + +# CampaignJurisdictionLevel +CampaignJurisdictionLevel.AREA = Area +CampaignJurisdictionLevel.REGION = Region +CampaignJurisdictionLevel.DISTRICT = District +CampaignJurisdictionLevel.COMMUNITY = Community + +# CaseClassification +CaseClassification.CONFIRMED = Confirmed case +CaseClassification.CONFIRMED_NO_SYMPTOMS = Confirmed case with no symptoms +CaseClassification.CONFIRMED_UNKNOWN_SYMPTOMS = Confirmed case with unknown symptoms +CaseClassification.NO_CASE = Not a case +CaseClassification.NOT_CLASSIFIED = Not yet classified +CaseClassification.PROBABLE = Probable case +CaseClassification.SUSPECT = Suspect case +CaseClassification.Short.CONFIRMED = Confirmed +CaseClassification.Short.CONFIRMED_NO_SYMPTOMS = Confirmed with symptoms +CaseClassification.Short.CONFIRMED_UNKNOWN_SYMPTOMS = Confirmed unknown symptoms +CaseClassification.Short.NO_CASE = No case +CaseClassification.Short.NOT_CLASSIFIED = Not classified +CaseClassification.Short.PROBABLE = Probable +CaseClassification.Short.SUSPECT = Suspect + +# CaseIdentificationSource +CaseIdentificationSource.UNKNOWN = Unknown +CaseIdentificationSource.OUTBREAK_INVESTIGATION = Outbreak investigation +CaseIdentificationSource.CONTACT_TRACKING_APP = Contact tracking app +CaseIdentificationSource.SUSPICION_REPORT = Suspicion report +CaseIdentificationSource.CONTACT_TRACING = Contact tracing +CaseIdentificationSource.SCREENING = Screening +CaseIdentificationSource.OTHER = Other + +ScreeningType.ON_HOSPITAL_ADMISSION = On admission in a hospital +ScreeningType.ON_CARE_HOME_ADMISSION = On admission in care home +ScreeningType.ON_ASYLUM_ADMISSION = On admission in an asylum seeking centre +ScreeningType.ON_ENTRY_FROM_RISK_AREA = On entry from risk area +ScreeningType.HEALTH_SECTOR_EMPLOYEE = Employee in health sector +ScreeningType.EDUCATIONAL_INSTITUTIONS = Educational institutions +ScreeningType.SELF_ARRANGED_TEST = Self arranged test +ScreeningType.SELF_CONDUCTED_TEST = Self conducted test +ScreeningType.OTHER = Other + +CaseCountOrIncidence.CASE_COUNT = Case count +CaseCountOrIncidence.CASE_INCIDENCE = Case incidence + +# CaseMeasure +CaseMeasure.CASE_COUNT = Case count +CaseMeasure.CASE_INCIDENCE = Case incidence proportion + +CaseOrigin.IN_COUNTRY = In-Country +CaseOrigin.POINT_OF_ENTRY = Point of Entry + +# CaseOutcome +CaseOutcome.DECEASED = Deceased +CaseOutcome.NO_OUTCOME = No Outcome Yet +CaseOutcome.RECOVERED = Recovered +CaseOutcome.UNKNOWN = Unknown + +# CaseReferenceDefinition +CaseReferenceDefinition.FULFILLED = Fulfilled +CaseReferenceDefinition.NOT_FULFILLED = Not fulfilled + +# CauseOfDeath +CauseOfDeath.EPIDEMIC_DISEASE = Epidemic disease +CauseOfDeath.OTHER_CAUSE = Other cause + +## Confirmed case classification +CaseConfirmationBasis.CLINICAL_CONFIRMATION = Clinical confirmation +CaseConfirmationBasis.EPIDEMIOLOGICAL_CONFIRMATION = Epidemiological confirmation +CaseConfirmationBasis.LABORATORY_DIAGNOSTIC_CONFIRMATION = Laboratory diagnostic confirmation + +CongenitalHeartDiseaseType.PDA = Patent ductus arteriosus (PDA) +CongenitalHeartDiseaseType.PPS = Peripheral pulmonary stenosis (PPS) +CongenitalHeartDiseaseType.VSD = Ventricular septal defect (VSD) +CongenitalHeartDiseaseType.OTHER = Other heart defect + +# ContactCategory +ContactCategory.HIGH_RISK = High risk contact +ContactCategory.HIGH_RISK_MED = High risk medical contact +ContactCategory.MEDIUM_RISK_MED = Medium risk medical contact +ContactCategory.LOW_RISK = Low risk contact +ContactCategory.NO_RISK = No risk contact + +# ContactClassification +ContactClassification.CONFIRMED = Confirmed contact +ContactClassification.NO_CONTACT = Not a contact +ContactClassification.UNCONFIRMED = Unconfirmed contact +ContactClassification.Short.CONFIRMED = Confirmed +ContactClassification.Short.NO_CONTACT = No contact +ContactClassification.Short.UNCONFIRMED = Unconfirmed + +# ContactDateType +ContactDateType.REPORT_DATE = Report date +ContactDateType.LAST_CONTACT_DATE = Last contact date + +ContactsEpiCurveMode.FOLLOW_UP_STATUS = Follow-up status +ContactsEpiCurveMode.CONTACT_CLASSIFICATION = Contact classification +ContactsEpiCurveMode.FOLLOW_UP_UNTIL = Follow-up until + +# ContactIdentificationSource +ContactIdentificationSource.CASE_PERSON = Case person +ContactIdentificationSource.CONTACT_PERSON = Contact person +ContactIdentificationSource.TRACING_APP = Proximity tracing app +ContactIdentificationSource.OTHER = Other +ContactIdentificationSource.UNKNOWN = Unknown + +# ContactProximity +ContactProximity.AEROSOL = Persons exposed to aerosol producing activities +ContactProximity.AIRPLANE = Airplane, sitting up to two rows in front or behind the source case +ContactProximity.CLOSE_CONTACT = Was in close proximity (1 meter) with source case +ContactProximity.CLOTHES_OR_OTHER = Manipulation of clothes or other objects of source case +ContactProximity.FACE_TO_FACE_LONG = Face-to-face contact of at least 15 minutes +ContactProximity.FACE_TO_FACE_SHORT = Face-to-face contact of less than 15 minutes +ContactProximity.MEDICAL_DISTANT = Medical personnel at save proximity (> 2 meter), without direct contact with secretions or excretions of the patient and without aerosol exposure +ContactProximity.MEDICAL_SAME_ROOM = Medical personnel that was in same room or house with source case +ContactProximity.MEDICAL_SAFE = Medical personnel at save proximity (> 2 meter) or with protective equipment +ContactProximity.MEDICAL_UNSAFE = Medical personnel with a high risk of exposure, e.g. unprotected relevant exposure to secretions, exposure to aerosols from COVID-19 cases +ContactProximity.MEDICAL_LIMITED = Medical personnel with limited exposure, e.g. with contact < 2m to COVID-19 cases without protective equipment, ≥ 15min face-to-face contact (without exposure as described under Ia) +ContactProximity.PHYSICAL_CONTACT = Direct physical contact with source case +ContactProximity.SAME_ROOM = Was in same room or house with source case +ContactProximity.TOUCHED_FLUID = Touched fluid of source case + +# ContactRelation +ContactRelation.FAMILY_MEMBER_OR_FRIEND = Other family member or friend +ContactRelation.SAME_ENVIRONMENT = Work in the same environment +ContactRelation.SAME_HOUSEHOLD = Live in the same household +ContactRelation.MEDICAL_CARE = Provided medical care for the case +ContactRelation.OTHER = Other + +# ContactStatus +ContactStatus.ACTIVE = Active contact +ContactStatus.CONVERTED = Converted to case +ContactStatus.DROPPED = Dropped + +ConveyanceType.CAR = Car +ConveyanceType.BUS = Bus +ConveyanceType.MOTORBIKE = Motorbike +ConveyanceType.OTHER = Other + +# DashboardType +DashboardType.CONTACTS = Contacts +DashboardType.SURVEILLANCE = Surveillance +DashboardType.CAMPAIGNS = Campaigns + +# DatabaseTable +DatabaseTable.ACTIONS = Actions +DatabaseTable.CASES = Cases +DatabaseTable.CASE_SYMPTOMS = Symptoms +DatabaseTable.CLINICAL_COURSES = Clinical courses +DatabaseTable.CLINICAL_VISITS = Clinical visits +DatabaseTable.CLINICAL_VISIT_SYMPTOMS = Symptoms +DatabaseTable.COMMUNITIES = Communities +DatabaseTable.CONTACTS = Contacts +DatabaseTable.CONTINENTS = Continents +DatabaseTable.SUBCONTINENTS = Subcontinents +DatabaseTable.AREAS = Areas +DatabaseTable.COUNTRIES = Countries +DatabaseTable.CUSTOMIZABLE_ENUM_VALUES = Customizable enum values +DatabaseTable.DISTRICTS = Districts +DatabaseTable.EPIDATA = Epidemiological data +DatabaseTable.EVENTS = Events +DatabaseTable.EVENTGROUPS = Event groups +DatabaseTable.EVENTPARTICIPANTS = Persons involved +DatabaseTable.EXPOSURES = Exposures +DatabaseTable.ACTIVITIES_AS_CASE = Activities as case +DatabaseTable.FACILITIES = Facilities +DatabaseTable.POINTS_OF_ENTRY = Points of entry +DatabaseTable.HEALTH_CONDITIONS = Health conditions +DatabaseTable.HOSPITALIZATIONS = Hospitalizations +DatabaseTable.IMMUNIZATIONS = Immunizations +DatabaseTable.LOCATIONS = Locations +DatabaseTable.OUTBREAKS = Outbreaks +DatabaseTable.PERSONS = Persons +DatabaseTable.PERSON_CONTACT_DETAILS = Person contact details +DatabaseTable.PRESCRIPTIONS = Prescriptions +DatabaseTable.PREVIOUSHOSPITALIZATIONS = Previous hospitalizations +DatabaseTable.REGIONS = Regions +DatabaseTable.SAMPLES = Samples +DatabaseTable.PATHOGEN_TESTS = Pathogen tests +DatabaseTable.ADDITIONAL_TESTS = Additional tests +DatabaseTable.TASKS = Tasks +DatabaseTable.THERAPIES = Therapies +DatabaseTable.TRAVEL_ENTRIES = Travel entries +DatabaseTable.TREATMENTS = Treatments +DatabaseTable.USERS = Users +DatabaseTable.USER_ROLES = User roles +DatabaseTable.VACCINATIONS = Vaccinations +DatabaseTable.VISITS = Visits +DatabaseTable.VISIT_SYMPTOMS = Symptoms +DatabaseTable.WEEKLYREPORTS = Weekly reports +DatabaseTable.WEEKLYREPORTENTRIES = Weekly report entries +DatabaseTable.PORT_HEALTH_INFO = Port health information +DatabaseTable.MATERNAL_HISTORIES = Maternal histories +DatabaseTable.LAB_MESSAGES = Lab messages +DatabaseTable.TEST_REPORTS = Test reports +DatabaseTable.SORMAS_TO_SORMAS_ORIGIN_INFO = SORMAS 2 SORMAS origin information +DatabaseTable.SORMAS_TO_SORMAS_SHARE_INFO = SORMAS 2 SORMAS share information +DatabaseTable.SORMAS_TO_SORMAS_SHARE_REQUESTS = SORMAS 2 SORMAS share requests +DatabaseTable.SHARE_REQUEST_INFO = SORMAS 2 SORMAS share request information +DatabaseTable.EXTERNAL_SHARE_INFO = External share information +DatabaseTable.CAMPAIGNS = Campaigns +DatabaseTable.CAMPAIGN_FORM_META = Campaign form meta +DatabaseTable.CAMPAIGN_FORM_DATA = Campaign form data +DatabaseTable.CAMPAIGN_DIAGRAM_DEFINITIONS = Campaign diagram definitions +DatabaseTable.POPULATION_DATA = Population data +DatabaseTable.SURVEILLANCE_REPORTS = Surveillance reports +DatabaseTable.AGGREGATE_REPORTS = Aggregate reports +DatabaseTable.WEEKLY_REPORTS = Weekly reports +DatabaseTable.WEEKLY_REPORT_ENTRIES = Weekly report entries +DatabaseTable.DOCUMENTS = Documents +DatabaseTable.EXPORT_CONFIGURATIONS = Export configurations +DatabaseTable.FEATURE_CONFIGURATIONS = Feature configurations +DatabaseTable.DISEASE_CONFIGURATIONS = Disease configurations +DatabaseTable.DELETION_CONFIGURATIONS = Deletion configurations + +# DateFilterOption +DateFilterOption.DATE = By Date +DateFilterOption.EPI_WEEK = By Epi Week + +# DeathPlaceType +DeathPlaceType.COMMUNITY = Community +DeathPlaceType.HOSPITAL = Hospital +DeathPlaceType.OTHER = Other + +# DengueFeverType +DengueFeverType.DENGUE_FEVER = Dengue Fever +DengueFeverType.DENGUE_HEMORRHAGIC_FEVER = Dengue Hemorrhagic Fever +DengueFeverType.DENUGE_SHOCK_SYNDROME = Denuge Shock Syndrome + +# HumanRabiesType +RabiesType.FURIOUS_RABIES = Furious Rabies +RabiesType.PARALYTIC_RABIES = Paralytic Rabies + +# Disease +Disease.AFP = Acute Flaccid Paralysis +Disease.CHOLERA = Cholera +Disease.CONGENITAL_RUBELLA = Congenital Rubella +Disease.CSM = Meningitis (CSM) +Disease.DENGUE = Dengue Fever +Disease.EVD = Ebola Virus Disease +Disease.GUINEA_WORM = Guinea Worm +Disease.LASSA = Lassa +Disease.MEASLES = Measles +Disease.MONKEYPOX = Monkeypox +Disease.NEW_INFLUENZA = Influenza (New subtype) +Disease.UNDEFINED = Not Yet Defined +Disease.OTHER = Other Epidemic Disease +Disease.PLAGUE = Plague +Disease.POLIO = Poliomyelitis +Disease.UNSPECIFIED_VHF = Unspecified VHF +Disease.WEST_NILE_FEVER = West Nile Fever +Disease.YELLOW_FEVER = Yellow Fever +Disease.RABIES = Human Rabies +Disease.ANTHRAX = Anthrax +Disease.PNEUMONIA = Pneumonia +Disease.MALARIA = Malaria +Disease.TYPHOID_FEVER = Typhoid Fever +Disease.ACUTE_VIRAL_HEPATITIS = Acute Viral Hepatitis +Disease.NON_NEONATAL_TETANUS = Non-Neonatal Tetanus +Disease.HIV = HIV +Disease.SCHISTOSOMIASIS = Schistosomiasis +Disease.SOIL_TRANSMITTED_HELMINTHS = Soil-Transmitted Helminths +Disease.TRYPANOSOMIASIS = Trypanosomiasis +Disease.DIARRHEA_DEHYDRATION = Diarrhea w/ Dehydration (< 5) +Disease.DIARRHEA_BLOOD = Diarrhea w/ Blood (Shigella) +Disease.SNAKE_BITE = Snake Bite +Disease.RUBELLA = Rubella +Disease.TUBERCULOSIS = Tuberculosis +Disease.LEPROSY = Leprosy +Disease.LYMPHATIC_FILARIASIS = Lymphatic Filariasis +Disease.BURULI_ULCER = Buruli Ulcer +Disease.PERTUSSIS = Pertussis +Disease.NEONATAL_TETANUS = Neonatal Tetanus +Disease.ONCHOCERCIASIS = Onchocerciasis +Disease.DIPHTERIA = Diphteria +Disease.TRACHOMA = Trachoma +Disease.YAWS_ENDEMIC_SYPHILIS = Yaws and Endemic Syphilis +Disease.MATERNAL_DEATHS = Maternal Deaths +Disease.PERINATAL_DEATHS = Perinatal Deaths +Disease.CORONAVIRUS = COVID-19 +Disease.INFLUENZA_A = Influenza A +Disease.INFLUENZA_B = Influenza B +Disease.H_METAPNEUMOVIRUS = H.metapneumovirus +Disease.RESPIRATORY_SYNCYTIAL_VIRUS = Respiratory syncytial virus (RSV) +Disease.PARAINFLUENZA_1_4 = Parainfluenza (1-4) +Disease.ADENOVIRUS = Adenovirus +Disease.RHINOVIRUS = Rhinovirus +Disease.ENTEROVIRUS = Enterovirus +Disease.M_PNEUMONIAE = M.pneumoniae +Disease.C_PNEUMONIAE = C.pneumoniae +Disease.Short.AFP = AFP +Disease.Short.CHOLERA = Cholera +Disease.Short.CONGENITAL_RUBELLA = CRS +Disease.Short.CSM = Meningitis +Disease.Short.DENGUE = Dengue +Disease.Short.EVD = EVD +Disease.Short.GUINEA_WORM = Guinea Worm +Disease.Short.LASSA = Lassa +Disease.Short.MEASLES = Measles +Disease.Short.MONKEYPOX = Monkeypox +Disease.Short.NEW_INFLUENZA = New Flu +Disease.Short.UNDEFINED = Undefined +Disease.Short.OTHER = Other +Disease.Short.PLAGUE = Plague +Disease.Short.POLIO = Polio +Disease.Short.UNSPECIFIED_VHF = VHF +Disease.Short.WEST_NILE_FEVER = West Nile Fever +Disease.Short.YELLOW_FEVER = Yellow Fever +Disease.Short.RABIES = Rabies +Disease.Short.ANTHRAX = Anthrax +Disease.Short.PNEUMONIA = Pneumonia +Disease.Short.MALARIA = Malaria +Disease.Short.TYPHOID_FEVER = Typhoid Fever +Disease.Short.ACUTE_VIRAL_HEPATITIS = Acute Viral Hepatitis +Disease.Short.NON_NEONATAL_TETANUS = Non-Neonatal Tetanus +Disease.Short.HIV = HIV +Disease.Short.SCHISTOSOMIASIS = Schistosomiasis +Disease.Short.SOIL_TRANSMITTED_HELMINTHS = Soil-Transmitted Helminths +Disease.Short.TRYPANOSOMIASIS = Trypanosomiasis +Disease.Short.DIARRHEA_DEHYDRATION = Diarrhea w/ Dehydration (< 5) +Disease.Short.DIARRHEA_BLOOD = Diarrhea w/ Blood (Shigella) +Disease.Short.SNAKE_BITE = Snake Bite +Disease.Short.RUBELLA = Rubella +Disease.Short.TUBERCULOSIS = Tuberculosis +Disease.Short.LEPROSY = Leprosy +Disease.Short.LYMPHATIC_FILARIASIS = Lymphatic Filariasis +Disease.Short.BURULI_ULCER = Buruli Ulcer +Disease.Short.PERTUSSIS = Pertussis +Disease.Short.NEONATAL_TETANUS = Neonatal Tetanus +Disease.Short.ONCHOCERCIASIS = Onchocerciasis +Disease.Short.DIPHTERIA = Diphteria +Disease.Short.TRACHOMA = Trachoma +Disease.Short.YAWS_ENDEMIC_SYPHILIS = Yaws and Endemic Syphilis +Disease.Short.MATERNAL_DEATHS = Maternal Deaths +Disease.Short.PERINATAL_DEATHS = Perinatal Deaths +Disease.Short.CORONAVIRUS = COVID-19 +Disease.Short.INFLUENZA_A = Influenza A +Disease.Short.INFLUENZA_B = Influenza B +Disease.Short.H_METAPNEUMOVIRUS = H.metapneumovirus +Disease.Short.RESPIRATORY_SYNCYTIAL_VIRUS = RSV +Disease.Short.PARAINFLUENZA_1_4 = Parainfluenza +Disease.Short.ADENOVIRUS = Adenovirus +Disease.Short.RHINOVIRUS = Rhinovirus +Disease.Short.ENTEROVIRUS = Enterovirus +Disease.Short.M_PNEUMONIAE = M.pneumoniae +Disease.Short.C_PNEUMONIAE = C.pneumoniae + +DiseaseTransmissionMode.HUMAN_TO_HUMAN = Primarily via human to human +DiseaseTransmissionMode.ANIMAL = Primarily via animal +DiseaseTransmissionMode.ENVIRONMENT = Primarily via environment +DiseaseTransmissionMode.FOOD = Primarily via food +DiseaseTransmissionMode.VECTOR_BORNE = Primarily vector-borne +DiseaseTransmissionMode.UNKNOWN = Unknown + +# DocumentRelatedEntityType +DocumentRelatedEntityType.ACTION = Action +DocumentRelatedEntityType.CASE = Case +DocumentRelatedEntityType.CONTACT = Contact +DocumentRelatedEntityType.EVENT = Event +DocumentRelatedEntityType.TRAVEL_ENTRY = Travel Entry + +# DocumentWorkflow +DocumentWorkflow.QUARANTINE_ORDER_CASE = Document Templates Case +DocumentWorkflow.QUARANTINE_ORDER_CONTACT = Document Templates Contact +DocumentWorkflow.QUARANTINE_ORDER_EVENT_PARTICIPANT = Document Templates Event Participant +DocumentWorkflow.QUARANTINE_ORDER_TRAVEL_ENTRY = Document Templates Travel Entry +DocumentWorkflow.EVENT_HANDOUT = Templates Event Handout + +EducationType.NONE = No education +EducationType.NURSERY = Nursery +EducationType.PRIMARY = Primary +EducationType.SECONDARY = Secondary +EducationType.TERTIARY = Tertiary +EducationType.OTHER = Other + +EntityRelevanceStatus.ACTIVE = Active +EntityRelevanceStatus.ARCHIVED = Archived +EntityRelevanceStatus.ALL = All + +# EpiCurveGrouping +EpiCurveGrouping.DAY = Day +EpiCurveGrouping.MONTH = Month +EpiCurveGrouping.WEEK = Epi Week + +# EpiCurveContactsMode +EpiCurveContactsMode.CONTACT_CLASSIFICATION = Contact Classification +EpiCurveContactsMode.FOLLOW_UP_STATUS = Follow-Up Status +EpiCurveContactsMode.FOLLOW_UP_UNTIL = Follow-Up Until + +# EpiCurveSurveillanceMode +EpiCurveSurveillanceMode.ALIVE_OR_DEAD = Alive or dead +EpiCurveSurveillanceMode.CASE_STATUS = Case status + +# EpiWeekFilterOption +EpiWeekFilterOption.LAST_WEEK = Last Week +EpiWeekFilterOption.SPECIFY_WEEK = Specify +EpiWeekFilterOption.THIS_WEEK = This Week + +# EventContactCountMethod +EventContactCountMethod.ALL = Count all contacts +EventContactCountMethod.SOURCE_CASE_IN_EVENT = Only count contacts with source case in event +EventContactCountMethod.BOTH_METHODS = Show both methods + +# EventInvestigationStatus +EventInvestigationStatus.DISCARDED=Investigation discarded +EventInvestigationStatus.DONE=Investigation done +EventInvestigationStatus.ONGOING=Ongoing Investigation +EventInvestigationStatus.PENDING=Investigation pending +EventInvestigationStatus.Short.DISCARDED=Discarded +EventInvestigationStatus.Short.DONE=Done +EventInvestigationStatus.Short.ONGOING=Ongoing +EventInvestigationStatus.Short.PENDING=Pending + +# EventStatus +EventStatus.EVENT = Event +EventStatus.DROPPED = Dropped +EventStatus.SIGNAL = Signal +EventStatus.SCREENING = Screening +EventStatus.CLUSTER = Cluster +EventStatus.Short.EVENT = Event +EventStatus.Short.DROPPED = Dropped +EventStatus.Short.SIGNAL = Signal +EventStatus.Short.SCREENING = Screening +EventStatus.Short.CLUSTER = Cluster + +# EventManagementStatus +EventManagementStatus.PENDING = Pending +EventManagementStatus.ONGOING = Ongoing +EventManagementStatus.DONE = Done +EventManagementStatus.CLOSED = Closed + +# EventIndentificationSource +EventIdentificationSource.UNKNOWN = Unknown +EventIdentificationSource.BACKWARD_TRACING = Backward-tracing +EventIdentificationSource.FORWARD_TRACING = Forward-tracing + +ExportGroupType.CORE = Core Data +ExportGroupType.SENSITIVE = Sensitive Person Data +ExportGroupType.PERSON = General Person Data +ExportGroupType.HOSPITALIZATION = Hospitalization Data +ExportGroupType.EPIDEMIOLOGICAL = Epidemiological Data +ExportGroupType.VACCINATION = Vaccination Data +ExportGroupType.FOLLOW_UP = Follow-up Data +ExportGroupType.ADDITIONAL = Additional Data +ExportGroupType.LOCATION = Location Data +ExportGroupType.EVENT = Event Data +ExportGroupType.EVENT_GROUP = Event Group Data +ExportGroupType.EVENT_SOURCE = Event Source Data +ExportGroupType.CLINICAL_COURSE = Clinical Course Data +ExportGroupType.THERAPY = Therapy Data + +EventSourceType.NOT_APPLICABLE = Not applicable +EventSourceType.MEDIA_NEWS = Media/News +EventSourceType.HOTLINE_PERSON = Hotline/Person +EventSourceType.MATHEMATICAL_MODEL = Mathematical model +EventSourceType.INSTITUTIONAL_PARTNER = Institutional partner + +InstitutionalPartnerType.HEALTH_INSURANCE = Health insurance +InstitutionalPartnerType.TERRITORIAL_COMMUNITIES = Territorial communities +InstitutionalPartnerType.NATIONAL_EDUCATION = National education +InstitutionalPartnerType.HEALTH_ESTABLISHMENTS = Health establishments +InstitutionalPartnerType.MEDICO_SOCIAL_ESTABLISHMENTS = Medico-social establishments +InstitutionalPartnerType.OTHER = Other + +ExposureType.WORK=Work +ExposureType.TRAVEL=Travel +ExposureType.SPORT=Sport +ExposureType.VISIT=Visit +ExposureType.GATHERING=Gathering +ExposureType.HABITATION=Habitation +ExposureType.PERSONAL_SERVICES=Personal Services +ExposureType.BURIAL=Burial +ExposureType.ANIMAL_CONTACT=Animal Contact +ExposureType.OTHER=Other +ExposureType.UNKNOWN=Unknown + +# FacilityType +FacilityType.ASSOCIATION=Association, club +FacilityType.BAR=Bar +FacilityType.BUSINESS=Business +FacilityType.CAMPSITE=Campsite +FacilityType.CANTINE=Cantine +FacilityType.CHILDRENS_DAY_CARE=Children's day care +FacilityType.CHILDRENS_HOME=Children's home +FacilityType.CORRECTIONAL_FACILITY=Correctional facility +FacilityType.CRUISE_SHIP=Cruise ship +FacilityType.ELDERLY_DAY_CARE=Elderly day care +FacilityType.EVENT_VENUE=Event venue +FacilityType.FOOD_STALL=Food stall +FacilityType.HOLIDAY_CAMP=Holiday camp +FacilityType.HOMELESS_SHELTER=Homeless shelter +FacilityType.HOSPITAL=Hospital +FacilityType.HOSTEL=Hostel, dormitory +FacilityType.HOTEL=Hotel, B&B, inn, lodge +FacilityType.KINDERGARTEN=Kindergarten/After school care +FacilityType.LABORATORY=Laboratory +FacilityType.MASS_ACCOMMODATION=Mass accommodation (e.g. guest and harvest workers) +FacilityType.MILITARY_BARRACKS=Military barracks +FacilityType.MOBILE_NURSING_SERVICE=Mobile nursing service +FacilityType.NIGHT_CLUB=Night club, dance club, discotheque +FacilityType.OTHER_ACCOMMODATION=Other Accommodation +FacilityType.OTHER_CARE_FACILITY=Other Care facility +FacilityType.OTHER_CATERING_OUTLET=Other Catering outlet +FacilityType.OTHER_EDUCATIONAL_FACILITY=Other Educational facility +FacilityType.OTHER_LEISURE_FACILITY=Other Leisure facility +FacilityType.OTHER_MEDICAL_FACILITY=Other Medical facility +FacilityType.OTHER_RESIDENCE=Other Residence +FacilityType.OTHER_WORKING_PLACE=Other Working place/company +FacilityType.OTHER_COMMERCE=Other Commerce +FacilityType.OUTPATIENT_TREATMENT_FACILITY=Outpatient treatment facility +FacilityType.PLACE_OF_WORSHIP=Place of worship +FacilityType.PUBLIC_PLACE=Public place/playground +FacilityType.REFUGEE_ACCOMMODATION=Refugee accommodation/initial reception facility +FacilityType.REHAB_FACILITY=Rehab facility +FacilityType.RESTAURANT=Restaurant/tavern +FacilityType.RETIREMENT_HOME=Retirement home +FacilityType.SCHOOL=School +FacilityType.SWIMMING_POOL=Swimming pool +FacilityType.THEATER=Theater/cinema +FacilityType.UNIVERSITY=University +FacilityType.ZOO=Zoological garden, animal park +FacilityType.RETAIL = Retail +FacilityType.WHOLESALE = Wholesale +FacilityType.AMBULATORY_SURGERY_FACILITY = Ambulatory surgery facility +FacilityType.DIALYSIS_FACILITY = Dialysis facility +FacilityType.DAY_HOSPITAL = Day hospital +FacilityType.MATERNITY_FACILITY = Maternity facility +FacilityType.MEDICAL_PRACTICE = Medical practice +FacilityType.DENTAL_PRACTICE = Dental practice +FacilityType.OTHER_MEDICAL_PRACTICE = Other medical practice +FacilityType.DIAGNOSTIC_PREVENTATIVE_THERAPEUTIC_FACILITY = Diagnostic, preventative, therapeutic facility +FacilityType.EMERGENCY_MEDICAL_SERVICES = Emergency medical services +FacilityType.ELDERLY_CARE_FACILITY = Elderly care facility +FacilityType.DISABLED_PERSON_HABITATION = Disabled person habitation +FacilityType.CARE_RECIPIENT_HABITATION = Care recipient habitation +FacilityType.VISITING_AMBULATORY_AID = Visiting ambulatory aid +FacilityType.AFTER_SCHOOL = After school facility + +#FacilityTypeGroup +FacilityTypeGroup.ACCOMMODATION=Accommodation +FacilityTypeGroup.CARE_FACILITY=Care facility +FacilityTypeGroup.CATERING_OUTLET=Catering outlet +FacilityTypeGroup.EDUCATIONAL_FACILITY=Educational facility +FacilityTypeGroup.LEISURE_FACILITY=Leisure facility +FacilityTypeGroup.MEDICAL_FACILITY=Medical facility +FacilityTypeGroup.RESIDENCE=Residence +FacilityTypeGroup.WORKING_PLACE=Working place/company +FacilityTypeGroup.COMMERCE=Commerce + +# FollowUpStartDateType +FollowUpStartDateType.SYMPTOM_ONSET_DATE=symptom onset date +FollowUpStartDateType.LAST_CONTACT_DATE=last contact date +FollowUpStartDateType.EARLIEST_SAMPLE_COLLECTION_DATE=earliest sample collection date +FollowUpStartDateType.REPORT_DATE=report date + +# FollowUpStatus +FollowUpStatus.CANCELED=Canceled follow-up +FollowUpStatus.COMPLETED=Completed follow-up +FollowUpStatus.FOLLOW_UP=Under follow-up +FollowUpStatus.LOST=Lost follow-up +FollowUpStatus.NO_FOLLOW_UP=No follow-up +FollowUpStatus.Short.CANCELED=Canceled +FollowUpStatus.Short.COMPLETED=Completed +FollowUpStatus.Short.FOLLOW_UP=Ongoing +FollowUpStatus.Short.LOST=Lost to follow-up +FollowUpStatus.Short.NO_FOLLOW_UP=No follow-up +FollowUpStatus.Desc.CANCELED=The follow-up process has been canceled, e.g. because the person died or the contact became irrelevant +FollowUpStatus.Desc.COMPLETED=The follow-up process has been completed +FollowUpStatus.Desc.FOLLOW_UP=The follow-up process is running +FollowUpStatus.Desc.LOST=The follow-up process could not be continued because the person was not available +FollowUpStatus.Desc.NO_FOLLOW_UP=No contact follow-up is being done + +GatheringType.PARTY=Party +GatheringType.RELIGIOUS=Religious Gathering +GatheringType.MUSICAL=Choir/Singing Club/Orchestra +GatheringType.CONCERT=Concert +GatheringType.DEMONSTRATION=Demonstration +GatheringType.CARNIVAL=Carnival +GatheringType.FAIR=Fair +GatheringType.SPORTING_EVENT=Sporting event +GatheringType.OTHER=Other + +HabitationType.MEDICAL=Stay in a Medical Institution +HabitationType.OTHER=Other + +HospitalizationReasonType.REPORTED_DISEASE=Reported disease +HospitalizationReasonType.ISOLATION=Isolation +HospitalizationReasonType.OTHER=Other reason +HospitalizationReasonType.UNKNOWN=Unknown + +HospitalWardType.PEDIATRIC_INPATIENT = Pediatric-Inpatient +HospitalWardType.NURSERY = Nursery +HospitalWardType.EPU = EPU +HospitalWardType.CHER = CHER +HospitalWardType.OPD = OPD +HospitalWardType.EYE = Eye +HospitalWardType.ENT = ENT +HospitalWardType.CARDIOLOGY = Cardiology +HospitalWardType.OTHER = Other + +# ImmunizationDateType +ImmunizationDateType.FIRST_VACCINATION_DATE=Date of first vaccination +ImmunizationDateType.IMMUNIZATION_END=End of immunization +ImmunizationDateType.LAST_VACCINATION_DATE=Date of last vaccination +ImmunizationDateType.RECOVERY_DATE=Date of recovery +ImmunizationDateType.REPORT_DATE=Date of report +ImmunizationDateType.VALID_UNTIL=Valid until + +# InvestigationStatus +InvestigationStatus.DISCARDED=Investigation discarded +InvestigationStatus.DONE=Investigation done +InvestigationStatus.PENDING=Investigation pending +InvestigationStatus.Short.DISCARDED=Discarded +InvestigationStatus.Short.DONE=Done +InvestigationStatus.Short.PENDING=Pending + +# KindOfInvolvement +KindOfInvolvement.OTHER = Other +KindOfInvolvement.POTENTIALLY_EXPOSED = Potentially exposed +KindOfInvolvement.POTENTIAL_INDEX_CASE = Potential index case + +Language.EN = English +Language.EN_AF = English (Afghanistan) +Language.EN_NG = English (Nigeria) +Language.EN_GH = English (Ghana) +Language.FR = Français +Language.DE = Deutsch +Language.ES_EC = Español (Ecuador) +Language.ES_CU = Español (Cuba) +Language.FI = Suomi +Language.IT = Italiano +Language.DE_CH = Deutsch (Schweiz) +Language.IT_CH = Italiano (Svizzera) +Language.FR_CH = Français (Suisse) +Language.PS = Pashto +Language.FA = Dari +Language.CZ = Čeština + +# MapCaseDisplayMode +MapCaseDisplayMode.CASE_ADDRESS = ... by home address +MapCaseDisplayMode.FACILITY = ... by facility +MapCaseDisplayMode.FACILITY_OR_CASE_ADDRESS = ... by facility or home address + +MapCaseClassificationOption.ALL_CASES = Show all cases +MapCaseClassificationOption.CONFIRMED_CASES_ONLY = Show confirmed cases only + +MapPeriodType.DAILY = Daily +MapPeriodType.WEEKLY = Weekly +MapPeriodType.MONTHLY = Monthly +MapPeriodType.YEARLY = Yearly + + +MeansOfTransport.LOCAL_PUBLIC_TRANSPORT=Local public transport +MeansOfTransport.BUS=Bus +MeansOfTransport.FERRY=Ship/Ferry +MeansOfTransport.PLANE=Plane +MeansOfTransport.TRAIN=Train +MeansOfTransport.OTHER=Other + +# MessageSubject +MessageSubject.CASE_CLASSIFICATION_CHANGED = Case classification changed +MessageSubject.CASE_INVESTIGATION_DONE = Case investigation done +MessageSubject.EVENT_PARTICIPANT_CASE_CLASSIFICATION_CONFIRMED = Event participant identified as a confirmed %s case +MessageSubject.EVENT_PARTICIPANT_RELATED_TO_OTHER_EVENTS = Event Participant related to other Events +MessageSubject.LAB_RESULT_ARRIVED = Lab result arrived +MessageSubject.LAB_SAMPLE_SHIPPED = Lab sample shipped +MessageSubject.CONTACT_SYMPTOMATIC = Contact has become symptomatic +MessageSubject.TASK_START = Task to be started +MessageSubject.TASK_DUE = Task overdue +MessageSubject.TASK_UPDATED_ASSIGNEE = Updated task assignee +MessageSubject.VISIT_COMPLETED = Follow-up visit completed +MessageSubject.DISEASE_CHANGED = Case disease changed +MessageSubject.EVENT_GROUP_CREATED = Event Group created +MessageSubject.EVENT_ADDED_TO_EVENT_GROUP = Event added to Event Group +MessageSubject.EVENT_REMOVED_FROM_EVENT_GROUP = Event removed from Event Group + +# Month +Month.JANUARY = January +Month.FEBRUARY = February +Month.MARCH = March +Month.APRIL = April +Month.MAY = May +Month.JUNE = June +Month.JULY = July +Month.AUGUST = August +Month.SEPTEMBER = September +Month.OCTOBER = October +Month.NOVEMBER = November +Month.DECEMBER = December + +# NewCaseDateType +NewCaseDateType.MOST_RELEVANT = Most relevant date +NewCaseDateType.ONSET = Symptom onset date +NewCaseDateType.REPORT = Case report date + +# OccupationType +OccupationType.BUSINESSMAN_WOMAN = Businessman / woman +OccupationType.BUTCHER = Butcher +OccupationType.CHILD = Child +OccupationType.FARMER = Farmer +OccupationType.HEALTHCARE_WORKER = Healthcare worker +OccupationType.HOUSEWIFE = Housewife +OccupationType.HUNTER_MEAT_TRADER = Hunter / trader of game meat +OccupationType.MINER = Miner +OccupationType.OTHER = Other +OccupationType.PUPIL_STUDENT = Pupil / student +OccupationType.RELIGIOUS_LEADER = Religious leader +OccupationType.TRADITIONAL_SPIRITUAL_HEALER = Traditional / spiritual healer +OccupationType.TRANSPORTER = Transporter +OccupationType.WORKING_WITH_ANIMALS = Working with animals +OccupationType.LABORATORY_STAFF = Laboratory staff + +OccupationType.AGRICULTURE = A. Agriculture & forestry, fisheries +OccupationType.MINING = B. Mining & quarrying +OccupationType.MANUFACTURING = C. Manufacturing industry /manufacture of goods +OccupationType.ENERGY_SUPPLY = D. Energy supply +OccupationType.WATER_SUPPLY_AND_WASTE = E. Water supply; sewerage and waste management +OccupationType.CONSTRUCTION = F. Construction industry /building +OccupationType.RETAIL_AND_REPAIR_SERVICE = G. Wholesale and retail trade; repair services +OccupationType.TRANSPORT_AND_STORAGE = H. Transport and storage +OccupationType.ACCOMMODATION_AND_FOOD_SERVICES = I. Hotels and restaurants /accommodation & gastronomy +OccupationType.INFORMATION_AND_COMMUNICATION = J. Information & communication +OccupationType.FINANCE_AND_INSURANCE = K. Finance & insurance +OccupationType.REAL_ESTATE = L. Real estate and housing +OccupationType.PROFESSIONAL_SCIENTIFIC_AND_TECHNICAL = M. Service\: freelance, scientific, technical +OccupationType.ADMINISTRATIVE_AND_SUPPORT = N. Service\: other economic activities +OccupationType.PUBLIC_ADMINISTRATION_AND_DEFENCE = O. Public administration and defence; social services/security +OccupationType.EDUCATION = P. Education & teaching +OccupationType.HEALTH_AND_SOCIAL = Q. Health & social services +OccupationType.ARTS_ENTERTAINMENT_AND_RECREATION = R. Arts, entertainment & recreation +OccupationType.SERVICE_OTHER = S. Service\: other +OccupationType.PRIVATE_HOUSEHOLD = T. Private households with domestic staff +OccupationType.EXTRATERRITORIAL_ORGANIZATIONS = U. Exterritorial organisations & bodies + +# PathogenTestResultType +PathogenTestResultType.INDETERMINATE = Indeterminate +PathogenTestResultType.NEGATIVE = Negative +PathogenTestResultType.PENDING = Pending +PathogenTestResultType.POSITIVE = Positive +PathogenTestResultType.NOT_DONE = Not done + +# PathogenTestType +PathogenTestType.ANTIGEN_DETECTION = Antigen detection test +PathogenTestType.CULTURE = Culture +PathogenTestType.DENGUE_FEVER_ANTIBODIES = Dengue fever neutralizing antibodies +PathogenTestType.DENGUE_FEVER_IGM = Dengue fever IgM serum antibody +PathogenTestType.DNA_MICROARRAY = DNA Microarray +PathogenTestType.HISTOPATHOLOGY = Histopathology +PathogenTestType.IGG_SERUM_ANTIBODY = IgG serum antibody +PathogenTestType.IGM_SERUM_ANTIBODY = IgM serum antibody +PathogenTestType.IGA_SERUM_ANTIBODY = IgA serum antibody +PathogenTestType.ISOLATION = Isolation +PathogenTestType.MICROSCOPY = Microscopy +PathogenTestType.NEUTRALIZING_ANTIBODIES = Neutralizing antibodies +PathogenTestType.OTHER = Other +PathogenTestType.PCR_RT_PCR = PCR / RT-PCR +PathogenTestType.RAPID_TEST = Antigen detection test (rapid test) +PathogenTestType.WEST_NILE_FEVER_ANTIBODIES = West nile fever neutralizing antibodies +PathogenTestType.WEST_NILE_FEVER_IGM = West nile fever IgM serum antibody +PathogenTestType.YELLOW_FEVER_ANTIBODIES = Yellow fever neutralizing antibodies +PathogenTestType.YELLOW_FEVER_IGM = Yellow fever IgM serum antibody +PathogenTestType.YERSINIA_PESTIS_ANTIGEN = Yersinia pestis antigen test +PathogenTestType.ANTIBODY_DETECTION = Antibody detection +PathogenTestType.INCUBATION_TIME = Incubation time +PathogenTestType.INDIRECT_FLUORESCENT_ANTIBODY = Indirect Fluorescent Antibody (IFA) +PathogenTestType.DIRECT_FLUORESCENT_ANTIBODY = Direct Fluorescent Antibody (FA) +PathogenTestType.GRAM_STAIN = Gram Stain +PathogenTestType.LATEX_AGGLUTINATION = Latex Agglutination +PathogenTestType.CQ_VALUE_DETECTION = CQ Value Detection +PathogenTestType.SEQUENCING = Sequencing + +PCRTestSpecification.VARIANT_SPECIFIC = Variant specific +PCRTestSpecification.N501Y_MUTATION_DETECTION = N501Y mutation detection + +PersonContactDetailType.PHONE = Phone +PersonContactDetailType.EMAIL = Email +PersonContactDetailType.OTHER = Other + +PhoneNumberType.LANDLINE = Landline +PhoneNumberType.MOBILE = Mobile +PhoneNumberType.WORK = Work +PhoneNumberType.OTHER = Other + +ExposureRole.PASSENGER = Passenger +ExposureRole.STAFF = Staff +ExposureRole.NURSING_STAFF = Nursing staff +ExposureRole.MEDICAL_STAFF = Medical staff +ExposureRole.VISITOR = Visitor +ExposureRole.GUEST = Guest +ExposureRole.CUSTOMER = Customer +ExposureRole.CONSERVATEE = Conservatee +ExposureRole.PATIENT = Patient +ExposureRole.EDUCATOR = Educator +ExposureRole.TRAINEE_TEACHER = Trainee teacher +ExposureRole.PUPIL = Pupil +ExposureRole.STUDENT = Student +ExposureRole.PARENT = Parent +ExposureRole.TEACHER = Teacher +ExposureRole.UNKNOWN = Unknown +ExposureRole.OTHER = Other + +#SymptomJournalStatus +SymptomJournalStatus.UNREGISTERED = Unregistered +SymptomJournalStatus.REGISTERED = Registered +SymptomJournalStatus.ACCEPTED = Accepted +SymptomJournalStatus.REJECTED = Rejected +SymptomJournalStatus.DELETED = Deleted + +# PlagueType +PlagueType.BUBONIC = Bubonic plague +PlagueType.PNEUMONIC = Pneumonic plague +PlagueType.SEPTICAEMIC = Septicaemic plague + +# PersonAddressType +PersonAddressType.HOME = Home +PersonAddressType.PLACE_OF_RESIDENCE = Place of residence +PersonAddressType.PLACE_OF_EXPOSURE = Place of exposure +PersonAddressType.PLACE_OF_WORK = Place of work +PersonAddressType.PLACE_OF_ISOLATION = Place of isolation +PersonAddressType.EVENT_LOCATION = Event location +PersonAddressType.OTHER_ADDRESS = Other address + +# PointOfEntryType +PointOfEntryType.AIRPORT = Airport +PointOfEntryType.SEAPORT = Seaport +PointOfEntryType.GROUND_CROSSING = Ground crossing +PointOfEntryType.OTHER = Other + +# PresentCondition +PresentCondition.ALIVE=Alive +PresentCondition.BURIED=Buried +PresentCondition.DEAD=Dead +PresentCondition.UNKNOWN=Unknown + +# QuarantineType +QuarantineType.HOME = Home +QuarantineType.INSTITUTIONELL = Institutional +QuarantineType.NONE = None +QuarantineType.UNKNOWN = Unknown +QuarantineType.OTHER = Other + +QuarantineType.HOSPITAL = Hospital +QuarantineType.HOTEL = Hotel +QuarantineType.ASYLUM_ACCOMMODATION = Asylum Accommodation + +# ReportingType +ReportingType.NOT_RAISED = Not raised +ReportingType.OTHER = Other +ReportingType.DOCTOR = Doctor +ReportingType.LABORATORY = Laboratory +ReportingType.OWN_DETERMINATION = Own Determination +ReportingType.HOSPITAL_OR_STATIONARY_CARE = Hospital or stationary care +ReportingType.NOT_DETERMINABLE = Not determinable +ReportingType.FORWARDING = Forwarding +ReportingType.COMMUNITY_FACILITY = Community facility +ReportingType.COMMUNITY_FACILITY_IFSG_ARTICLE_34 = Community facility (§ 34 IfSG) + +# RiskLevel +RiskLevel.LOW = Low risk +RiskLevel.MODERATE = Moderate risk +RiskLevel.HIGH = High risk +RiskLevel.UNKNOWN = Unknown + +# SampleMaterial +SampleMaterial.BLOOD = Blood +SampleMaterial.CEREBROSPINAL_FLUID = Cerebrospinal fluid +SampleMaterial.CRUST = Crust +SampleMaterial.NASAL_SWAB = Nasal swab +SampleMaterial.NP_SWAB = Nasopharyngeal swab +SampleMaterial.OTHER = Other +SampleMaterial.RECTAL_SWAB = Rectal swab +SampleMaterial.SERA = Sera +SampleMaterial.STOOL = Stool +SampleMaterial.THROAT_SWAB = Throat swab +SampleMaterial.TISSUE = Tissue +SampleMaterial.URINE = Urine +SampleMaterial.CORNEA_PM=Cornea p.m +SampleMaterial.SALIVA=Saliva +SampleMaterial.URINE_PM=Urine p.m +SampleMaterial.NUCHAL_SKIN_BIOPSY=Nuchal skin biopsy +SampleMaterial.BRAIN_TISSUE=Brain tissue +SampleMaterial.OROPHARYNGEAL_SWAB=Oropharyngeal swab +SampleMaterial.SPUTUM=Sputum +SampleMaterial.ENDOTRACHEAL_ASPIRATE=Endotracheal aspirate +SampleMaterial.BRONCHOALVEOLAR_LAVAGE=Bronchoalveolar lavage +SampleMaterial.ANTERIOR_NARES_SWAB=Anterior nares swab +SampleMaterial.OP_ASPIRATE=Oropharyngeal aspirate +SampleMaterial.NP_ASPIRATE=Nasopharyngeal aspirate +SampleMaterial.PLEURAL_FLUID=Pleural fluid specimen +# SampleSource +SampleSource.ANIMAL=Animal +SampleSource.ENVIRONMENT=Environment +SampleSource.HUMAN=Human +# SampleAssociationType +SampleAssociationType.ALL=All samples +SampleAssociationType.CASE=Case samples +SampleAssociationType.CONTACT=Contact samples +SampleAssociationType.EVENT_PARTICIPANT=Event participant samples +# SamplesViewType +SamplesViewType.SAMPLES=Samples +SamplesViewType.LAB_MESSAGES=Lab messages +# Sex +Sex.FEMALE=Female +Sex.MALE=Male +Sex.OTHER=Other +Sex.UNKNOWN=Unknown +# ShipmentStatus +ShipmentStatus.NOT_SHIPPED=Not shipped +ShipmentStatus.RECEIVED=Received +ShipmentStatus.REFERRED_OTHER_LAB=Referred to other lab +ShipmentStatus.SHIPPED=Shipped +ShipmentStatus.Short.NOT_SHIPPED=Not shipped +ShipmentStatus.Short.RECEIVED=Received +ShipmentStatus.Short.REFERRED_OTHER_LAB=Referred +ShipmentStatus.Short.SHIPPED=Shipped +# SimpleTestResultType +SimpleTestResultType.POSITIVE=Positive +SimpleTestResultType.NEGATIVE=Negative +SimpleTestResultType.INDETERMINATE=Indeterminate + +# SpecimenCondition +SpecimenCondition.ADEQUATE = Adequate +SpecimenCondition.NOT_ADEQUATE = Not adequate + +# StatisticsCaseAttribute +StatisticsCaseAttribute.AGE_INTERVAL_1_YEAR= Age stratification\: 1 year intervals +StatisticsCaseAttribute.AGE_INTERVAL_5_YEARS= Age stratification\: 5 year intervals +StatisticsCaseAttribute.AGE_INTERVAL_BASIC= Age stratification\: basic +StatisticsCaseAttribute.AGE_INTERVAL_CHILDREN_COARSE= Age stratification\: children coarse +StatisticsCaseAttribute.AGE_INTERVAL_CHILDREN_FINE= Age stratification\: children fine +StatisticsCaseAttribute.AGE_INTERVAL_CHILDREN_MEDIUM= Age stratification\: children medium +StatisticsCaseAttribute.CLASSIFICATION = Classification +StatisticsCaseAttribute.DISEASE = Disease +StatisticsCaseAttribute.ONSET_TIME = Onset time +StatisticsCaseAttribute.OUTCOME = Outcome +StatisticsCaseAttribute.OUTCOME_TIME = Outcome time +StatisticsCaseAttribute.JURISDICTION = Region / District / Community / Facility +StatisticsCaseAttribute.REPORT_TIME = Report time +StatisticsCaseAttribute.REPORTING_USER_ROLE = Reporting user role +StatisticsCaseAttribute.SEX = Sex +StatisticsCaseAttribute.PLACE_OF_RESIDENCE = Place of residence + +# StatisticsCaseAttributeGroup +StatisticsCaseAttributeGroup.CASE = Case +StatisticsCaseAttributeGroup.PERSON = Person +StatisticsCaseAttributeGroup.PLACE = Place +StatisticsCaseAttributeGroup.TIME = Time + +# StatisticsCaseSubAttribute +StatisticsCaseSubAttribute.DATE_RANGE = Date range +StatisticsCaseSubAttribute.DISTRICT = District +StatisticsCaseSubAttribute.EPI_WEEK = Epi week +StatisticsCaseSubAttribute.EPI_WEEK_OF_YEAR = Epi week of year +StatisticsCaseSubAttribute.MONTH = Month +StatisticsCaseSubAttribute.MONTH_OF_YEAR = Month of year +StatisticsCaseSubAttribute.QUARTER = Quarter +StatisticsCaseSubAttribute.QUARTER_OF_YEAR = Quarter of year +StatisticsCaseSubAttribute.REGION = Region +StatisticsCaseSubAttribute.YEAR = Year +StatisticsCaseSubAttribute.COMMUNITY = Community +StatisticsCaseSubAttribute.FACILITY = Facility +StatisticsCaseSubAttribute.PERSON_REGION = Person's region +StatisticsCaseSubAttribute.PERSON_DISTRICT = Person's district +StatisticsCaseSubAttribute.PERSON_COMMUNITY = Person's community +StatisticsCaseSubAttribute.PERSON_CITY = Person's city +StatisticsCaseSubAttribute.PERSON_POSTCODE = Person's postcode +StatisticsCaseSubAttribute.PERSON_ADDRESS = Person's address + +# StatisticsVisualizationChartType +StatisticsVisualizationChartType.COLUMN = Column +StatisticsVisualizationChartType.LINE = Line +StatisticsVisualizationChartType.PIE = Pie +StatisticsVisualizationChartType.STACKED_COLUMN = Stacked column + +# StatisticsVisualizationElementType +StatisticsVisualizationElementType.COLUMNS = Columns +StatisticsVisualizationElementType.Chart.COLUMNS = X-axis +StatisticsVisualizationElementType.Chart.ROWS = Series +StatisticsVisualizationElementType.ROWS = Rows + +# StatisticsVisualizationType +StatisticsVisualizationType.CHART = Chart +StatisticsVisualizationMapType.DISTRICTS = Districts +StatisticsVisualizationType.MAP = Map +StatisticsVisualizationMapType.REGIONS = Regions +StatisticsVisualizationType.TABLE = Table + +SurveillanceEpiCurveMode.CASE_STATUS = Case status +SurveillanceEpiCurveMode.ALIVE_OR_DEAD = Alive or dead + +# SymptomState +SymptomState.NO = No +SymptomState.UNKNOWN = Unknown +SymptomState.YES = Yes + +# TaskAssignee +TaskAssignee.ALL = All tasks +TaskAssignee.CURRENT_USER = Tasks assigned to me +TaskAssignee.OTHER_USERS = Tasks created by me + +# TaskContext +TaskContext.CASE = Case +TaskContext.CONTACT = Contact +TaskContext.EVENT = Event +TaskContext.GENERAL = General +TaskContext.TRAVEL_ENTRY = Travel entry + +# TaskDateType +TaskDateType.SUGGESTED_START_DATE = Suggested start date +TaskDateType.DUE_DATE = Due date + +# TaskPriority +TaskPriority.HIGH = High +TaskPriority.LOW = Low +TaskPriority.NORMAL = Normal + +# TaskStatus +TaskStatus.DONE = done +TaskStatus.NOT_EXECUTABLE = not executable +TaskStatus.PENDING = pending +TaskStatus.REMOVED = removed + +# TaskType +TaskType.ACTIVE_SEARCH_FOR_OTHER_CASES = active search for other cases e.g. in household or workplace +TaskType.ANIMAL_DEPOPULATION = depopulation of animals +TaskType.ANIMAL_TESTING = testing of animals +TaskType.CASE_BURIAL = safe burial / cremation +TaskType.CASE_INVESTIGATION = case investigation +TaskType.CASE_ISOLATION = case isolation +TaskType.CASE_MANAGEMENT = case management +TaskType.CONTACT_FOLLOW_UP = contact follow up +TaskType.CONTACT_INVESTIGATION = contact investigation +TaskType.CONTACT_MANAGEMENT = contact management +TaskType.CONTACT_TRACING = contact tracing +TaskType.DAILY_REPORT_GENERATION = generate daily report +TaskType.DECONTAMINATION_DISINFECTION_ACTIVITIES = decontamination / disinfection activities +TaskType.ENVIRONMENTAL_HEALTH_ACTIVITIES = environmental health activities +TaskType.EVENT_INVESTIGATION = investigate the event +TaskType.EVENT_CONTINUE_INVESTIGATION = continue the investigation following a change in the event +TaskType.EVENT_REQUEST_ADDITIONAL_INFORMATION = request for an investigation report / a summary / additional information to be collected +TaskType.OTHER = other task as described in comments +TaskType.QUARANTINE_MANAGEMENT = quarantine management +TaskType.QUARANTINE_ORDER_SEND = send quarantine order +TaskType.QUARANTINE_PLACE = quarantine place +TaskType.SAMPLE_COLLECTION = sample collection +TaskType.SOURCECASE_TRACING = source case tracing +TaskType.SURVEILLANCE_REPORT_GENERATION = generate surveillance report +TaskType.TREATMENT_CENTER_ESTABLISHMENT = establishment of local treatment center +TaskType.VACCINATION_ACTIVITIES = vaccination activities +TaskType.WEEKLY_REPORT_GENERATION = generate weekly report + +# TemperatureSource +TemperatureSource.AXILLARY=axillary +TemperatureSource.NON_CONTACT = Non-contact (infrared) +TemperatureSource.ORAL=oral +TemperatureSource.RECTAL=rectal + +#TracingApp +TracingApp.CORONA_WARN_APP = Corona warn app +TracingApp.OTHER = Other +TracingApp.UNKNOWN = Unknown + +# TravelType +TravelType.ABROAD = Abroad +TravelType.WITHIN_COUNTRY = Within the country + +# TreatmentRoute +TreatmentRoute.ORAL = Oral +TreatmentRoute.IV = IV +TreatmentRoute.RECTAL = Rectal +TreatmentRoute.TOPICAL = Topical +TreatmentRoute.OTHER = Other + +# TreatmentType +TreatmentType.DRUG_INTAKE = Drug intake +TreatmentType.ORAL_REHYDRATION_SALTS = Oral rehydration salts +TreatmentType.BLOOD_TRANSFUSION = Blood transfusion +TreatmentType.RENAL_REPLACEMENT_THERAPY = Renal replacement therapy +TreatmentType.IV_FLUID_THERAPY = IV fluid therapy +TreatmentType.OXYGEN_THERAPY = Oxygen therapy +TreatmentType.INVASIVE_MECHANICAL_VENTILATION = Invasive mechanical ventilation +TreatmentType.VASOPRESSORS_INOTROPES = Vasopressors/Inotropes +TreatmentType.OTHER = Other + +# Trimester +Trimester.FIRST = First +Trimester.SECOND = Second +Trimester.THIRD = Third +Trimester.UNKNOWN = Unknown + +TypeOfAnimal.BAT=Bat or its excreta +TypeOfAnimal.POULTRY=Poultry or wild bird +TypeOfAnimal.CAMEL=Camel +TypeOfAnimal.CANIDAE=Canidae +TypeOfAnimal.CAT=Cat +TypeOfAnimal.CATTLE=Cattle +TypeOfAnimal.DOG=Dog +TypeOfAnimal.PRIMATE=Primate (Monkey) +TypeOfAnimal.SNAKE=Snake +TypeOfAnimal.SWINE=Swine +TypeOfAnimal.RABBIT=Rabbit +TypeOfAnimal.RODENT=Rodent or its excreta +TypeOfAnimal.FLEA=Flea +TypeOfAnimal.TICK=Tick +TypeOfAnimal.OTHER=Other + +# TypeOfDrug +TypeOfDrug.ANTIMICROBIAL = Antimicrobial +TypeOfDrug.ANTIVIRAL = Antiviral +TypeOfDrug.OTHER = Other + +# TypeOfPlace +TypeOfPlace.FACILITY = Facility +TypeOfPlace.FACILITY_23_IFSG = Facility (§ 23 IfSG) +TypeOfPlace.COMMUNITY_FACILITY = Community facility (§ 33 IfSG) +TypeOfPlace.FACILITY_36_IFSG = Facility (§ 36 IfSG) +TypeOfPlace.FESTIVITIES = Festivities +TypeOfPlace.HOME = Home +TypeOfPlace.HOSPITAL = Hospital +TypeOfPlace.MEANS_OF_TRANSPORT = Means of transport +TypeOfPlace.OTHER = Other +TypeOfPlace.PUBLIC_PLACE = Public place +TypeOfPlace.UNKNOWN = Unknown +TypeOfPlace.SCATTERED = Scattered + +# UserRight +UserRight.CASE_ARCHIVE = Archive cases +UserRight.CASE_CHANGE_DISEASE = Edit case disease +UserRight.CASE_CHANGE_EPID_NUMBER = Edit case epid number +UserRight.CASE_CLASSIFY = Edit case classification and outcome +UserRight.CASE_CREATE = Create new cases +UserRight.CASE_DELETE = Delete cases from the system +UserRight.CASE_EDIT = Edit existing cases +UserRight.CASE_EXPORT = Export cases from SORMAS +UserRight.CASE_IMPORT = Import cases into SORMAS +UserRight.CASE_INVESTIGATE = Edit case investigation status +UserRight.CASE_SEE_ARCHIVED = View archived cases +UserRight.CASE_TRANSFER = Transfer cases to another region/district/facility +UserRight.CASE_REFER_FROM_POE = Refer case from point of entry +UserRight.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.CASE_VIEW = View existing cases +UserRight.CONTACT_ASSIGN = Assign contacts to officers +UserRight.CONTACT_CLASSIFY = Edit contact classification +UserRight.CONTACT_CONVERT = Create resulting cases from contacts +UserRight.CONTACT_CREATE = Create new contacts +UserRight.CONTACT_IMPORT = Import contacts +UserRight.CONTACT_DELETE = Delete contacts from the system +UserRight.CONTACT_EDIT = Edit existing contacts +UserRight.CONTACT_EXPORT = Export contacts from SORMAS +UserRight.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.CONTACT_SEE_ARCHIVED = View archived contacts +UserRight.CONTACT_VIEW = View existing contacts +UserRight.CONTACT_ARCHIVE = Archive contacts +UserRight.DASHBOARD_CONTACT_VIEW = Access the contact supervisor dashboard +UserRight.DASHBOARD_SURVEILLANCE_VIEW = Access the surveillance supervisor dashboard +UserRight.DATABASE_EXPORT_ACCESS = Export the whole database +UserRight.EVENT_ARCHIVE = Archive events +UserRight.EVENT_CREATE = Create new events +UserRight.EVENT_EDIT = Edit existing events +UserRight.EVENT_EXPORT = Export events from SORMAS +UserRight.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.EVENT_SEE_ARCHIVED = View archived events +UserRight.EVENT_VIEW = View existing events +UserRight.EVENTPARTICIPANT_CREATE = Create new event participants +UserRight.EVENTPARTICIPANT_EDIT = Edit existing event participants +UserRight.EVENTPARTICIPANT_ARCHIVE = Event participant archive +UserRight.EVENTPARTICIPANT_VIEW = View existing event participants +UserRight.INFRASTRUCTURE_CREATE = Create new regions/districts/communities/facilities +UserRight.INFRASTRUCTURE_EDIT = Edit regions/districts/communities/facilities +UserRight.INFRASTRUCTURE_VIEW = View regions/districts/communities/facilities in the system +UserRight.PERFORM_BULK_OPERATIONS = Perform bulk operations in lists +UserRight.SAMPLE_CREATE = Create new samples +UserRight.SAMPLE_EDIT = Edit existing samples +UserRight.SAMPLE_EXPORT = Export samples from SORMAS +UserRight.SAMPLE_DELETE = Delete samples from the system +UserRight.SAMPLE_SEE_ARCHIVED = View archived samples +UserRight.SAMPLE_TRANSFER = Transfer samples to another lab +UserRight.SAMPLE_VIEW = View existing samples +UserRight.SAMPLETEST_CREATE = Create new sample tests +UserRight.SAMPLETEST_EDIT = Edit existing sample tests +UserRight.STATISTICS_EXPORT = Export detailed statistics from SORMAS +UserRight.TASK_ASSIGN = Assign tasks to users +UserRight.TASK_CREATE = Create new tasks +UserRight.TASK_EDIT = Edit existing tasks +UserRight.TASK_SEE_ARCHIVED = View archived tasks +UserRight.TASK_VIEW = View existing tasks +UserRight.USER_CREATE = Create new users +UserRight.USER_EDIT = Edit existing users +UserRight.USER_VIEW = View existing users +UserRight.VISIT_CREATE = Create new visits +UserRight.VISIT_EDIT = Edit existing visits +UserRight.WEEKLYREPORT_CREATE = Create weekly reports +UserRight.WEEKLYREPORT_VIEW = View weekly reports +UserRight.CASE_MERGE = Merge cases +UserRight.PERSON_VIEW = View existing persons +UserRight.PERSON_EDIT = Edit existing persons +UserRight.PERSON_DELETE = Delete persons from the system +UserRight.PERSON_CONTACT_DETAILS_DELETE = Delete person contact details +UserRight.SAMPLE_EDIT_NOT_OWNED = Edit samples reported by other users +UserRight.PATHOGEN_TEST_CREATE = Create new pathogen tests +UserRight.PATHOGEN_TEST_EDIT = Edit existing pathogen tests +UserRight.PATHOGEN_TEST_DELETE = Delete pathogen tests from the system +UserRight.ADDITIONAL_TEST_VIEW = View existing additional tests +UserRight.ADDITIONAL_TEST_CREATE = Create new additional tests +UserRight.ADDITIONAL_TEST_EDIT = Edit existing additional tests +UserRight.ADDITIONAL_TEST_DELETE = Delete additional tests from the system +UserRight.CONTACT_REASSIGN_CASE = Reassign the source case of contacts +UserRight.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Manage external symptom journal +UserRight.VISIT_DELETE = Delete visits from the system +UserRight.VISIT_EXPORT = Export visits from SORMAS +UserRight.TASK_DELETE = Delete tasks from the system +UserRight.TASK_EXPORT = Export tasks from SORMAS +UserRight.ACTION_CREATE = Create new actions +UserRight.ACTION_DELETE = Delete actions from the system +UserRight.ACTION_EDIT = Edit existing actions +UserRight.EVENT_IMPORT = Import events +UserRight.EVENT_DELETE = Delete events from the system +UserRight.EVENTPARTICIPANT_DELETE = Delete event participants from the system +UserRight.EVENTPARTICIPANT_IMPORT = Import event participants +UserRight.SEND_MANUAL_EXTERNAL_MESSAGES = Send manual external messages +UserRight.STATISTICS_ACCESS = Access statistics +UserRight.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Manage public export configurations +UserRight.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Perform bulk operations on case samples +UserRight.INFRASTRUCTURE_EXPORT = Export infrastructure data from SORMAS +UserRight.INFRASTRUCTURE_IMPORT = Import infrastructure data +UserRight.INFRASTRUCTURE_ARCHIVE = Archive infrastructure data +UserRight.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = View contact transmission chains on the dashboard +UserRight.DASHBOARD_CAMPAIGNS_VIEW = Access campaigns dashboard +UserRight.CASE_CLINICIAN_VIEW = Access case sections concerned with clinician +UserRight.THERAPY_VIEW = View existing therapies +UserRight.PRESCRIPTION_CREATE = Create new prescriptions +UserRight.PRESCRIPTION_EDIT = Edit existing prescriptions +UserRight.PRESCRIPTION_DELETE = Delete prescriptions from the system +UserRight.TREATMENT_CREATE = Create new treatments +UserRight.TREATMENT_EDIT = Edit existing treatments +UserRight.TREATMENT_DELETE = Delete treatments from the system +UserRight.CLINICAL_COURSE_VIEW = View the clinical course of cases +UserRight.CLINICAL_COURSE_EDIT = Edit the clinical course of cases +UserRight.CLINICAL_VISIT_CREATE = Create new clinical visits +UserRight.CLINICAL_VISIT_EDIT = Edit existing clinical visits +UserRight.CLINICAL_VISIT_DELETE = Delete clinical visits from the system +UserRight.PORT_HEALTH_INFO_VIEW = View port health info +UserRight.PORT_HEALTH_INFO_EDIT = Edit existing port health info +UserRight.POPULATION_MANAGE = Manage population data +UserRight.DOCUMENT_TEMPLATE_MANAGEMENT = Manage document templates +UserRight.QUARANTINE_ORDER_CREATE = Create new quarantine orders +UserRight.LINE_LISTING_CONFIGURE = Configure line listing +UserRight.AGGREGATE_REPORT_VIEW = Create new aggregate reports +UserRight.AGGREGATE_REPORT_EXPORT = Export aggregate reports from SORMAS +UserRight.AGGREGATE_REPORT_EDIT = Edit existing aggregate reports +UserRight.SEE_PERSONAL_DATA_IN_JURISDICTION = See personal data in jurisdiction +UserRight.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = See personal data outside jurisdiction +UserRight.SEE_SENSITIVE_DATA_IN_JURISDICTION = See sensitive data in jurisdiction +UserRight.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = See sensitive data outside jurisdiction +UserRight.CAMPAIGN_VIEW = View existing campaigns +UserRight.CAMPAIGN_EDIT = Edit existing campaigns +UserRight.CAMPAIGN_ARCHIVE = Archive campaigns +UserRight.CAMPAIGN_DELETE = Delete campaigns from the system +UserRight.CAMPAIGN_FORM_DATA_VIEW = View existing campaign form data +UserRight.CAMPAIGN_FORM_DATA_EDIT = Edit existing campaign form data +UserRight.CAMPAIGN_FORM_DATA_ARCHIVE = Archive campaign form data +UserRight.CAMPAIGN_FORM_DATA_DELETE = Delete campaign form data from the system +UserRight.CAMPAIGN_FORM_DATA_EXPORT = Export campaign form data from SORMAS +UserRight.BAG_EXPORT = Perform BAG export +UserRight.SORMAS_TO_SORMAS_SHARE = Share data from one SORMAS instance to another +UserRight.LAB_MESSAGES = Manage lab messages +UserRight.CASE_SHARE = Share cases with the whole country +UserRight.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Perform bulk operations in lab messages list +UserRight.IMMUNIZATION_VIEW = View existing immunizations and vaccinations +UserRight.IMMUNIZATION_CREATE = Create new immunizations and vaccinations +UserRight.IMMUNIZATION_EDIT = Edit existing immunizations and vaccinations +UserRight.IMMUNIZATION_DELETE = Delete immunizations and vaccinations from the system +UserRight.IMMUNIZATION_ARCHIVE = Archive immunizations +UserRight.PERSON_EXPORT = Export persons +UserRight.CONTACT_MERGE = Merge contacts +UserRight.EVENTGROUP_CREATE = Create new event groups +UserRight.EVENTGROUP_EDIT = Edit existing event groups +UserRight.EVENTGROUP_LINK = Link events to event groups +UserRight.EVENTGROUP_ARCHIVE = Archive event groups +UserRight.EVENTGROUP_DELETE = Delete event groups from the system +UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory +UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory +UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries +UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries +UserRight.TRAVEL_ENTRY_EDIT = Edit existing travel entries +UserRight.TRAVEL_ENTRY_DELETE = Delete travel entries from the system +UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries +UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data +UserRight.OUTBREAK_VIEW = View outbreaks +UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory + +# UserRightGroup +UserRightGroup.CASE_INVESTIGATION = Case Investigation +UserRightGroup.CONTACT_TRACING = Contact Tracing +UserRightGroup.EVENT_MANAGEMENT = Event Management +UserRightGroup.MISCELLANEOUS = Miscellaneous +UserRightGroup.REPORTING = Reporting +UserRightGroup.SAMPLE_COLLECTION = Sample Collection +UserRightGroup.SYSTEM_CONFIGURATION = System Configuration +UserRightGroup.TASK_MANAGEMENT = Task Management +UserRightGroup.USER_MANAGEMENT = User Management + +# UserRole +UserRole.ADMIN = Admin +UserRole.CASE_OFFICER = Case Officer +UserRole.CASE_SUPERVISOR = Clinician +UserRole.COMMUNITY_INFORMANT = Community Informant +UserRole.COMMUNITY_OFFICER = Community Officer +UserRole.CONTACT_OFFICER = Contact Officer +UserRole.CONTACT_SUPERVISOR = Contact Supervisor +UserRole.DISTRICT_OBSERVER = District Observer +UserRole.EVENT_OFFICER = Event Officer +UserRole.EXTERNAL_LAB_USER = External Lab Officer +UserRole.HOSPITAL_INFORMANT = Hospital Informant +UserRole.IMPORT_USER = Import User +UserRole.LAB_USER = Lab Officer +UserRole.NATIONAL_CLINICIAN = National Clinician +UserRole.NATIONAL_OBSERVER = National Observer +UserRole.NATIONAL_USER = National User +UserRole.POE_INFORMANT = POE Informant +UserRole.POE_NATIONAL_USER = POE National User +UserRole.POE_SUPERVISOR = POE Supervisor +UserRole.STATE_OBSERVER = Region Observer +UserRole.SURVEILLANCE_OFFICER = Surveillance Officer +UserRole.SURVEILLANCE_SUPERVISOR = Surveillance Supervisor +UserRole.REST_EXTERNAL_VISITS_USER = External Visits User +UserRole.REST_USER = ReST User +UserRole.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRole.ADMIN_SUPERVISOR = Admin Surveillance Supervisor +UserRole.BAG_USER = BAG User +UserRole.Short.ADMIN = Admin +UserRole.Short.CASE_OFFICER = CaseOff +UserRole.Short.CASE_SUPERVISOR = Clinician +UserRole.Short.CONTACT_OFFICER = ContOff +UserRole.Short.CONTACT_SUPERVISOR = ContSup +UserRole.Short.COMMUNITY_INFORMANT = CommInf +UserRole.Short.DISTRICT_OBSERVER = DistObs +UserRole.Short.EVENT_OFFICER = EventOff +UserRole.Short.EXTERNAL_LAB_USER = ExtLabOff +UserRole.Short.HOSPITAL_INFORMANT = HospInf +UserRole.Short.IMPORT_USER = ImpUser +UserRole.Short.LAB_USER = LabOff +UserRole.Short.NATIONAL_CLINICIAN = NatClin +UserRole.Short.NATIONAL_OBSERVER = NatObs +UserRole.Short.NATIONAL_USER = NatUser +UserRole.Short.POE_INFORMANT = POEInf +UserRole.Short.POE_NATIONAL_USER = POENat +UserRole.Short.POE_SUPERVISOR = POESup +UserRole.Short.STATE_OBSERVER = RegObs +UserRole.Short.SURVEILLANCE_SUPERVISOR = SurvSup +UserRole.Short.ADMIN_SUPERVISOR = AdminSup +UserRole.Short.SURVEILLANCE_OFFICER = SurvOff +UserRole.Short.REST_EXTERNAL_VISITS_USER = ExtVis +UserRole.Short.REST_USER = ReST +UserRole.Short.SORMAS_TO_SORMAS_CLIENT = SormasToSormas +UserRole.Short.BAG_USER = BAG + +# Vaccination +VaccinationStatus.UNKNOWN = Unknown +VaccinationStatus.UNVACCINATED = Unvaccinated +VaccinationStatus.VACCINATED = Vaccinated + +# VaccinationInfoSource +VaccinationInfoSource.ORAL_COMMUNICATION = Oral communication +VaccinationInfoSource.VACCINATION_CARD = Vaccination card +VaccinationInfoSource.NO_EVIDENCE = No evidence +VaccinationInfoSource.UNKNOWN = Unknown + +# ValueSeparator +ValueSeparator.DEFAULT = Default (%s) +ValueSeparator.COMMA = Comma +ValueSeparator.SEMICOLON = Semicolon +ValueSeparator.TAB = Tab + +# ViewMode +ViewMode.NORMAL = Normal view +ViewMode.SIMPLE = Simple view + +VisitResult.NOT_SYMPTOMATIC = Seen (no signs) +VisitResult.SYMPTOMATIC = Seen with signs +VisitResult.UNAVAILABLE = Unavailable +VisitResult.UNCOOPERATIVE = Uncooperative +VisitResult.NOT_PERFORMED = Not performed + +# VisitStatus +VisitStatus.COOPERATIVE = Available and cooperative +VisitStatus.UNAVAILABLE = Unavailable +VisitStatus.UNCOOPERATIVE = Available, but uncooperative +VisitStatus.Short.COOPERATIVE = Cooperative +VisitStatus.Short.UNAVAILABLE = Unavailable +VisitStatus.Short.UNCOOPERATIVE = Uncooperative + +# VisitOrigin +VisitOrigin.USER = Created by user +VisitOrigin.EXTERNAL_JOURNAL = External symptom journal + +# WaterSource +WaterSource.COMMUNITY_BOREHOLE_WELL = Community borehole/well +WaterSource.OTHER = Other +WaterSource.PIPE_NETWORK = Pipe network +WaterSource.PRIVATE_BOREHOLE_WELL = Private borehole/well +WaterSource.STREAM = Stream + +# Work environment +WorkEnvironment.UNKNOWN = Unknown +WorkEnvironment.OPEN_SPACE_OFFICE = Open space office +WorkEnvironment.FOOD_SECTOR = Food sector +WorkEnvironment.BUILDING_SECTOR = Building sector +WorkEnvironment.LOGISTICS_CENTER = Logistics center +WorkEnvironment.OTHER = Other + +# YesNoUnknown +YesNoUnknown.NO = No +YesNoUnknown.UNKNOWN = Unknown +YesNoUnknown.YES = Yes + +#SamplePurpose +SamplePurpose.EXTERNAL = External lab testing +SamplePurpose.INTERNAL = Internal/in-house testing + +#JurisdictionLevel +JurisdictionLevel.NONE = None +JurisdictionLevel.NATION = Nation +JurisdictionLevel.REGION = Region +JurisdictionLevel.DISTRICT = District +JurisdictionLevel.COMMUNITY = Community +JurisdictionLevel.HEALTH_FACILITY = Facility +JurisdictionLevel.LABORATORY = Laboratory +JurisdictionLevel.POINT_OF_ENTRY = Point of entry + +#CampaignFormElementImportance +CampaignFormElementImportance.ALL = All columns +CampaignFormElementImportance.IMPORTANT = Important + +SamplingReason.PRESENCE_OF_SYMPTOMS=Presence of symptoms +SamplingReason.OUTBREAK=Exposed to an outbreak area +SamplingReason.SCREENING=Screening +SamplingReason.PROFESSIONAL_REASON=Professional reasons +SamplingReason.QUARANTINE_REGULATIONS=Quarantine regulations +SamplingReason.CONTACT_TO_CASE=Contact to a case +SamplingReason.SWISS_COVID_APP_NOTIFICATION=Due to SwissCovidApp notification +SamplingReason.PLANNING_TO_TRAVEL=Planning to travel +SamplingReason.RETURNING_TRAVELER=Returning traveler +SamplingReason.PERSONAL_REASON=Personal reason/Convenience +SamplingReason.MOVING_RETURNING_RETIREMENT_HOME=Moving/returning into retirement home +SamplingReason.QUARANTINE_END=Quarantine end +SamplingReason.UNKNOWN=Unknown +SamplingReason.OTHER_REASON=Other reason +ContactTracingContactType.TELEPHONE=Telephone +ContactTracingContactType.SMS=SMS +ContactTracingContactType.EMAIL=E-Mail +QuarantineReason.IDENTIFIED_BY_CONTACT_TRACING=Identified by contact tracing +QuarantineReason.ENTRY_FROM_RISK_AREA=Entry from risk area +QuarantineReason.SWISS_COVID_APP_NOTIFICATION=SwissCovidApp notification +QuarantineReason.OUTBREAK_INVESTIGATION=Outbreak Investigation +QuarantineReason.OTHER_REASON=Other reason +EndOfIsolationReason.RECOVERED=Recovered +EndOfIsolationReason.DIED=Died +EndOfIsolationReason.LOST_TO_FOLLOW_UP=Lost to Follow-up +EndOfIsolationReason.OTHER=Other +EndOfQuarantineReason.ASYMPTOMATIC=Asymptomatic after 10 days +EndOfQuarantineReason.ISOLATED_AS_CASE=Isolated as Case +EndOfQuarantineReason.LOST_TO_FOLLOWUP=Lost to follow-up +EndOfQuarantineReason.OTHER=Other + +#InfectionSetting +InfectionSetting.UNKNOWN=Unknown +InfectionSetting.AMBULATORY=Ambulatory +InfectionSetting.MEDICAL_PRACTICE=Medical practice +InfectionSetting.OPERATIVE_1200=Operative +InfectionSetting.HOSPITAL_1300=Hospital +InfectionSetting.OTHER_OUTPATIENT_FACILITY=Other outpatient facility +InfectionSetting.STATIONARY=In-patient +InfectionSetting.HOSPITAL_2100=Hospital +InfectionSetting.NORMAL_WARD=Normal ward +InfectionSetting.OPERATIVE_2111=Operative +InfectionSetting.NOT_OPERATIVE=Non-operative +InfectionSetting.HEMATOLOGICAL_ONCOLOGY=Hematological oncology +InfectionSetting.CHILDREN_WARD=Children's ward +InfectionSetting.NEONATOLOGY=Neonatology +InfectionSetting.INTENSIVE_CARE_UNIT=Intensive care unit +InfectionSetting.OTHER_STATION=Other station +InfectionSetting.NURSING_HOME=Nursing home +InfectionSetting.REHAB_FACILITY=Rehab facility +InfectionSetting.OTHER_STATIONARY_FACILITY=Other in-patient facililty + +SymptomGroup.GENERAL=General +SymptomGroup.RESPIRATORY=Respiratory +SymptomGroup.CARDIOVASCULAR=Cardiovascular +SymptomGroup.GASTROINTESTINAL=Gastrointestinal +SymptomGroup.URINARY=Urinary +SymptomGroup.NERVOUS_SYSTEM=Nervous system +SymptomGroup.SKIN=Skin +SymptomGroup.OTHER=Other + +#Salutation +Salutation.MR=Dear Sir +Salutation.MRS=Dear Madame +Salutation.MR_AND_MRS=Dear Sir and Madame +Salutation.FAMILY=Dear family +Salutation.GUARDIAN_OF_MINOR=Dear guardian of the child +Salutation.OTHER=Other + +#PersonAssociation +PersonAssociation.ALL=All +PersonAssociation.CASE=Case +PersonAssociation.CONTACT=Contact +PersonAssociation.EVENT_PARTICIPANT=Event Participant +PersonAssociation.IMMUNIZATION=Immunization +PersonAssociation.TRAVEL_ENTRY=Travel Entry + +ReinfectionDetail.GENOME_SEQUENCE_PREVIOUS_INFECTION_KNOWN = Genome sequence of virus from previous SARS-CoV-2 infection is known +ReinfectionDetail.GENOME_SEQUENCE_CURRENT_INFECTION_KNOWN = Genome sequence of virus from current SARS-CoV-2 infection is known +ReinfectionDetail.GENOME_SEQUENCES_NOT_MATCHING = Genome sequences of viruses from previous and current SARS-CoV-2 infections do not match +ReinfectionDetail.GENOME_COPY_NUMBER_ABOVE_THRESHOLD = SARS-CoV-2 genome copy number within current PCR detection >\= 10^6/ml or Ct value < 30 +ReinfectionDetail.GENOME_COPY_NUMBER_BELOW_THRESHOLD = Individual tested positive for SARS-CoV-2 by PCR, but SARS-CoV-2 genome copy number within current PCR detection < 10^6/ml or Ct value >\= 30, or both not known +ReinfectionDetail.ACUTE_RESPIRATORY_ILLNESS_OVERCOME = Person has overcome acute respiratory illness following confirmed SARS-CoV-2 infection +ReinfectionDetail.PREVIOUS_ASYMPTOMATIC_INFECTION = Person had an asymptomatic SARS-CoV-2 infection +ReinfectionDetail.TESTED_NEGATIVE_AFTER_PREVIOUS_INFECTION = Person tested conclusively negative by PCR at least once after previous SARS-CoV-2 infection +ReinfectionDetail.LAST_PCR_DETECTION_NOT_RECENT = The last positive PCR detection of the preceding infection was more than 3 months ago + +ReinfectionDetailGroup.GENOME_SEQUENCE = +ReinfectionDetailGroup.PRECEDING_INFECTION = Information on the preceding infection +ReinfectionDetailGroup.REINFECTION_EVALUATION = More information on the evaluation of reinfection +ReinfectionDetailGroup.PREVIOUS_INFECTION_COMPLETED = Previous infection completed + +ReinfectionStatus.CONFIRMED = Confirmed reinfection +ReinfectionStatus.PROBABLE = Probable reinfection +ReinfectionStatus.POSSIBLE = Possible reinfection + +# Vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine +Vaccine.MRNA_1273=Moderna COVID-19 Vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine +Vaccine.AD26_COV2_S=Ad26.COV2.S +Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine +Vaccine.SANOFI_GSK=Sanofi-GSK +Vaccine.ASTRA_ZENECA_COMIRNATY=Combination AstraZeneca & Pfizer-BioNTech +Vaccine.ASTRA_ZENECA_MRNA_1273=Combination AstraZeneca & Moderna +Vaccine.UNKNOWN=Unknown +Vaccine.OTHER=Other + +# VaccineManufacturer +VaccineManufacturer.BIONTECH_PFIZER=BioNTech/Pfizer +VaccineManufacturer.MODERNA=Moderna +VaccineManufacturer.ASTRA_ZENECA=AstraZeneca +VaccineManufacturer.JOHNSON_JOHNSON=Johnson & Johnson +VaccineManufacturer.NOVAVAX=Novavax +VaccineManufacturer.SANOFI_GSK=Sanofi-GSK +VaccineManufacturer.ASTRA_ZENECA_BIONTECH_PFIZER=AstraZeneca & BioNTech/Pfizer +VaccineManufacturer.ASTRA_ZENECA_MODERNA=AstraZeneca & Moderna +VaccineManufacturer.UNKNOWN=Unknown +VaccineManufacturer.OTHER=Other + +# InfectionPathCertainty +InfectionPathCertainty.SUSPECT=Suspect +InfectionPathCertainty.PROBABLE=Probable +InfectionPathCertainty.CONFIRMED=Confirmed +InfectionPathCertainty.UNKNOWN=Unknown + +# HumanTransmissionMode +HumanTransmissionMode.FECAL_ORAL_SMEAR_INFECTION=Fecal-oral/smear infection +HumanTransmissionMode.PARENTERAL=Parenteral +HumanTransmissionMode.DIRECT_SKIN_CONTACT=Direct skin contact +HumanTransmissionMode.RESPIRATORY=Respiratory +HumanTransmissionMode.SEXUAL=Sexual +HumanTransmissionMode.CONNATAL=Connatal +HumanTransmissionMode.OTHER=Other + +# ParenteralTransmissionMode +ParenteralTransmissionMode.INTRAVENOUS_DRUG_USE=Intravenous drug use +ParenteralTransmissionMode.HOUSEHOLD_CONTACT=Household contact +ParenteralTransmissionMode.MEDICALLY_ASSOCIATED=Medically associated +ParenteralTransmissionMode.TATTOOING_PIERCING=Tattooing/piercing +ParenteralTransmissionMode.PEDICURE_MANICURE=Pedicure/manicure +ParenteralTransmissionMode.OTHER=Other + +# MedicallyAssociatedTransmissionMode +MedicallyAssociatedTransmissionMode.OPERATIVE_OR_DIAGNOSTIC_PROCEDURE=Operative or diagnostic procedure +MedicallyAssociatedTransmissionMode.BLOOD_PRODUCTS=Blood products +MedicallyAssociatedTransmissionMode.ORGAN_TRANSPLANTATION=Organ transplantation +MedicallyAssociatedTransmissionMode.DIALYSIS=Dialysis +MedicallyAssociatedTransmissionMode.INJECTION_FOR_MEDICAL_PURPOSES=Injection for medical purposes + +# ExternalShareDateType +ExternalShareDateType.LAST_EXTERNAL_SURVEILLANCE_TOOL_SHARE = Last share with reporting tool + +# ExternalShareStatus +ExternalShareStatus.SHARED=Shared +ExternalShareStatus.DELETED=Deleted + +# LabMessageStatus +LabMessageStatus.UNPROCESSED=Unprocessed +LabMessageStatus.PROCESSED=Processed +LabMessageStatus.FORWARDED=Forwarded +LabMessageStatus.UNCLEAR=Unclear + +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + +# ShareRequestDataType +ShareRequestDataType.CASE = Case +ShareRequestDataType.CONTACT = Contact +ShareRequestDataType.EVENT = Event + +# ShareRequestStatus +ShareRequestStatus.PENDING = Pending +ShareRequestStatus.ACCEPTED = Accepted +ShareRequestStatus.REJECTED = Rejected +ShareRequestStatus.REVOKED = Revoked + +# EventCriteriaDateType +EventCriteriaDateType.EVENT_DATE = Event date +EventCriteriaDateType.REPORT_DATE = Report date + +#EpidemiologicalEvidenceDetail +EpidemiologicalEvidenceDetail.STUDY=Study +EpidemiologicalEvidenceDetail.CASE_CONTROL_STUDY=Case control study +EpidemiologicalEvidenceDetail.COHORT_STUDY=Cohort study +EpidemiologicalEvidenceDetail.EXPLORATIVE_SURVEY_OF_AFFECTED=Explorative survey of affected people +EpidemiologicalEvidenceDetail.CONTACT_TO_SICK_PERSON=Contact to sick person +EpidemiologicalEvidenceDetail.CONTACT_TO_CONTAMINATED_MATERIAL=Contact to contaminated materials +EpidemiologicalEvidenceDetail.DESCRIPTIVE_ANALYSIS_OF_ASCERTAINED_DATA=Descriptive analysis of ascertained data +EpidemiologicalEvidenceDetail.TEMPORAL_OCCURENCE=Temporal\: temporal occurrence of diseases suggest common infection source +EpidemiologicalEvidenceDetail.SPACIAL_OCCURENCE=Spatial\: Most of the cases were at the same location during the assumed infection period +EpidemiologicalEvidenceDetail.DIRECT_OCCURENCE=Person\: cases were in direct or indirect contact with each other +EpidemiologicalEvidenceDetail.SUSPICION=Suspicion +EpidemiologicalEvidenceDetail.EXPRESSED_BY_DISEASED=Expressed by the diseased person +EpidemiologicalEvidenceDetail.EXPRESSED_BY_HEALTH_DEPARTMENT=Expressed by the health department + +#LaboratoryDiagnosticEvidenceDetail +LaboratoryDiagnosticEvidenceDetail.VERIFICATION_OF_AT_LEAST_TWO_INFECTED=Verification of at least two infected or diseased persons +LaboratoryDiagnosticEvidenceDetail.COMPLIANT_PATHOGEN_FINE_TYPING=Compliant pathogen fine typing +LaboratoryDiagnosticEvidenceDetail.VERIFICATION_ON_MATERIALS=Verification on materials +LaboratoryDiagnosticEvidenceDetail.IMPRESSION_TEST=Impression test +LaboratoryDiagnosticEvidenceDetail.WATER_SAMPLE=Water sample +LaboratoryDiagnosticEvidenceDetail.OTHER=Other +LaboratoryDiagnosticEvidenceDetail.PATHOGEN_FINE_TYPING_COMPLIANT_WITH_CASE=Pathogen fine typing compliant with the one of cases + +#ImmunizationStatus +ImmunizationStatus.PENDING = Pending +ImmunizationStatus.ACQUIRED = Acquired +ImmunizationStatus.NOT_ACQUIRED = Not acquired +ImmunizationStatus.EXPIRED = Expired + +#ImmunizationManagementStatus +ImmunizationManagementStatus.SCHEDULED = Scheduled +ImmunizationManagementStatus.ONGOING = Ongoing +ImmunizationManagementStatus.COMPLETED = Completed +ImmunizationManagementStatus.CANCELED = Canceled + +#MeansOfImmunization +MeansOfImmunization.VACCINATION = Vaccination +MeansOfImmunization.RECOVERY = Recovery +MeansOfImmunization.VACCINATION_RECOVERY = Vaccination/Recovery +MeansOfImmunization.OTHER = Other + +#EntityColumn +EntityColumn.ENTITY = Entity +EntityColumn.FIELD_ID = Field ID +EntityColumn.FIELD = Field +EntityColumn.TYPE = Type +EntityColumn.DATA_PROTECTION = Data protection +EntityColumn.CAPTION = Caption +EntityColumn.DESCRIPTION = Description +EntityColumn.REQUIRED = Required +EntityColumn.NEW_DISEASE = New disease +EntityColumn.DISEASES = Diseases +EntityColumn.OUTBREAKS = Outbreaks +EntityColumn.IGNORED_COUNTRIES = Ignored countries +EntityColumn.EXCLUSIVE_COUNTRIES = Exclusive countries + +#EnumColumn +EnumColumn.TYPE = Type +EnumColumn.VALUE = Value +EnumColumn.CAPTION = Caption +EnumColumn.DESCRIPTION = Description +EnumColumn.SHORT = Short + diff --git a/sormas-api/src/main/resources/enum_cs-CZ.properties b/sormas-api/src/main/resources/enum_cs-CZ.properties index 2cf3300b1e5..31b9cc14a60 100644 --- a/sormas-api/src/main/resources/enum_cs-CZ.properties +++ b/sormas-api/src/main/resources/enum_cs-CZ.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Událost @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Propojit události se skupinami událostí UserRight.EVENTGROUP_ARCHIVE = Archivovat skupiny událostí UserRight.EVENTGROUP_DELETE = Odstranit skupiny událostí ze systému UserRight.PERFORM_BULK_OPERATIONS_EVENT = Provést hromadné operace v adresáři událostí +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Provést hromadné operace v adresáři účastníků událostí UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Exportovat data o ochraně údajů UserRight.OUTBREAK_VIEW = Zobrazit ohniska UserRight.OUTBREAK_EDIT = Upravit ohniska +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Provést hromadnou pseudonymizaci +UserRight.SORMAS_TO_SORMAS_CLIENT = Přenos klienta ze Sormas do Sormas +UserRight.SORMAS_REST = Přístup k Sormas REST +UserRight.EXTERNAL_VISITS = Externí návštěvy +UserRight.SORMAS_UI = Přístup k uživatelskému rozhraní Sormas +UserRight.DEV_MODE = Přístup k možnostem vývojáře + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Může archivovat případy +UserRight.Desc.CASE_CHANGE_DISEASE = Může upravit onemocnění u případu +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Může upravit číslo epid u případu +UserRight.Desc.CASE_CLASSIFY = Může upravit klasifikaci případů a výsledek +UserRight.Desc.CASE_CREATE = Může vytvářet nové případy +UserRight.Desc.CASE_DELETE = Může odstranit případy ze systému +UserRight.Desc.CASE_EDIT = Může upravit existující případy +UserRight.Desc.CASE_EXPORT = Může exportovat případy ze SORMAS +UserRight.Desc.CASE_IMPORT = Může importovat případy do SORMAS +UserRight.Desc.CASE_INVESTIGATE = Může upravit stav vyšetřování případu +UserRight.Desc.CASE_TRANSFER = Může přemístit případy do jiného regionu / okresu / zařízení +UserRight.Desc.CASE_REFER_FROM_POE = Může odkazovat na případ z místa vstupu +UserRight.Desc.CASE_RESPONSIBLE = Může být zodpovědný za případ +UserRight.Desc.CASE_VIEW = Může zobrazit existující případy +UserRight.Desc.CONTACT_ASSIGN = Může přidělovat kontakty úředníkům +UserRight.Desc.CONTACT_CLASSIFY = Může upravit klasifikaci kontaktů +UserRight.Desc.CONTACT_CONVERT = Může vytvářet výsledné případy z kontaktů +UserRight.Desc.CONTACT_CREATE = Může vytvářet nové kontakty +UserRight.Desc.CONTACT_IMPORT = Může importovat kontakty +UserRight.Desc.CONTACT_DELETE = Může mazat kontakty ze systému +UserRight.Desc.CONTACT_EDIT = Může upravit existující kontakty +UserRight.Desc.CONTACT_EXPORT = Může exportovat kontakty ze SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Může být zodpovědný za kontakt +UserRight.Desc.CONTACT_VIEW = Může zobrazit stávající kontakty +UserRight.Desc.CONTACT_ARCHIVE = Může archivovat kontakty +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Může přistupovat ke kontaktu dozorčího orgánu +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Může přístupovat do ovládacího panelu dozorčího orgánu +UserRight.Desc.DATABASE_EXPORT_ACCESS = Může exportovat celou databázi +UserRight.Desc.EVENT_ARCHIVE = Může archivovat události +UserRight.Desc.EVENT_CREATE = Může vytvářet nové události +UserRight.Desc.EVENT_EDIT = Může upravit existující události +UserRight.Desc.EVENT_EXPORT = Může exportovat události ze SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Může být zodpovědný za událost +UserRight.Desc.EVENT_VIEW = Může zobrazit existující události +UserRight.Desc.EVENTPARTICIPANT_CREATE = Může vytvářet nové účastníky události +UserRight.Desc.EVENTPARTICIPANT_EDIT = Může upravit existující účastníky události +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Může archivovat účastníky události +UserRight.Desc.EVENTPARTICIPANT_VIEW = Může zobrazit existující účastníky události +UserRight.Desc.INFRASTRUCTURE_CREATE = Může vytvářet nové regiony/okresy/komunity/zařízení +UserRight.Desc.INFRASTRUCTURE_EDIT = Může upravit regiony/okresy/komunity/zařízení +UserRight.Desc.INFRASTRUCTURE_VIEW = Může prohlížet regiony/okresy/komunity/zařízení v systému +UserRight.Desc.PERFORM_BULK_OPERATIONS = Může provádět hromadné operace v seznamech +UserRight.Desc.SAMPLE_CREATE = Může vytvořit nové vzorky +UserRight.Desc.SAMPLE_EDIT = Může upravit existující vzorky +UserRight.Desc.SAMPLE_EXPORT = Může exportovat vzorky ze SORMAS +UserRight.Desc.SAMPLE_DELETE = Může odstranit vzorky ze systému +UserRight.Desc.SAMPLE_TRANSFER = Může přenášet vzorky do jiné laboratoře +UserRight.Desc.SAMPLE_VIEW = Může zobrazit existující vzorky +UserRight.Desc.SAMPLETEST_CREATE = Může vytvořit nové testy vzorků +UserRight.Desc.SAMPLETEST_EDIT = Může upravit existující testy vzorků +UserRight.Desc.STATISTICS_EXPORT = Může exportovat podrobné statistiky SORMAS +UserRight.Desc.TASK_ASSIGN = Může přiřadit úkoly uživatelům +UserRight.Desc.TASK_CREATE = Může vytvářet nové úkoly +UserRight.Desc.TASK_EDIT = Může upravit existující úkoly +UserRight.Desc.TASK_VIEW = Může zobrazit existující úkoly +UserRight.Desc.USER_CREATE = Může vytvářet nové uživatele +UserRight.Desc.USER_EDIT = Může upravit existující uživatele +UserRight.Desc.USER_VIEW = Může zobrazit stávající uživatele +UserRight.Desc.VISIT_CREATE = Může vytvářet nové návštěvy +UserRight.Desc.VISIT_EDIT = Může upravit existující návštěvy +UserRight.Desc.WEEKLYREPORT_CREATE = Může vytvářet týdenní zprávy +UserRight.Desc.WEEKLYREPORT_VIEW = Může zobrazit týdenní zprávy +UserRight.Desc.CASE_MERGE = Může sloučit případy +UserRight.Desc.PERSON_VIEW = Může prohlédnout stávající osoby +UserRight.Desc.PERSON_EDIT = Může upravit existující osoby +UserRight.Desc.PERSON_DELETE = Může odstranit osoby ze systému +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Může odstranit kontaktní údaje osoby +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Může upravit vzorky nahlášené jinými uživateli +UserRight.Desc.PATHOGEN_TEST_CREATE = Může vytvářet nové testy patogenů +UserRight.Desc.PATHOGEN_TEST_EDIT = Může upravit existující testy patogenů +UserRight.Desc.PATHOGEN_TEST_DELETE = Může odstranit patogeny ze systému +UserRight.Desc.ADDITIONAL_TEST_VIEW = Může zobrazit existující doplňkové testy +UserRight.Desc.ADDITIONAL_TEST_CREATE = Může vytvořit nové další testy +UserRight.Desc.ADDITIONAL_TEST_EDIT = Může upravit existující dodatečné testy +UserRight.Desc.ADDITIONAL_TEST_DELETE = Může odstranit další testy ze systému +UserRight.Desc.CONTACT_REASSIGN_CASE = Může znovu přiřadit zdrojový případ kontaktů +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Může spravovat externí deník symptomů +UserRight.Desc.VISIT_DELETE = Může odstranit návštěvy ze systému +UserRight.Desc.VISIT_EXPORT = Může exportovat návštěvy ze SORMAS +UserRight.Desc.TASK_DELETE = Může odstranit úkoly ze systému +UserRight.Desc.TASK_EXPORT = Může exportovat úkoly ze SORMAS +UserRight.Desc.ACTION_CREATE = Může vytvářet nové akce +UserRight.Desc.ACTION_DELETE = Může odstranit akce ze systému +UserRight.Desc.ACTION_EDIT = Může upravit existující akce +UserRight.Desc.EVENT_IMPORT = Může importovat události +UserRight.Desc.EVENT_DELETE = Může odstranit události ze systému +UserRight.Desc.EVENTPARTICIPANT_DELETE = Může odstranit účastníky události ze systému +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Může importovat účastníky události +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Může odesílat manuální externí zprávy +UserRight.Desc.STATISTICS_ACCESS = Může mít přístup ke statistikám +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Může spravovat konfigurace veřejného exportu +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Může provádět hromadné operace na vzorcích případu +UserRight.Desc.INFRASTRUCTURE_EXPORT = Může exportovat údaje ze SORMAS o infrastruktuře +UserRight.Desc.INFRASTRUCTURE_IMPORT = Může importovat data infrastruktury +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Může archivovat data infrastruktury +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Může zobrazení řetězů kontaktů na nástěnce +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Může přístupovat k panelu kampaní +UserRight.Desc.CASE_CLINICIAN_VIEW = Může přistupovat k úsekům s lékařem +UserRight.Desc.THERAPY_VIEW = Může zobrazit existující terapie +UserRight.Desc.PRESCRIPTION_CREATE = Může vytvářet nové recepty +UserRight.Desc.PRESCRIPTION_EDIT = Může upravovat existující recepty +UserRight.Desc.PRESCRIPTION_DELETE = Může odstranit recepty ze systému +UserRight.Desc.TREATMENT_CREATE = Může vytvářet nové ošetření +UserRight.Desc.TREATMENT_EDIT = Může upravit existující ošetření +UserRight.Desc.TREATMENT_DELETE = Může odstranit ošetření ze systému +UserRight.Desc.CLINICAL_COURSE_VIEW = Může sledovat klinický průběh případů +UserRight.Desc.CLINICAL_COURSE_EDIT = Může upravit klinický průběh případů +UserRight.Desc.CLINICAL_VISIT_CREATE = Může vytvářet nové klinické návštěvy +UserRight.Desc.CLINICAL_VISIT_EDIT = Může upravit existující klinické návštěvy +UserRight.Desc.CLINICAL_VISIT_DELETE = Může odstranit klinické návštěvy ze systému +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Může zobrazit informace o zdraví portu +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Může spravovat údaje o obyvatelstvu +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Může spravovat šablony dokumentů +UserRight.Desc.QUARANTINE_ORDER_CREATE = Může vytvářet nové karanténní příkazy +UserRight.Desc.LINE_LISTING_CONFIGURE = Může nakonfigurovat výpis řádků +UserRight.Desc.AGGREGATE_REPORT_VIEW = Může vytvářet nové souhrnné zprávy +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Může vyvážet souhrnné zprávy SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Může upravovat existující souhrnné zprávy +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Může vidět osobní údaje v jurisdikci +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Může vidět osobní údaje mimo jurisdikci +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Může vidět citlivé údaje v jurisdikci +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Může vidět citlivé údaje mimo jurisdikci +UserRight.Desc.CAMPAIGN_VIEW = Může zobrazit existující kampaně +UserRight.Desc.CAMPAIGN_EDIT = Může upravit existující kampaně +UserRight.Desc.CAMPAIGN_ARCHIVE = Může archivovat kampaně +UserRight.Desc.CAMPAIGN_DELETE = Může odstranit kampaně ze systému +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Může zobrazit stávající data z formuláře kampaně +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Může upravit data ve formuláři kampaně +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Může archivovat data z formuláře kampaně +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Může mazat data formuláře kampaně ze systému +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Může exportovat data z formuláře kampaně SORMAS +UserRight.Desc.BAG_EXPORT = Může provést export BAG +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Může sdílet data z jedné instance SORMAS do jiné +UserRight.Desc.LAB_MESSAGES = Může spravovat zprávy laboratoře +UserRight.Desc.CASE_SHARE = Může sdílet případy s celou zemí +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Může provádět hromadné operace v seznamu zpráv laboratoře +UserRight.Desc.IMMUNIZATION_VIEW = Může vidět existující imunizaci a očkování +UserRight.Desc.IMMUNIZATION_CREATE = Může vytvářet nové imunizace a očkování +UserRight.Desc.IMMUNIZATION_EDIT = Může upravit existující imunizaci a očkování +UserRight.Desc.IMMUNIZATION_DELETE = Může odstranit imunizaci a očkování ze systému +UserRight.Desc.IMMUNIZATION_ARCHIVE = Může archivovat imunizace +UserRight.Desc.PERSON_EXPORT = Může exportovat osoby +UserRight.Desc.CONTACT_MERGE = Může sloučit kontakty +UserRight.Desc.EVENTGROUP_CREATE = Může vytvořit nové skupiny událostí +UserRight.Desc.EVENTGROUP_EDIT = Může upravit existující skupiny událostí +UserRight.Desc.EVENTGROUP_LINK = Může odkazovat události na skupiny událostí +UserRight.Desc.EVENTGROUP_ARCHIVE = Může archivovat skupiny událostí +UserRight.Desc.EVENTGROUP_DELETE = Může odstranit skupiny událostí ze systému +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Může provádět hromadné operace v adresáři událostí +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Může provádět hromadné operace v adresáři účastníků událostí +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Může exportovat údaje o ochraně údajů +UserRight.Desc.OUTBREAK_VIEW = Může zobrazit ohniska +UserRight.Desc.OUTBREAK_EDIT = Může upravit ohniska +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Může provést hromadnou pseudonomizaci +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Technická uživatelská práva SORMAS na rozhraní SORMAS +UserRight.Desc.SORMAS_REST = Možnost přístupu k rozhraní SORMAS REST +UserRight.Desc.EXTERNAL_VISITS = Může přistupovat k externím REST koncovým bodům +UserRight.Desc.SORMAS_UI = Možnost přístupu k grafickému uživatelskému rozhraní SORMAS +UserRight.Desc.DEV_MODE = Možnost přístupu vývojáře v konfiguračním adresáři # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Vyšetřování případů @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Pravděpodobná reinfekce ReinfectionStatus.POSSIBLE = Možná reinfekce # Vaccine -Vaccine.COMIRNATY=Pfizer – BioNTech COVID-19 vakcína +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vakcína Vaccine.MRNA_1273=Moderna COVID-19 vakcína -Vaccine.OXFORD_ASTRA_ZENECA=Oxford – AstraZeneca COVID-19 vakcína +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vakcína Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vakcína Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Zpracováno LabMessageStatus.FORWARDED=Přeposláno LabMessageStatus.UNCLEAR=Nejasné +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Zpráva Laboratoře +ExternalMessageType.PHYSICIANS_REPORT=Zpráva lékaře + # ShareRequestDataType ShareRequestDataType.CASE = Případ ShareRequestDataType.CONTACT = Kontakt @@ -1788,7 +1967,7 @@ MeansOfImmunization.VACCINATION_RECOVERY = Očkování / uzdravení MeansOfImmunization.OTHER = Ostatní #EntityColumn -EntityColumn.ENTITY = Entity +EntityColumn.ENTITY = Subjekt EntityColumn.FIELD_ID = Field ID EntityColumn.FIELD = Pole EntityColumn.TYPE = Typ diff --git a/sormas-api/src/main/resources/enum_de-CH.properties b/sormas-api/src/main/resources/enum_de-CH.properties index 00b489dbd9c..8d85771c4bb 100644 --- a/sormas-api/src/main/resources/enum_de-CH.properties +++ b/sormas-api/src/main/resources/enum_de-CH.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Ereignis @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Ereignisse mit Ereignisgruppen verknüpfen UserRight.EVENTGROUP_ARCHIVE = Ereignisgruppen archivieren UserRight.EVENTGROUP_DELETE = Ereignisgruppen aus dem System löschen UserRight.PERFORM_BULK_OPERATIONS_EVENT = Massenbearbeitungen im Ereignisverzeichnis ausführen +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Massenbearbeitungen im Ereignisteilnehmerverzeichnis ausführen UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Zugriff auf das Einreiseverzeichnis UserRight.TRAVEL_ENTRY_VIEW = Vorhandene Einreisen anzeigen UserRight.TRAVEL_ENTRY_CREATE = Neue Einreisen erstellen @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Einreisen archivieren UserRight.EXPORT_DATA_PROTECTION_DATA = Datenschutz-Daten exportieren UserRight.OUTBREAK_VIEW = Ausbrüche anzeigen UserRight.OUTBREAK_EDIT = Ausbrüche bearbeiten +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Massen-Pseudonomisierung ausführen +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas zu Sormas Client +UserRight.SORMAS_REST = Zugriff auf Sormas REST +UserRight.EXTERNAL_VISITS = Externe Anrufe +UserRight.SORMAS_UI = Zugriff auf Sormas UI +UserRight.DEV_MODE = Zugriff auf Entwickleroptionen + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Kann Fälle archivieren +UserRight.Desc.CASE_CHANGE_DISEASE = Kann die Krankheit des Falls bearbeiten +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Kann die Epid-Nummer bearbeiten +UserRight.Desc.CASE_CLASSIFY = Kann Falldefinitionskategorie und Verlauf der Erkrankung bearbeiten +UserRight.Desc.CASE_CREATE = Kann neue Fälle erstellen +UserRight.Desc.CASE_DELETE = Kann Fälle aus dem System löschen +UserRight.Desc.CASE_EDIT = Kann bestehende Fälle bearbeiten +UserRight.Desc.CASE_EXPORT = Kann Fälle von SORMAS exportieren +UserRight.Desc.CASE_IMPORT = Kann Fälle nach SORMAS importieren +UserRight.Desc.CASE_INVESTIGATE = Kann Falluntersuchungsstatus bearbeiten +UserRight.Desc.CASE_TRANSFER = Kann Fälle in ein anderes Bundesland/Landkreis/Einrichtung übertragen +UserRight.Desc.CASE_REFER_FROM_POE = Kann Fall vom Einreiseort weiterleiten +UserRight.Desc.CASE_RESPONSIBLE = Kann für einen Fall verantwortlich sein +UserRight.Desc.CASE_VIEW = Kann bestehende Fälle einsehen +UserRight.Desc.CONTACT_ASSIGN = Kann Kontakte an Beauftragte zuweisen +UserRight.Desc.CONTACT_CLASSIFY = Kann Kontaktklassifikation ändern +UserRight.Desc.CONTACT_CONVERT = Kann resultierende Fälle aus Kontakten erstellen +UserRight.Desc.CONTACT_CREATE = Kann neue Kontakte erstellen +UserRight.Desc.CONTACT_IMPORT = Kann Kontakte importieren +UserRight.Desc.CONTACT_DELETE = Kann Kontakte aus dem System löschen +UserRight.Desc.CONTACT_EDIT = Kann bestehende Kontakte bearbeiten +UserRight.Desc.CONTACT_EXPORT = Kann Kontakte von SORMAS exportieren +UserRight.Desc.CONTACT_RESPONSIBLE = Kann für einen Kontakt verantwortlich sein +UserRight.Desc.CONTACT_VIEW = Kann bestehende Kontakte einsehen +UserRight.Desc.CONTACT_ARCHIVE = Kann Kontakte archivieren +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Kann auf die Kontaktleitungs-Übersicht zugreifen +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Kann auf die Überwachungsleitungs-Übersicht zugreifen +UserRight.Desc.DATABASE_EXPORT_ACCESS = Kann die gesamte Datenbank exportieren +UserRight.Desc.EVENT_ARCHIVE = Kann Ereignisse archivieren +UserRight.Desc.EVENT_CREATE = Kann neue Ereignisse erstellen +UserRight.Desc.EVENT_EDIT = Kann bestehende Ereignisse bearbeiten +UserRight.Desc.EVENT_EXPORT = Kann Ereignisse von SORMAS exportieren +UserRight.Desc.EVENT_RESPONSIBLE = Kann für ein Ereignis verantwortlich sein +UserRight.Desc.EVENT_VIEW = Kann bestehende Ereignisse einsehen +UserRight.Desc.EVENTPARTICIPANT_CREATE = Kann neue Ereignisteilnehmer erstellen +UserRight.Desc.EVENTPARTICIPANT_EDIT = Kann bestehende Ereignisteilnehmer bearbeiten +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Kann Ereignisteilnehmer archivieren +UserRight.Desc.EVENTPARTICIPANT_VIEW = Kann bestehende Ereignisteilnehmer einsehen +UserRight.Desc.INFRASTRUCTURE_CREATE = Kann neue Bundesländer/Landkreise/Gemeinden/Einrichtungen erstellen +UserRight.Desc.INFRASTRUCTURE_EDIT = Kann Bundesländer/Landkreise/Gemeinden/Einrichtungen bearbeiten +UserRight.Desc.INFRASTRUCTURE_VIEW = Kann Bundesländer/Landkreise/Gemeinden/Einrichtungen im System einsehen +UserRight.Desc.PERFORM_BULK_OPERATIONS = Kann Massenbearbeitungen in Listen ausführen +UserRight.Desc.SAMPLE_CREATE = Kann neue Proben erstellen +UserRight.Desc.SAMPLE_EDIT = Kann bestehende Proben bearbeiten +UserRight.Desc.SAMPLE_EXPORT = Kann Proben von SORMAS exportieren +UserRight.Desc.SAMPLE_DELETE = Kann Proben aus dem System löschen +UserRight.Desc.SAMPLE_TRANSFER = Kann Proben an ein anderes Labor übertragen +UserRight.Desc.SAMPLE_VIEW = Kann bestehende Proben einsehen +UserRight.Desc.SAMPLETEST_CREATE = Kann neue Proben-Tests erstellen +UserRight.Desc.SAMPLETEST_EDIT = Kann bestehende Proben-Tests bearbeiten +UserRight.Desc.STATISTICS_EXPORT = Kann detaillierte Statistiken von SORMAS exportieren +UserRight.Desc.TASK_ASSIGN = Kann Benutzern Aufgaben zuweisen +UserRight.Desc.TASK_CREATE = Kann neue Aufgaben erstellen +UserRight.Desc.TASK_EDIT = Kann bestehende Aufgaben bearbeiten +UserRight.Desc.TASK_VIEW = Kann bestehende Aufgaben einsehen +UserRight.Desc.USER_CREATE = Kann neue Benutzer erstellen +UserRight.Desc.USER_EDIT = Kann bestehende Benutzer bearbeiten +UserRight.Desc.USER_VIEW = Kann bestehende Benutzer einsehen +UserRight.Desc.VISIT_CREATE = Kann neue Anrufe erstellen +UserRight.Desc.VISIT_EDIT = Kann bestehende Anrufe bearbeiten +UserRight.Desc.WEEKLYREPORT_CREATE = Kann wöchentliche Berichte erstellen +UserRight.Desc.WEEKLYREPORT_VIEW = Kann wöchentliche Berichte einsehen +UserRight.Desc.CASE_MERGE = Kann Fälle zusammenführen +UserRight.Desc.PERSON_VIEW = Kann bestehende Personen einsehen +UserRight.Desc.PERSON_EDIT = Kann bestehende Personen bearbeiten +UserRight.Desc.PERSON_DELETE = Kann Personen aus dem System löschen +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Kann Personenkontaktdetails löschen +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Kann Proben bearbeiten, die von anderen Benutzern angelegt wurden +UserRight.Desc.PATHOGEN_TEST_CREATE = Kann neue Erregertests erstellen +UserRight.Desc.PATHOGEN_TEST_EDIT = Kann bestehende Erregertests bearbeiten +UserRight.Desc.PATHOGEN_TEST_DELETE = Kann Erregertests aus dem System löschen +UserRight.Desc.ADDITIONAL_TEST_VIEW = Kann bestehende zusätzliche Tests einsehen +UserRight.Desc.ADDITIONAL_TEST_CREATE = Kann neue zusätzliche Tests erstellen +UserRight.Desc.ADDITIONAL_TEST_EDIT = Kann bestehende zusätzliche Tests bearbeiten +UserRight.Desc.ADDITIONAL_TEST_DELETE = Kann zusätzliche Tests aus dem System löschen +UserRight.Desc.CONTACT_REASSIGN_CASE = Kann den Indexfall von Kontakten neu zuweisen +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Kann externes Symptomtagebuch verwalten +UserRight.Desc.VISIT_DELETE = Kann Anrufe aus dem System löschen +UserRight.Desc.VISIT_EXPORT = Kann Anrufe von SORMAS exportieren +UserRight.Desc.TASK_DELETE = Kann Aufgaben aus dem System löschen +UserRight.Desc.TASK_EXPORT = Kann Aufgaben von SORMAS exportieren +UserRight.Desc.ACTION_CREATE = Kann neue Aktionen erstellen +UserRight.Desc.ACTION_DELETE = Kann Aktionen aus dem System löschen +UserRight.Desc.ACTION_EDIT = Kann bestehende Aktionen bearbeiten +UserRight.Desc.EVENT_IMPORT = Kann Ereignisse importieren +UserRight.Desc.EVENT_DELETE = Kann Ereignisse aus dem System löschen +UserRight.Desc.EVENTPARTICIPANT_DELETE = Kann Ereignisteilnehmer aus dem System löschen +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Kann Ereignisteilnehmer importieren +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Kann manuelle externe Nachrichten senden +UserRight.Desc.STATISTICS_ACCESS = Kann auf Statistiken zugreifen +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Kann öffentliche Exportkonfigurationen verwalten +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Kann Massenbearbeitungen für Fall-Proben ausführen +UserRight.Desc.INFRASTRUCTURE_EXPORT = Kann Infrastrukturdaten von SORMAS exportieren +UserRight.Desc.INFRASTRUCTURE_IMPORT = Kann Infrastrukturdaten importieren +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Kann Infrastrukturdaten archivieren +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Kann Kontaktübertragungsketten auf dem Dashboard einsehen +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Kann auf Kampagnen Dashboard zugreifen +UserRight.Desc.CASE_CLINICIAN_VIEW = Kann auf Fall-Bereiche im Zusammenhang mit der Fallverwaltung zugreifen +UserRight.Desc.THERAPY_VIEW = Kann bestehende Therapien einsehen +UserRight.Desc.PRESCRIPTION_CREATE = Kann neue Verschreibungen erstellen +UserRight.Desc.PRESCRIPTION_EDIT = Kann bestehende Verschreibungen bearbeiten +UserRight.Desc.PRESCRIPTION_DELETE = Kann Verschreibungen aus dem System löschen +UserRight.Desc.TREATMENT_CREATE = Kann neue Behandlungen erstellen +UserRight.Desc.TREATMENT_EDIT = Kann bestehende Behandlungen bearbeiten +UserRight.Desc.TREATMENT_DELETE = Kann Behandlungen aus dem System löschen +UserRight.Desc.CLINICAL_COURSE_VIEW = Kann den klinischen Verlauf von Fällen einsehen +UserRight.Desc.CLINICAL_COURSE_EDIT = Kann den klinischen Verlauf von Fällen bearbeiten +UserRight.Desc.CLINICAL_VISIT_CREATE = Kann neue klinische Bewertungen erstellen +UserRight.Desc.CLINICAL_VISIT_EDIT = Kann vorhandene klinische Bewertungen bearbeiten +UserRight.Desc.CLINICAL_VISIT_DELETE = Kann klinische Bewertungen aus dem System löschen +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Kann Einreiseinformationen einsehen +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Kann vorhandene Einreiseinformationen bearbeiten +UserRight.Desc.POPULATION_MANAGE = Kann Bevölkerungsdaten verwalten +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Kann Dokumentvorlagen verwalten +UserRight.Desc.QUARANTINE_ORDER_CREATE = Kann neue Dokumente erstellen +UserRight.Desc.LINE_LISTING_CONFIGURE = Kann Zeilenauflistung konfigurieren +UserRight.Desc.AGGREGATE_REPORT_VIEW = Kann neue zusammenfassende Berichte erstellen +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Kann zusammenfassende Berichte von SORMAS exportieren +UserRight.Desc.AGGREGATE_REPORT_EDIT = Kann bestehende zusammenfassende Berichte bearbeiten +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Kann personenbezogene Daten im Zuständigkeitsbereich einsehen +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Kann personenbezogene Daten außerhalb des Zuständigkeitsbereichs einsehen +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Kann sensible Daten im Zuständigkeitsbereich einsehen +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Kann sensible Daten außerhalb des Zuständigkeitsbereichs einsehen +UserRight.Desc.CAMPAIGN_VIEW = Kann bestehende Kampagnen einsehen +UserRight.Desc.CAMPAIGN_EDIT = Kann bestehende Kampagnen bearbeiten +UserRight.Desc.CAMPAIGN_ARCHIVE = Kann Kampagnen archivieren +UserRight.Desc.CAMPAIGN_DELETE = Kann Kampagnen aus dem System löschen +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Kann vorhandene Kampagnen-Formulardaten einsehen +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Kann vorhandene Kampagnen-Formulardaten bearbeiten +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Kann Kampagnen-Formulardaten archivieren +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Kann Kampagnen-Formulardaten aus dem System löschen +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Kann Kampagnenformular-Daten von SORMAS exportieren +UserRight.Desc.BAG_EXPORT = Kann BAG-Export ausführen +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Kann Daten aus einer SORMAS Instanz an eine andere übergeben +UserRight.Desc.LAB_MESSAGES = Kann Labormeldungen verwalten +UserRight.Desc.CASE_SHARE = Kann Fälle mit dem ganzen Land teilen +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Kann Massenbearbeitungen in Labormeldungen-Liste ausführen +UserRight.Desc.IMMUNIZATION_VIEW = Kann bestehende Immunisierungen und Impfungen einsehen +UserRight.Desc.IMMUNIZATION_CREATE = Kann neue Immunisierungen und Impfungen erstellen +UserRight.Desc.IMMUNIZATION_EDIT = Kann bestehende Immunisierungen und Impfungen bearbeiten +UserRight.Desc.IMMUNIZATION_DELETE = Kann Immunisierungen und Impfungen aus dem System löschen +UserRight.Desc.IMMUNIZATION_ARCHIVE = Kann Immunisierungen archivieren +UserRight.Desc.PERSON_EXPORT = Kann Personen exportieren +UserRight.Desc.CONTACT_MERGE = Kann Kontakte zusammenführen +UserRight.Desc.EVENTGROUP_CREATE = Kann neue Ereignisgruppen erstellen +UserRight.Desc.EVENTGROUP_EDIT = Kann bestehende Ereignisgruppen bearbeiten +UserRight.Desc.EVENTGROUP_LINK = Kann Ereignisse mit Ereignisgruppen verknüpfen +UserRight.Desc.EVENTGROUP_ARCHIVE = Kann Ereignisgruppen archivieren +UserRight.Desc.EVENTGROUP_DELETE = Kann Ereignisgruppen aus dem System löschen +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Kann Massenbearbeitungen im Ereignisverzeichnis ausführen +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Kann Massenbearbeitungen in Ereignisteilnehmerverzeichnissen ausführen +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Kann auf das Einreiseverzeichnis zugreifen +UserRight.Desc.TRAVEL_ENTRY_VIEW = Kann bestehende Einreisen einsehen +UserRight.Desc.TRAVEL_ENTRY_CREATE = Kann neue Einreisen erstellen +UserRight.Desc.TRAVEL_ENTRY_EDIT = Kann bestehende Einreisen bearbeiten +UserRight.Desc.TRAVEL_ENTRY_DELETE = Kann Einreisen aus dem System löschen +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Kann Einreisen archivieren +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Kann Datenschutz-Daten exportieren +UserRight.Desc.OUTBREAK_VIEW = Kann Ausbrüche einsehen +UserRight.Desc.OUTBREAK_EDIT = Kann Ausbrüche bearbeiten +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Kann Massen-Pseudonymisierung ausführen +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Technisches Benutzerrecht für die SORMAS zu SORMAS Schnittstelle +UserRight.Desc.SORMAS_REST = Kann auf die SORMAS REST Schnittstelle zugreifen +UserRight.Desc.EXTERNAL_VISITS = Kann auf REST-Endpunkte für externe Anrufe zugreifen +UserRight.Desc.SORMAS_UI = Kann auf die grafische Benutzeroberfläche von SORMAS zugreifen +UserRight.Desc.DEV_MODE = Kann auf Entwickleroptionen im Konfigurationsverzeichnis zugreifen # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Falluntersuchung @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Wahrscheinliche Reinfektion ReinfectionStatus.POSSIBLE = Mögliche Reinfektion # Vaccine -Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 Impfstoff +Vaccine.COMIRNATY=Comirnaty (COVID-19-mRNA Impfstoff) Vaccine.MRNA_1273=Moderna COVID-19 Impfstoff -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 Impfstoff +Vaccine.OXFORD_ASTRA_ZENECA=Vaxzevria Injektionssuspension COVID-19-Impfstoff (AstraZeneca) Vaccine.AD26_COV2_S=Ad26.COV2.S (Johnson & Johnson) Vaccine.NVX_COV_2373=Novavax COVID-19 Impfstoff Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Bearbeitet LabMessageStatus.FORWARDED=Weitergeleitet LabMessageStatus.UNCLEAR=Unklar +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Labormeldung +ExternalMessageType.PHYSICIANS_REPORT=Arztmeldung + # ShareRequestDataType ShareRequestDataType.CASE = Fall ShareRequestDataType.CONTACT = Kontakt @@ -1788,7 +1967,7 @@ MeansOfImmunization.VACCINATION_RECOVERY = Impfung / Genesung MeansOfImmunization.OTHER = Sonstiges #EntityColumn -EntityColumn.ENTITY = Entity +EntityColumn.ENTITY = Entität EntityColumn.FIELD_ID = Feld-ID EntityColumn.FIELD = Feld EntityColumn.TYPE = Typ diff --git a/sormas-api/src/main/resources/enum_de-DE.properties b/sormas-api/src/main/resources/enum_de-DE.properties index 2f6253c1886..a6bd652e6e7 100644 --- a/sormas-api/src/main/resources/enum_de-DE.properties +++ b/sormas-api/src/main/resources/enum_de-DE.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Ereignis @@ -509,7 +509,7 @@ EducationType.TERTIARY = (Fach-)Abitur EducationType.OTHER = Sonstiges EntityRelevanceStatus.ACTIVE = Aktiv -EntityRelevanceStatus.ARCHIVED = Archiviert +EntityRelevanceStatus.ARCHIVED = Abgeschlossen EntityRelevanceStatus.ALL = Alle # EpiCurveGrouping @@ -1259,7 +1259,7 @@ TypeOfPlace.UNKNOWN = Unbekannt TypeOfPlace.SCATTERED = Verstreut # UserRight -UserRight.CASE_ARCHIVE = Fälle archivieren +UserRight.CASE_ARCHIVE = Fälle abschließen UserRight.CASE_CHANGE_DISEASE = Fallerkrankung bearbeiten UserRight.CASE_CHANGE_EPID_NUMBER = Fall epid-Nummer bearbeiten UserRight.CASE_CLASSIFY = Falldefinitionskategorie und Verlauf der Erkrankung bearbeiten @@ -1269,7 +1269,7 @@ UserRight.CASE_EDIT = Bestehende Fälle bearbeiten UserRight.CASE_EXPORT = Fälle von SORMAS exportieren UserRight.CASE_IMPORT = Fälle in SORMAS importieren UserRight.CASE_INVESTIGATE = Falluntersuchungsstatus bearbeiten -UserRight.CASE_SEE_ARCHIVED = Archivierte Fälle anzeigen +UserRight.CASE_SEE_ARCHIVED = Abgeschlossene Fälle anzeigen UserRight.CASE_TRANSFER = Fälle zu einem anderen Bundesland/Landkreis/Einrichtung übertragen UserRight.CASE_REFER_FROM_POE = Fall vom Einreiseort weiterleiten UserRight.CASE_RESPONSIBLE = Kann für einen Fall verantwortlich sein @@ -1283,23 +1283,23 @@ UserRight.CONTACT_DELETE = Kontakte aus dem System löschen UserRight.CONTACT_EDIT = Bestehende Kontakte bearbeiten UserRight.CONTACT_EXPORT = Kontakte von SORMAS exportieren UserRight.CONTACT_RESPONSIBLE = Kann für einen Kontakt verantwortlich sein -UserRight.CONTACT_SEE_ARCHIVED = Archivierte Kontakte anzeigen +UserRight.CONTACT_SEE_ARCHIVED = Abgeschlossene Kontakte anzeigen UserRight.CONTACT_VIEW = Bestehende Kontakte anzeigen -UserRight.CONTACT_ARCHIVE = Kontakte archivieren +UserRight.CONTACT_ARCHIVE = Kontakte abschließen UserRight.DASHBOARD_CONTACT_VIEW = Zugriff auf die Kontaktleitungs-Übersicht UserRight.DASHBOARD_SURVEILLANCE_VIEW = Zugriff auf die Überwachungsleitungs-Übersicht UserRight.DATABASE_EXPORT_ACCESS = Die gesamte Datenbank exportieren -UserRight.EVENT_ARCHIVE = Ereignisse archivieren +UserRight.EVENT_ARCHIVE = Ereignisse abschließen UserRight.EVENT_CREATE = Neue Ereignisse erstellen UserRight.EVENT_EDIT = Bestehende Ereignisse bearbeiten UserRight.EVENT_EXPORT = Ereignisse von SORMAS exportieren UserRight.EVENT_RESPONSIBLE = Kann für ein Ereignis verantwortlich sein -UserRight.EVENT_SEE_ARCHIVED = Archivierte Ereignisse anzeigen +UserRight.EVENT_SEE_ARCHIVED = Abgeschlossene Ereignisse anzeigen UserRight.EVENT_VIEW = Bestehende Ereignisse anzeigen UserRight.EVENTPARTICIPANT_CREATE = Neue Ereignisteilnehmer erstellen UserRight.EVENTPARTICIPANT_EDIT = Bestehende Ereignisteilnehmende bearbeiten -UserRight.EVENTPARTICIPANT_ARCHIVE = Ereignisteilnehmer archivieren -UserRight.EVENTPARTICIPANT_VIEW = Bestehende Ereignisteilneher sehen +UserRight.EVENTPARTICIPANT_ARCHIVE = Ereignisteilnehmer abschließen +UserRight.EVENTPARTICIPANT_VIEW = Bestehende Ereignisteilnehmer sehen UserRight.INFRASTRUCTURE_CREATE = Neue Bundesländer/Landkreise/Gemeinden/Einrichtungen erstellen UserRight.INFRASTRUCTURE_EDIT = Bearbeite Bundesländer/Landkreise/Gemeinden/Einrichtungen UserRight.INFRASTRUCTURE_VIEW = Bundesländer/Landkreise/Gemeinden/Einrichtungen im System anzeigen @@ -1405,7 +1405,7 @@ UserRight.IMMUNIZATION_VIEW = Bestehende Immunisierungen und Impfungen anzeigen UserRight.IMMUNIZATION_CREATE = Neue Immunisierungen und Impfungen erstellen UserRight.IMMUNIZATION_EDIT = Bestehende Immunisierungen und Impfungen bearbeiten UserRight.IMMUNIZATION_DELETE = Immunisierungen und Impfungen aus dem System löschen -UserRight.IMMUNIZATION_ARCHIVE = Immunisierungen archivieren +UserRight.IMMUNIZATION_ARCHIVE = Immunisierungen abschließen UserRight.PERSON_EXPORT = Personen exportieren UserRight.CONTACT_MERGE = Kontakte zusammenführen UserRight.EVENTGROUP_CREATE = Neue Ereignisgruppen erstellen @@ -1414,15 +1414,190 @@ UserRight.EVENTGROUP_LINK = Ereignisse mit Ereignisgruppen verknüpfen UserRight.EVENTGROUP_ARCHIVE = Ereignisgruppen archivieren UserRight.EVENTGROUP_DELETE = Ereignisgruppen aus dem System löschen UserRight.PERFORM_BULK_OPERATIONS_EVENT = Massenbearbeitungen im Ereignisverzeichnis ausführen +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Massenbearbeitungen im Ereignisteilnehmerverzeichnis ausführen UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Zugriff auf das Einreiseverzeichnis UserRight.TRAVEL_ENTRY_VIEW = Vorhandene Einreisen anzeigen UserRight.TRAVEL_ENTRY_CREATE = Neue Einreisen erstellen UserRight.TRAVEL_ENTRY_EDIT = Vorhandene Einreisen bearbeiten UserRight.TRAVEL_ENTRY_DELETE = Einreisen aus dem System löschen -UserRight.TRAVEL_ENTRY_ARCHIVE = Einreisen archivieren +UserRight.TRAVEL_ENTRY_ARCHIVE = Einreisen abschließen UserRight.EXPORT_DATA_PROTECTION_DATA = Datenschutz-Daten exportieren UserRight.OUTBREAK_VIEW = Ausbrüche anzeigen UserRight.OUTBREAK_EDIT = Ausbrüche bearbeiten +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Massen-Pseudonomisierung ausführen +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas zu Sormas Client +UserRight.SORMAS_REST = Zugriff auf Sormas REST +UserRight.EXTERNAL_VISITS = Externe Anrufe +UserRight.SORMAS_UI = Zugriff auf Sormas UI +UserRight.DEV_MODE = Zugriff auf Entwickleroptionen + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Kann Fälle abschließen +UserRight.Desc.CASE_CHANGE_DISEASE = Kann die Krankheit des Falls bearbeiten +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Kann die Epid-Nummer bearbeiten +UserRight.Desc.CASE_CLASSIFY = Kann Falldefinitionskategorie und Verlauf der Erkrankung bearbeiten +UserRight.Desc.CASE_CREATE = Kann neue Fälle erstellen +UserRight.Desc.CASE_DELETE = Kann Fälle aus dem System löschen +UserRight.Desc.CASE_EDIT = Kann bestehende Fälle bearbeiten +UserRight.Desc.CASE_EXPORT = Kann Fälle von SORMAS exportieren +UserRight.Desc.CASE_IMPORT = Kann Fälle nach SORMAS importieren +UserRight.Desc.CASE_INVESTIGATE = Kann Falluntersuchungsstatus bearbeiten +UserRight.Desc.CASE_TRANSFER = Kann Fälle in ein anderes Bundesland/Landkreis/Einrichtung übertragen +UserRight.Desc.CASE_REFER_FROM_POE = Kann Fall vom Einreiseort weiterleiten +UserRight.Desc.CASE_RESPONSIBLE = Kann für einen Fall verantwortlich sein +UserRight.Desc.CASE_VIEW = Kann bestehende Fälle einsehen +UserRight.Desc.CONTACT_ASSIGN = Kann Kontakte an Beauftragte zuweisen +UserRight.Desc.CONTACT_CLASSIFY = Kann Kontaktklassifikation ändern +UserRight.Desc.CONTACT_CONVERT = Kann resultierende Fälle aus Kontakten erstellen +UserRight.Desc.CONTACT_CREATE = Kann neue Kontakte erstellen +UserRight.Desc.CONTACT_IMPORT = Kann Kontakte importieren +UserRight.Desc.CONTACT_DELETE = Kann Kontakte aus dem System löschen +UserRight.Desc.CONTACT_EDIT = Kann bestehende Kontakte bearbeiten +UserRight.Desc.CONTACT_EXPORT = Kann Kontakte von SORMAS exportieren +UserRight.Desc.CONTACT_RESPONSIBLE = Kann für einen Kontakt verantwortlich sein +UserRight.Desc.CONTACT_VIEW = Kann bestehende Kontakte einsehen +UserRight.Desc.CONTACT_ARCHIVE = Kann Kontakte abschließen +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Kann auf die Kontaktleitungs-Übersicht zugreifen +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Kann auf die Überwachungsleitungs-Übersicht zugreifen +UserRight.Desc.DATABASE_EXPORT_ACCESS = Kann die gesamte Datenbank exportieren +UserRight.Desc.EVENT_ARCHIVE = Kann Ereignisse abschließen +UserRight.Desc.EVENT_CREATE = Kann neue Ereignisse erstellen +UserRight.Desc.EVENT_EDIT = Kann bestehende Ereignisse bearbeiten +UserRight.Desc.EVENT_EXPORT = Kann Ereignisse von SORMAS exportieren +UserRight.Desc.EVENT_RESPONSIBLE = Kann für ein Ereignis verantwortlich sein +UserRight.Desc.EVENT_VIEW = Kann bestehende Ereignisse einsehen +UserRight.Desc.EVENTPARTICIPANT_CREATE = Kann neue Ereignisteilnehmer erstellen +UserRight.Desc.EVENTPARTICIPANT_EDIT = Kann bestehende Ereignisteilnehmer bearbeiten +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Kann Ereignisteilnehmer abschließen +UserRight.Desc.EVENTPARTICIPANT_VIEW = Kann bestehende Ereignisteilnehmer einsehen +UserRight.Desc.INFRASTRUCTURE_CREATE = Kann neue Bundesländer/Landkreise/Gemeinden/Einrichtungen erstellen +UserRight.Desc.INFRASTRUCTURE_EDIT = Kann Bundesländer/Landkreise/Gemeinden/Einrichtungen bearbeiten +UserRight.Desc.INFRASTRUCTURE_VIEW = Kann Bundesländer/Landkreise/Gemeinden/Einrichtungen im System einsehen +UserRight.Desc.PERFORM_BULK_OPERATIONS = Kann Massenbearbeitungen in Listen ausführen +UserRight.Desc.SAMPLE_CREATE = Kann neue Proben erstellen +UserRight.Desc.SAMPLE_EDIT = Kann bestehende Proben bearbeiten +UserRight.Desc.SAMPLE_EXPORT = Kann Proben von SORMAS exportieren +UserRight.Desc.SAMPLE_DELETE = Kann Proben aus dem System löschen +UserRight.Desc.SAMPLE_TRANSFER = Kann Proben an ein anderes Labor übertragen +UserRight.Desc.SAMPLE_VIEW = Kann bestehende Proben einsehen +UserRight.Desc.SAMPLETEST_CREATE = Kann neue Proben-Tests erstellen +UserRight.Desc.SAMPLETEST_EDIT = Kann bestehende Proben-Tests bearbeiten +UserRight.Desc.STATISTICS_EXPORT = Kann detaillierte Statistiken von SORMAS exportieren +UserRight.Desc.TASK_ASSIGN = Kann Benutzern Aufgaben zuweisen +UserRight.Desc.TASK_CREATE = Kann neue Aufgaben erstellen +UserRight.Desc.TASK_EDIT = Kann bestehende Aufgaben bearbeiten +UserRight.Desc.TASK_VIEW = Kann bestehende Aufgaben einsehen +UserRight.Desc.USER_CREATE = Kann neue Benutzer erstellen +UserRight.Desc.USER_EDIT = Kann bestehende Benutzer bearbeiten +UserRight.Desc.USER_VIEW = Kann bestehende Benutzer einsehen +UserRight.Desc.VISIT_CREATE = Kann neue Anrufe erstellen +UserRight.Desc.VISIT_EDIT = Kann bestehende Anrufe bearbeiten +UserRight.Desc.WEEKLYREPORT_CREATE = Kann wöchentliche Berichte erstellen +UserRight.Desc.WEEKLYREPORT_VIEW = Kann wöchentliche Berichte einsehen +UserRight.Desc.CASE_MERGE = Kann Fälle zusammenführen +UserRight.Desc.PERSON_VIEW = Kann bestehende Personen einsehen +UserRight.Desc.PERSON_EDIT = Kann bestehende Personen bearbeiten +UserRight.Desc.PERSON_DELETE = Kann Personen aus dem System löschen +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Kann Personenkontaktdetails löschen +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Kann Proben bearbeiten, die von anderen Benutzern angelegt wurden +UserRight.Desc.PATHOGEN_TEST_CREATE = Kann neue Erregertests erstellen +UserRight.Desc.PATHOGEN_TEST_EDIT = Kann bestehende Erregertests bearbeiten +UserRight.Desc.PATHOGEN_TEST_DELETE = Kann Erregertests aus dem System löschen +UserRight.Desc.ADDITIONAL_TEST_VIEW = Kann bestehende zusätzliche Tests einsehen +UserRight.Desc.ADDITIONAL_TEST_CREATE = Kann neue zusätzliche Tests erstellen +UserRight.Desc.ADDITIONAL_TEST_EDIT = Kann bestehende zusätzliche Tests bearbeiten +UserRight.Desc.ADDITIONAL_TEST_DELETE = Kann zusätzliche Tests aus dem System löschen +UserRight.Desc.CONTACT_REASSIGN_CASE = Kann den Indexfall von Kontakten neu zuweisen +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Kann externes Symptomtagebuch verwalten +UserRight.Desc.VISIT_DELETE = Kann Anrufe aus dem System löschen +UserRight.Desc.VISIT_EXPORT = Kann Anrufe von SORMAS exportieren +UserRight.Desc.TASK_DELETE = Kann Aufgaben aus dem System löschen +UserRight.Desc.TASK_EXPORT = Kann Aufgaben von SORMAS exportieren +UserRight.Desc.ACTION_CREATE = Kann neue Aktionen erstellen +UserRight.Desc.ACTION_DELETE = Kann Aktionen aus dem System löschen +UserRight.Desc.ACTION_EDIT = Kann bestehende Aktionen bearbeiten +UserRight.Desc.EVENT_IMPORT = Kann Ereignisse importieren +UserRight.Desc.EVENT_DELETE = Kann Ereignisse aus dem System löschen +UserRight.Desc.EVENTPARTICIPANT_DELETE = Kann Ereignisteilnehmer aus dem System löschen +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Kann Ereignisteilnehmer importieren +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Kann manuelle externe Nachrichten senden +UserRight.Desc.STATISTICS_ACCESS = Kann auf Statistiken zugreifen +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Kann öffentliche Exportkonfigurationen verwalten +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Kann Massenbearbeitungen für Fall-Proben ausführen +UserRight.Desc.INFRASTRUCTURE_EXPORT = Kann Infrastrukturdaten von SORMAS exportieren +UserRight.Desc.INFRASTRUCTURE_IMPORT = Kann Infrastrukturdaten importieren +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Kann Infrastrukturdaten archivieren +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Kann Kontaktübertragungsketten auf dem Dashboard einsehen +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Kann auf Kampagnen Dashboard zugreifen +UserRight.Desc.CASE_CLINICIAN_VIEW = Kann auf Fall-Bereiche im Zusammenhang mit der Fallverwaltung zugreifen +UserRight.Desc.THERAPY_VIEW = Kann bestehende Therapien einsehen +UserRight.Desc.PRESCRIPTION_CREATE = Kann neue Verschreibungen erstellen +UserRight.Desc.PRESCRIPTION_EDIT = Kann bestehende Verschreibungen bearbeiten +UserRight.Desc.PRESCRIPTION_DELETE = Kann Verschreibungen aus dem System löschen +UserRight.Desc.TREATMENT_CREATE = Kann neue Behandlungen erstellen +UserRight.Desc.TREATMENT_EDIT = Kann bestehende Behandlungen bearbeiten +UserRight.Desc.TREATMENT_DELETE = Kann Behandlungen aus dem System löschen +UserRight.Desc.CLINICAL_COURSE_VIEW = Kann den klinischen Verlauf von Fällen einsehen +UserRight.Desc.CLINICAL_COURSE_EDIT = Kann den klinischen Verlauf von Fällen bearbeiten +UserRight.Desc.CLINICAL_VISIT_CREATE = Kann neue klinische Bewertungen erstellen +UserRight.Desc.CLINICAL_VISIT_EDIT = Kann vorhandene klinische Bewertungen bearbeiten +UserRight.Desc.CLINICAL_VISIT_DELETE = Kann klinische Bewertungen aus dem System löschen +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Kann Einreiseinformationen einsehen +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Kann vorhandene Einreiseinformationen bearbeiten +UserRight.Desc.POPULATION_MANAGE = Kann Bevölkerungsdaten verwalten +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Kann Dokumentvorlagen verwalten +UserRight.Desc.QUARANTINE_ORDER_CREATE = Kann neue Dokumente erstellen +UserRight.Desc.LINE_LISTING_CONFIGURE = Kann Zeilenauflistung konfigurieren +UserRight.Desc.AGGREGATE_REPORT_VIEW = Kann neue zusammenfassende Berichte erstellen +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Kann zusammenfassende Berichte von SORMAS exportieren +UserRight.Desc.AGGREGATE_REPORT_EDIT = Kann bestehende zusammenfassende Berichte bearbeiten +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Kann personenbezogene Daten im Zuständigkeitsbereich einsehen +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Kann personenbezogene Daten außerhalb des Zuständigkeitsbereichs einsehen +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Kann sensible Daten im Zuständigkeitsbereich einsehen +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Kann sensible Daten außerhalb des Zuständigkeitsbereichs einsehen +UserRight.Desc.CAMPAIGN_VIEW = Kann bestehende Kampagnen einsehen +UserRight.Desc.CAMPAIGN_EDIT = Kann bestehende Kampagnen bearbeiten +UserRight.Desc.CAMPAIGN_ARCHIVE = Kann Kampagnen archivieren +UserRight.Desc.CAMPAIGN_DELETE = Kann Kampagnen aus dem System löschen +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Kann vorhandene Kampagnen-Formulardaten einsehen +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Kann vorhandene Kampagnen-Formulardaten bearbeiten +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Kann Kampagnen-Formulardaten archivieren +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Kann Kampagnen-Formulardaten aus dem System löschen +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Kann Kampagnenformular-Daten von SORMAS exportieren +UserRight.Desc.BAG_EXPORT = Kann BAG-Export ausführen +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Kann Daten aus einer SORMAS Instanz an eine andere übergeben +UserRight.Desc.LAB_MESSAGES = Kann Labormeldungen verwalten +UserRight.Desc.CASE_SHARE = Kann Fälle mit dem ganzen Land teilen +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Kann Massenbearbeitungen in Labormeldungen-Liste ausführen +UserRight.Desc.IMMUNIZATION_VIEW = Kann bestehende Immunisierungen und Impfungen einsehen +UserRight.Desc.IMMUNIZATION_CREATE = Kann neue Immunisierungen und Impfungen erstellen +UserRight.Desc.IMMUNIZATION_EDIT = Kann bestehende Immunisierungen und Impfungen bearbeiten +UserRight.Desc.IMMUNIZATION_DELETE = Kann Immunisierungen und Impfungen aus dem System löschen +UserRight.Desc.IMMUNIZATION_ARCHIVE = Kann Immunisierungen abschließen +UserRight.Desc.PERSON_EXPORT = Kann Personen exportieren +UserRight.Desc.CONTACT_MERGE = Kann Kontakte zusammenführen +UserRight.Desc.EVENTGROUP_CREATE = Kann neue Ereignisgruppen erstellen +UserRight.Desc.EVENTGROUP_EDIT = Kann bestehende Ereignisgruppen bearbeiten +UserRight.Desc.EVENTGROUP_LINK = Kann Ereignisse mit Ereignisgruppen verknüpfen +UserRight.Desc.EVENTGROUP_ARCHIVE = Kann Ereignisgruppen archivieren +UserRight.Desc.EVENTGROUP_DELETE = Kann Ereignisgruppen aus dem System löschen +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Kann Massenbearbeitungen im Ereignisverzeichnis ausführen +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Kann Massenbearbeitungen in Ereignisteilnehmerverzeichnissen ausführen +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Kann auf das Einreiseverzeichnis zugreifen +UserRight.Desc.TRAVEL_ENTRY_VIEW = Kann bestehende Einreisen einsehen +UserRight.Desc.TRAVEL_ENTRY_CREATE = Kann neue Einreisen erstellen +UserRight.Desc.TRAVEL_ENTRY_EDIT = Kann bestehende Einreisen bearbeiten +UserRight.Desc.TRAVEL_ENTRY_DELETE = Kann Einreisen aus dem System löschen +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Kann Einreisen abschließen +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Kann Datenschutz-Daten exportieren +UserRight.Desc.OUTBREAK_VIEW = Kann Ausbrüche einsehen +UserRight.Desc.OUTBREAK_EDIT = Kann Ausbrüche bearbeiten +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Kann Massen-Pseudonymisierung ausführen +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Technisches Benutzerrecht für die SORMAS zu SORMAS Schnittstelle +UserRight.Desc.SORMAS_REST = Kann auf die SORMAS REST Schnittstelle zugreifen +UserRight.Desc.EXTERNAL_VISITS = Kann auf REST-Endpunkte für externe Anrufe zugreifen +UserRight.Desc.SORMAS_UI = Kann auf die grafische Benutzeroberfläche von SORMAS zugreifen +UserRight.Desc.DEV_MODE = Kann auf Entwickleroptionen im Konfigurationsverzeichnis zugreifen # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Falluntersuchung @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Verarbeitet LabMessageStatus.FORWARDED=Weitergeleitet LabMessageStatus.UNCLEAR=Unklar +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Labormeldung +ExternalMessageType.PHYSICIANS_REPORT=Arztmeldung + # ShareRequestDataType ShareRequestDataType.CASE = Fall ShareRequestDataType.CONTACT = Kontakt @@ -1788,7 +1967,7 @@ MeansOfImmunization.VACCINATION_RECOVERY = Impfung / Genesung MeansOfImmunization.OTHER = Sonstiges #EntityColumn -EntityColumn.ENTITY = Entity +EntityColumn.ENTITY = Entität EntityColumn.FIELD_ID = Feld-ID EntityColumn.FIELD = Feld EntityColumn.TYPE = Typ diff --git a/sormas-api/src/main/resources/enum_en-AF.properties b/sormas-api/src/main/resources/enum_en-AF.properties index 1e41e3f9e6a..c238001e0ff 100644 --- a/sormas-api/src/main/resources/enum_en-AF.properties +++ b/sormas-api/src/main/resources/enum_en-AF.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_en-GH.properties b/sormas-api/src/main/resources/enum_en-GH.properties index f40d32e1469..b5d15a0ff80 100644 --- a/sormas-api/src/main/resources/enum_en-GH.properties +++ b/sormas-api/src/main/resources/enum_en-GH.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_en-NG.properties b/sormas-api/src/main/resources/enum_en-NG.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_en-NG.properties +++ b/sormas-api/src/main/resources/enum_en-NG.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_es-CU.properties b/sormas-api/src/main/resources/enum_es-CU.properties index 7cad614b032..1a9eccbc3a3 100644 --- a/sormas-api/src/main/resources/enum_es-CU.properties +++ b/sormas-api/src/main/resources/enum_es-CU.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Evento @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Vincular eventos a grupos de eventos UserRight.EVENTGROUP_ARCHIVE = Archivar grupos de eventos UserRight.EVENTGROUP_DELETE = Eliminar grupos de eventos del sistema UserRight.PERFORM_BULK_OPERATIONS_EVENT = Realizar operaciones masivas en el directorio de eventos +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Realizar operaciones masivas en el directorio de participantes de evento UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Acceder al directorio de entradas de viaje UserRight.TRAVEL_ENTRY_VIEW = Ver entradas de viaje existentes UserRight.TRAVEL_ENTRY_CREATE = Crear nuevas entradas de viaje @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archivar entradas de viaje UserRight.EXPORT_DATA_PROTECTION_DATA = Exportar datos de protección de datos UserRight.OUTBREAK_VIEW = Ver brotes UserRight.OUTBREAK_EDIT = Editar brotes +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Realizar pseudonomización masiva +UserRight.SORMAS_TO_SORMAS_CLIENT = Cliente Sormas to Sormas +UserRight.SORMAS_REST = Acceder a Sormas REST +UserRight.EXTERNAL_VISITS = Visitas externas +UserRight.SORMAS_UI = Acceder a la IU de Sormas +UserRight.DEV_MODE = Acceder a opciones de desarrollador + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Puede archivar casos +UserRight.Desc.CASE_CHANGE_DISEASE = Puede editar enfermedad de caso +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Puede editar número epid de caso +UserRight.Desc.CASE_CLASSIFY = Puede editar clasificación y resultado de caso +UserRight.Desc.CASE_CREATE = Puede crear nuevos casos +UserRight.Desc.CASE_DELETE = Puede eliminar casos del sistema +UserRight.Desc.CASE_EDIT = Puede editar casos existentes +UserRight.Desc.CASE_EXPORT = Puede exportar casos de SORMAS +UserRight.Desc.CASE_IMPORT = Puede importar casos a SORMAS +UserRight.Desc.CASE_INVESTIGATE = Puede editar estado de investigación de caso +UserRight.Desc.CASE_TRANSFER = Puede transferir casos a otra provincia/municipio/centro +UserRight.Desc.CASE_REFER_FROM_POE = Puede remitir caso desde punto de entrada +UserRight.Desc.CASE_RESPONSIBLE = Puede ser responsable de un caso +UserRight.Desc.CASE_VIEW = Puede ver casos existentes +UserRight.Desc.CONTACT_ASSIGN = Puede asignar contactos a funcionarios +UserRight.Desc.CONTACT_CLASSIFY = Puede editar clasificación de contacto +UserRight.Desc.CONTACT_CONVERT = Puede crear casos resultantes de contactos +UserRight.Desc.CONTACT_CREATE = Puede crear nuevos contactos +UserRight.Desc.CONTACT_IMPORT = Puede importar contactos +UserRight.Desc.CONTACT_DELETE = Puede eliminar contactos del sistema +UserRight.Desc.CONTACT_EDIT = Puede editar contactos existentes +UserRight.Desc.CONTACT_EXPORT = Puede exportar contactos de SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Puede ser responsable de un contacto +UserRight.Desc.CONTACT_VIEW = Puede ver contactos existentes +UserRight.Desc.CONTACT_ARCHIVE = Puede archivar contactos +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Puede acceder al tablero de control de supervisor de contactos +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Puede acceder al tablero de control de supervisor de vigilancia +UserRight.Desc.DATABASE_EXPORT_ACCESS = Puede exportar toda la base de datos +UserRight.Desc.EVENT_ARCHIVE = Puede archivar eventos +UserRight.Desc.EVENT_CREATE = Puede crear nuevos eventos +UserRight.Desc.EVENT_EDIT = Puede editar eventos existentes +UserRight.Desc.EVENT_EXPORT = Puede exportar eventos de SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Puede ser responsable de un evento +UserRight.Desc.EVENT_VIEW = Puede ver eventos existentes +UserRight.Desc.EVENTPARTICIPANT_CREATE = Puede crear nuevos participantes de evento +UserRight.Desc.EVENTPARTICIPANT_EDIT = Puede editar participantes de evento existentes +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Puede archivar participantes de evento +UserRight.Desc.EVENTPARTICIPANT_VIEW = Puede ver participantes de evento existentes +UserRight.Desc.INFRASTRUCTURE_CREATE = Puede crear nuevas provincias/municipios/áreas de salud/centros +UserRight.Desc.INFRASTRUCTURE_EDIT = Puede editar provincias/municipios/áreas de salud/centros +UserRight.Desc.INFRASTRUCTURE_VIEW = Puede ver provincias/municipios/áreas de salud/centros en el sistema +UserRight.Desc.PERFORM_BULK_OPERATIONS = Puede realizar operaciones masivas en listas +UserRight.Desc.SAMPLE_CREATE = Puede crear nuevas muestras +UserRight.Desc.SAMPLE_EDIT = Puede editar muestras existentes +UserRight.Desc.SAMPLE_EXPORT = Puede exportar muestras de SORMAS +UserRight.Desc.SAMPLE_DELETE = Puede eliminar muestras del sistema +UserRight.Desc.SAMPLE_TRANSFER = Puede transferir muestras a otro laboratorio +UserRight.Desc.SAMPLE_VIEW = Puede ver muestras existentes +UserRight.Desc.SAMPLETEST_CREATE = Puede crear nuevas pruebas +UserRight.Desc.SAMPLETEST_EDIT = Puede editar pruebas existentes +UserRight.Desc.STATISTICS_EXPORT = Puede exportar estadísticas detalladas de SORMAS +UserRight.Desc.TASK_ASSIGN = Puede asignar tareas a usuarios +UserRight.Desc.TASK_CREATE = Puede crear nuevas tareas +UserRight.Desc.TASK_EDIT = Puede editar tareas existentes +UserRight.Desc.TASK_VIEW = Puede ver tareas existentes +UserRight.Desc.USER_CREATE = Puede crear nuevos usuarios +UserRight.Desc.USER_EDIT = Puede editar usuarios existentes +UserRight.Desc.USER_VIEW = Puede ver usuarios existentes +UserRight.Desc.VISIT_CREATE = Puede crear nuevas visitas +UserRight.Desc.VISIT_EDIT = Puede editar visitas existentes +UserRight.Desc.WEEKLYREPORT_CREATE = Puede crear informes semanales +UserRight.Desc.WEEKLYREPORT_VIEW = Puede ver informes semanales +UserRight.Desc.CASE_MERGE = Puede combinar casos +UserRight.Desc.PERSON_VIEW = Puede ver personas existentes +UserRight.Desc.PERSON_EDIT = Puede editar personas existentes +UserRight.Desc.PERSON_DELETE = Puede eliminar personas del sistema +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Puede eliminar datos de contacto de persona +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Puede editar muestras reportadas por otros usuarios +UserRight.Desc.PATHOGEN_TEST_CREATE = Puede crear nuevas pruebas de patógeno +UserRight.Desc.PATHOGEN_TEST_EDIT = Puede editar pruebas de patógeno existentes +UserRight.Desc.PATHOGEN_TEST_DELETE = Puede eliminar pruebas de patógeno del sistema +UserRight.Desc.ADDITIONAL_TEST_VIEW = Puede ver pruebas adicionales existentes +UserRight.Desc.ADDITIONAL_TEST_CREATE = Puede crear nuevas pruebas adicionales +UserRight.Desc.ADDITIONAL_TEST_EDIT = Puede editar pruebas adicionales existentes +UserRight.Desc.ADDITIONAL_TEST_DELETE = Puede eliminar pruebas adicionales del sistema +UserRight.Desc.CONTACT_REASSIGN_CASE = Puede reasignar el caso de origen de contactos +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Puede gestionar diario de síntomas externo +UserRight.Desc.VISIT_DELETE = Puede eliminar visitas del sistema +UserRight.Desc.VISIT_EXPORT = Puede exportar visitas de SORMAS +UserRight.Desc.TASK_DELETE = Puede eliminar tareas del sistema +UserRight.Desc.TASK_EXPORT = Puede exportar tareas de SORMAS +UserRight.Desc.ACTION_CREATE = Puede crear nuevas acciones +UserRight.Desc.ACTION_DELETE = Puede eliminar acciones del sistema +UserRight.Desc.ACTION_EDIT = Puede editar acciones existentes +UserRight.Desc.EVENT_IMPORT = Puede importar eventos +UserRight.Desc.EVENT_DELETE = Puede eliminar eventos del sistema +UserRight.Desc.EVENTPARTICIPANT_DELETE = Puede eliminar participantes de evento del sistema +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Puede importar participantes de evento +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Puede enviar mensajes externos manuales +UserRight.Desc.STATISTICS_ACCESS = Puede acceder a estadísticas +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Puede gestionar configuraciones de exportación públicas +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Puede realizar operaciones masivas en muestras de casos +UserRight.Desc.INFRASTRUCTURE_EXPORT = Puede exportar datos de infraestructura de SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Puede importar datos de infraestructura +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Puede archivar datos de infraestructura +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Puede ver cadenas de transmisión de contactos en el tablero de control +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Puede acceder al tablero de control de campañas +UserRight.Desc.CASE_CLINICIAN_VIEW = Puede acceder a secciones de casos relacionadas al médico +UserRight.Desc.THERAPY_VIEW = Puede ver terapias existentes +UserRight.Desc.PRESCRIPTION_CREATE = Puede crear nuevas prescripciones +UserRight.Desc.PRESCRIPTION_EDIT = Puede editar prescripciones existentes +UserRight.Desc.PRESCRIPTION_DELETE = Puede eliminar prescripciones del sistema +UserRight.Desc.TREATMENT_CREATE = Puede crear nuevos tratamientos +UserRight.Desc.TREATMENT_EDIT = Puede editar tratamientos existentes +UserRight.Desc.TREATMENT_DELETE = Puede eliminar tratamientos del sistema +UserRight.Desc.CLINICAL_COURSE_VIEW = Puede ver el curso clínico de casos +UserRight.Desc.CLINICAL_COURSE_EDIT = Puede editar el curso clínico de casos +UserRight.Desc.CLINICAL_VISIT_CREATE = Puede crear nuevas visitas clínicas +UserRight.Desc.CLINICAL_VISIT_EDIT = Puede editar visitas clínicas existentes +UserRight.Desc.CLINICAL_VISIT_DELETE = Puede eliminar visitas clínicas del sistema +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Puede ver información de salud portuaria +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Puede editar información de salud portuaria existente +UserRight.Desc.POPULATION_MANAGE = Puede gestionar datos de población +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Puede gestionar plantillas de documento +UserRight.Desc.QUARANTINE_ORDER_CREATE = Puede crear nuevas órdenes de cuarentena +UserRight.Desc.LINE_LISTING_CONFIGURE = Puede configurar el listado de líneas +UserRight.Desc.AGGREGATE_REPORT_VIEW = Puede crear nuevos informes agregados +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Puede exportar informes agregados de SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Puede editar informes agregados existentes +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Puede ver datos personales en jurisdicción +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Puede ver datos personales fuera de jurisdicción +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Puede ver datos sensibles en jurisdicción +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Puede ver datos sensibles fuera de jurisdicción +UserRight.Desc.CAMPAIGN_VIEW = Puede ver campañas existentes +UserRight.Desc.CAMPAIGN_EDIT = Puede editar campañas existentes +UserRight.Desc.CAMPAIGN_ARCHIVE = Puede archivar campañas +UserRight.Desc.CAMPAIGN_DELETE = Puede eliminar campañas del sistema +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Puede ver datos de formulario de campaña existentes +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Puede editar datos de formulario de campaña existentes +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Puede archivar datos de formulario de campaña +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Puede eliminar datos de formulario de campaña del sistema +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Puede exportar datos de formulario de campaña de SORMAS +UserRight.Desc.BAG_EXPORT = Puede realizar exportación BAG +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Puede compartir datos entre una instancia de SORMAS y otra +UserRight.Desc.LAB_MESSAGES = Puede gestionar mensajes de laboratorio +UserRight.Desc.CASE_SHARE = Puede compartir casos con todo el país +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Puede realizar operaciones masivas en listas de mensajes de laboratorio +UserRight.Desc.IMMUNIZATION_VIEW = Puede ver inmunizaciones y vacunaciones existentes +UserRight.Desc.IMMUNIZATION_CREATE = Puede crear nuevas inmunizaciones y vacunaciones +UserRight.Desc.IMMUNIZATION_EDIT = Puede editar inmunizaciones y vacunaciones existentes +UserRight.Desc.IMMUNIZATION_DELETE = Puede eliminar inmunizaciones y vacunaciones del sistema +UserRight.Desc.IMMUNIZATION_ARCHIVE = Puede archivar inmunizaciones +UserRight.Desc.PERSON_EXPORT = Puede exportar personas +UserRight.Desc.CONTACT_MERGE = Puede combinar contactos +UserRight.Desc.EVENTGROUP_CREATE = Puede crear nuevos grupos de eventos +UserRight.Desc.EVENTGROUP_EDIT = Puede editar grupos de eventos existentes +UserRight.Desc.EVENTGROUP_LINK = Puede vincular eventos a grupos de eventos +UserRight.Desc.EVENTGROUP_ARCHIVE = Puede archivar grupos de eventos +UserRight.Desc.EVENTGROUP_DELETE = Puede eliminar grupos de eventos del sistema +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Puede realizar operaciones masivas en el directorio de eventos +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Puede realizar operaciones masivas en el directorio de participantes de evento +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Puede acceder al directorio de entradas de viaje +UserRight.Desc.TRAVEL_ENTRY_VIEW = Puede ver entradas de viaje existentes +UserRight.Desc.TRAVEL_ENTRY_CREATE = Puede crear nuevas entradas de viaje +UserRight.Desc.TRAVEL_ENTRY_EDIT = Puede editar entradas de viaje existentes +UserRight.Desc.TRAVEL_ENTRY_DELETE = Puede eliminar entradas de viaje del sistema +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Puede archivar entradas de viaje +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Puede exportar información de protección de datos +UserRight.Desc.OUTBREAK_VIEW = Puede ver brotes +UserRight.Desc.OUTBREAK_EDIT = Puede editar brotes +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Puede realizar pseudonomización masiva +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Derecho de usuario técnico para la interfaz SORMAS to SORMAS +UserRight.Desc.SORMAS_REST = Puede acceder a la interfaz SORMAS REST +UserRight.Desc.EXTERNAL_VISITS = Puede acceder visitas externas +UserRight.Desc.SORMAS_UI = Puede acceder a la interfaz gráfica de usuario de SORMAS +UserRight.Desc.DEV_MODE = Puede acceder a las opciones de desarrollador en el directorio de configuración # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Investigación de caso @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Reinfección probable ReinfectionStatus.POSSIBLE = Reinfección posible # Vaccine -Vaccine.COMIRNATY=Vacuna Pfizer–BioNTech para COVID-19 +Vaccine.COMIRNATY=Vacuna Pfizer-BioNTech para COVID-19 Vaccine.MRNA_1273=Vacuna Moderna para COVID-19 -Vaccine.OXFORD_ASTRA_ZENECA=Vacuna Oxford–AstraZeneca para COVID-19 +Vaccine.OXFORD_ASTRA_ZENECA=Vacuna Oxford-AstraZeneca para COVID-19 Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Vacuna Novavax para COVID-19 Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Procesado LabMessageStatus.FORWARDED=Reenviado LabMessageStatus.UNCLEAR=Poco claro +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Mensaje de laboratorio +ExternalMessageType.PHYSICIANS_REPORT=Informe del médico + # ShareRequestDataType ShareRequestDataType.CASE = Caso ShareRequestDataType.CONTACT = Contacto diff --git a/sormas-api/src/main/resources/enum_es-EC.properties b/sormas-api/src/main/resources/enum_es-EC.properties index 2368dc77b7f..2225240ba6a 100644 --- a/sormas-api/src/main/resources/enum_es-EC.properties +++ b/sormas-api/src/main/resources/enum_es-EC.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Investigación de caso @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_es-ES.properties b/sormas-api/src/main/resources/enum_es-ES.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_es-ES.properties +++ b/sormas-api/src/main/resources/enum_es-ES.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_fa-AF.properties b/sormas-api/src/main/resources/enum_fa-AF.properties index 76a92f86176..951ad471007 100644 --- a/sormas-api/src/main/resources/enum_fa-AF.properties +++ b/sormas-api/src/main/resources/enum_fa-AF.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_fi-FI.properties b/sormas-api/src/main/resources/enum_fi-FI.properties index f27b4f6a8e4..bb4df6bfc0d 100644 --- a/sormas-api/src/main/resources/enum_fi-FI.properties +++ b/sormas-api/src/main/resources/enum_fi-FI.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Potilaan selvittely @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_fil-PH.properties b/sormas-api/src/main/resources/enum_fil-PH.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_fil-PH.properties +++ b/sormas-api/src/main/resources/enum_fil-PH.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_fj-FJ.properties b/sormas-api/src/main/resources/enum_fj-FJ.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_fj-FJ.properties +++ b/sormas-api/src/main/resources/enum_fj-FJ.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_fr-CH.properties b/sormas-api/src/main/resources/enum_fr-CH.properties index f469e6df08d..a006c539966 100644 --- a/sormas-api/src/main/resources/enum_fr-CH.properties +++ b/sormas-api/src/main/resources/enum_fr-CH.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Événement @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Enquête de cas @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Vaccin Pfizer–BioNTech COVID-19 +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Vaccin Moderna COVID-19 -Vaccine.OXFORD_ASTRA_ZENECA=Vaccin Oxford–AstraZeneca COVID-19 +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Vaccin Novavax COVID-19 Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_fr-FR.properties b/sormas-api/src/main/resources/enum_fr-FR.properties index cd018dc791f..9cb06e3ef81 100644 --- a/sormas-api/src/main/resources/enum_fr-FR.properties +++ b/sormas-api/src/main/resources/enum_fr-FR.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Événement @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Effectuer des opérations en masse dans l'annuaire des participants à l'événement UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Exporter les données de protection des données UserRight.OUTBREAK_VIEW = Voir les éclosions UserRight.OUTBREAK_EDIT = Modifier les éclosions +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Effectuer une pseudonomisation en masse +UserRight.SORMAS_TO_SORMAS_CLIENT = Client Sormas à Sormas +UserRight.SORMAS_REST = Accéder à Sormas REST +UserRight.EXTERNAL_VISITS = Visites externes +UserRight.SORMAS_UI = Accéder à l'interface utilisateur de Sormas +UserRight.DEV_MODE = Accéder aux options de développement + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Capable d'archiver les cas +UserRight.Desc.CASE_CHANGE_DISEASE = Capable de modifier l'épidémie de cas +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Capable de modifier le numéro d'épidémie de cas +UserRight.Desc.CASE_CLASSIFY = Modifier la classification et l'issue du cas +UserRight.Desc.CASE_CREATE = En mesure de créer de nouveaux cas +UserRight.Desc.CASE_DELETE = Capable de supprimer des cas du système +UserRight.Desc.CASE_EDIT = Capable de modifier les cas existants +UserRight.Desc.CASE_EXPORT = Capable d'exporter des cas depuis SORMAS +UserRight.Desc.CASE_IMPORT = Capable d'importer des cas dans SORMAS +UserRight.Desc.CASE_INVESTIGATE = Capable de modifier le statut de l'enquête de cas +UserRight.Desc.CASE_TRANSFER = Capable de transférer des cas dans une autre région/district/établissement +UserRight.Desc.CASE_REFER_FROM_POE = Référez le cas à partir du point d'entrée +UserRight.Desc.CASE_RESPONSIBLE = Peut être responsable d'un cas +UserRight.Desc.CASE_VIEW = Capable de voir les cas existants +UserRight.Desc.CONTACT_ASSIGN = Capable d'assigner des contacts aux officiers +UserRight.Desc.CONTACT_CLASSIFY = Permet de modifier la classification des contacts +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Accès à l'interface REST SORMAS +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Accès à l'interface graphique SORMAS +UserRight.Desc.DEV_MODE = Possibilité d'accéder aux options du développeur dans le répertoire de configuration # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Enquête de cas @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Vaccin Pfizer–BioNTech COVID-19 +Vaccine.COMIRNATY=vaccin Pfizer-BioNTech COVID-19 Vaccine.MRNA_1273=Vaccin Moderna COVID-19 -Vaccine.OXFORD_ASTRA_ZENECA=Oxford – vaccin AstraZeneca COVID-19 +Vaccine.OXFORD_ASTRA_ZENECA=vaccin Oxford-AstraZeneca COVID-19 Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Vaccin Novavax COVID-19 Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Traitement effectué LabMessageStatus.FORWARDED=Transféré LabMessageStatus.UNCLEAR=Non effacé +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Cas ShareRequestDataType.CONTACT = Contact @@ -1788,7 +1967,7 @@ MeansOfImmunization.VACCINATION_RECOVERY = Vaccination/Recovery MeansOfImmunization.OTHER = Autres #EntityColumn -EntityColumn.ENTITY = Entity +EntityColumn.ENTITY = Entité EntityColumn.FIELD_ID = ID du champ EntityColumn.FIELD = Champ EntityColumn.TYPE = Type diff --git a/sormas-api/src/main/resources/enum_hi-IN.properties b/sormas-api/src/main/resources/enum_hi-IN.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_hi-IN.properties +++ b/sormas-api/src/main/resources/enum_hi-IN.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_hr-HR.properties b/sormas-api/src/main/resources/enum_hr-HR.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_hr-HR.properties +++ b/sormas-api/src/main/resources/enum_hr-HR.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_it-CH.properties b/sormas-api/src/main/resources/enum_it-CH.properties index 71cc16453c4..ae941076936 100644 --- a/sormas-api/src/main/resources/enum_it-CH.properties +++ b/sormas-api/src/main/resources/enum_it-CH.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Evento @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Indagine sul caso @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_it-IT.properties b/sormas-api/src/main/resources/enum_it-IT.properties index 0599a55d5b2..c3872e295be 100644 --- a/sormas-api/src/main/resources/enum_it-IT.properties +++ b/sormas-api/src/main/resources/enum_it-IT.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Indagine sul caso @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_ja-JP.properties b/sormas-api/src/main/resources/enum_ja-JP.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_ja-JP.properties +++ b/sormas-api/src/main/resources/enum_ja-JP.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_nl-NL.properties b/sormas-api/src/main/resources/enum_nl-NL.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_nl-NL.properties +++ b/sormas-api/src/main/resources/enum_nl-NL.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_no-NO.properties b/sormas-api/src/main/resources/enum_no-NO.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_no-NO.properties +++ b/sormas-api/src/main/resources/enum_no-NO.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_pl-PL.properties b/sormas-api/src/main/resources/enum_pl-PL.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_pl-PL.properties +++ b/sormas-api/src/main/resources/enum_pl-PL.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_ps-AF.properties b/sormas-api/src/main/resources/enum_ps-AF.properties index 76a92f86176..951ad471007 100644 --- a/sormas-api/src/main/resources/enum_ps-AF.properties +++ b/sormas-api/src/main/resources/enum_ps-AF.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_pt-PT.properties b/sormas-api/src/main/resources/enum_pt-PT.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_pt-PT.properties +++ b/sormas-api/src/main/resources/enum_pt-PT.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_ro-RO.properties b/sormas-api/src/main/resources/enum_ro-RO.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_ro-RO.properties +++ b/sormas-api/src/main/resources/enum_ro-RO.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_ru-RU.properties b/sormas-api/src/main/resources/enum_ru-RU.properties index a67e457952d..8376dc38c3e 100644 --- a/sormas-api/src/main/resources/enum_ru-RU.properties +++ b/sormas-api/src/main/resources/enum_ru-RU.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_sv-SE.properties b/sormas-api/src/main/resources/enum_sv-SE.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_sv-SE.properties +++ b/sormas-api/src/main/resources/enum_sv-SE.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_sw-KE.properties b/sormas-api/src/main/resources/enum_sw-KE.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_sw-KE.properties +++ b/sormas-api/src/main/resources/enum_sw-KE.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_tr-TR.properties b/sormas-api/src/main/resources/enum_tr-TR.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_tr-TR.properties +++ b/sormas-api/src/main/resources/enum_tr-TR.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_uk-UA.properties b/sormas-api/src/main/resources/enum_uk-UA.properties index 3c50d898883..3125905735e 100644 --- a/sormas-api/src/main/resources/enum_uk-UA.properties +++ b/sormas-api/src/main/resources/enum_uk-UA.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/enum_ur-PK.properties b/sormas-api/src/main/resources/enum_ur-PK.properties index 6285864d922..5bdbe3e0181 100644 --- a/sormas-api/src/main/resources/enum_ur-PK.properties +++ b/sormas-api/src/main/resources/enum_ur-PK.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = تقریب @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = تقریبات کو تقریب کے گروپس سے UserRight.EVENTGROUP_ARCHIVE = آرکائیو تقریب کے گروپس UserRight.EVENTGROUP_DELETE = سسٹم سے تقریب کے گروپس کو مٹا دیں UserRight.PERFORM_BULK_OPERATIONS_EVENT = تقریب ک ڈائرکٹری میں بلک آپریشنز انجام دیں +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = تقریب کے شرکاہ کی ڈائرکٹری میں بلک آپریشنز انجام دیں UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = سفری اندراج کی ڈائرکٹری تک رسائی حاصل کریں UserRight.TRAVEL_ENTRY_VIEW = موجودہ سفری اندراجات دیکھیں UserRight.TRAVEL_ENTRY_CREATE = نئے سفری اندراجات بنائیں @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = آرکائیو سفری اندراجات UserRight.EXPORT_DATA_PROTECTION_DATA = ڈیٹا پروٹیکشن ڈیٹا ایکسپورٹ کریں UserRight.OUTBREAK_VIEW = پھیلاؤ دیکھیں UserRight.OUTBREAK_EDIT = پھیلاو میں ترمیم کریں +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = بلک pseudonomization انجام دیں +UserRight.SORMAS_TO_SORMAS_CLIENT = سورماس سے سورماس کلائنٹ +UserRight.SORMAS_REST = Sormas REST تک رسائی +UserRight.EXTERNAL_VISITS = بیرونی دورے +UserRight.SORMAS_UI = Sormas UI تک رسائی +UserRight.DEV_MODE = ڈویلپر کے اختیارات تک رسائی + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = کیسز کو آرکائیو کرنے کے قابل +UserRight.Desc.CASE_CHANGE_DISEASE = کیسزمیں ترمیم کرنے کے قابل +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = EPID نمبر میں ترمیم کرنے کے قابل +UserRight.Desc.CASE_CLASSIFY = کیس کی درجہ بندی اور نتیجہ میں ترمیم کرنے کے قابل +UserRight.Desc.CASE_CREATE = نئے کیسز بنانے کے قابل +UserRight.Desc.CASE_DELETE = سسٹم سے کیسز ڈیلیٹ کرنے کے قابل +UserRight.Desc.CASE_EDIT = موجودہ کیسز میں ترمیم کرنے کے قابل +UserRight.Desc.CASE_EXPORT = سورماس سے کیسز ايکسپورٹ کرنے کے قابل +UserRight.Desc.CASE_IMPORT = سورماس ميں کیسز امپورٹ کرنے کے قابل +UserRight.Desc.CASE_INVESTIGATE = کیس کی تفتیش کی حالت میں ترمیم کرنے کے قابل +UserRight.Desc.CASE_TRANSFER = کیسز کو دوسرے علاقے/ضلع/سہولت گاہ میں منتقل کرنے کے قابل +UserRight.Desc.CASE_REFER_FROM_POE = داخلے کے جگہ سے کیس کا حوالہ دینے کے قابل +UserRight.Desc.CASE_RESPONSIBLE = کسی کیس کا ذمہ دار ہو سکتا ہے +UserRight.Desc.CASE_VIEW = موجودہ کیسز دیکھنے کے قابل +UserRight.Desc.CONTACT_ASSIGN = افسران کو رابطے مختص کرنے کے قابل +UserRight.Desc.CONTACT_CLASSIFY = رابطے کی درجہ بندی کرنے کے قابل +UserRight.Desc.CONTACT_CONVERT = رابطوں کے نتیجے میں کیسز بنانے کے قابل +UserRight.Desc.CONTACT_CREATE = نئے رابطے بنانے کے قابل +UserRight.Desc.CONTACT_IMPORT = رابطے درآمد کرنے کے قابل +UserRight.Desc.CONTACT_DELETE = سسٹم سے رابطے ڈیلیٹ کرنے کے قابل +UserRight.Desc.CONTACT_EDIT = موجودہ رابطوں میں ترمیم کرنے کے قابل +UserRight.Desc.CONTACT_EXPORT = سورماس سے رابطے ايکسپورٹ کرنے کے قابل +UserRight.Desc.CONTACT_RESPONSIBLE = کسی رابطے کے لیے ذمہ دار ہو سکتا ہے +UserRight.Desc.CONTACT_VIEW = موجودہ رابطے دیکھنے کے قابل +UserRight.Desc.CONTACT_ARCHIVE = رابطوں کو آرکائیو کرنے کے قابل +UserRight.Desc.DASHBOARD_CONTACT_VIEW = رابطہ سپروائزر ڈیش بورڈ تک رسائی کے قابل +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = نگران سپروائزر ڈیش بورڈ تک رسائی کے قابل +UserRight.Desc.DATABASE_EXPORT_ACCESS = پورا ڈیٹا بیس ايکسپورٹ کرنے کے قابل +UserRight.Desc.EVENT_ARCHIVE = تقریبات کو آرکائیو کرنے کے قابل +UserRight.Desc.EVENT_CREATE = نئے تقریبات بنانے کے قابل +UserRight.Desc.EVENT_EDIT = موجودہ تقریبات میں ترمیم کرنے کے قابل +UserRight.Desc.EVENT_EXPORT = سورماس سے تقریبات ايکسپورٹ کرنے کے قابل +UserRight.Desc.EVENT_RESPONSIBLE = کسی تقریب کا ذمہ دار ہو سکتا ہے +UserRight.Desc.EVENT_VIEW = موجودہ تقریبات دیکھنے کے قابل +UserRight.Desc.EVENTPARTICIPANT_CREATE = تقریب کے نئے شرکاء بنانے کے قابل +UserRight.Desc.EVENTPARTICIPANT_EDIT = موجودہ تقریب کے شرکاء میں ترمیم کرنے کے قابل +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = تقریب کے شرکاء کو آرکائیو کرنے کے قابل +UserRight.Desc.EVENTPARTICIPANT_VIEW = تقریب کے موجودہ شرکاء کو دیکھنے کے قابل +UserRight.Desc.INFRASTRUCTURE_CREATE = نئے علاقے/اضلاع/کمیونٹیز/سہولیات گاہيں بنانے کے قابل +UserRight.Desc.INFRASTRUCTURE_EDIT = علاقوں/اضلاع/کمیونٹیز/سہولیات گاہوں میں ترمیم کرنے کے قابل +UserRight.Desc.INFRASTRUCTURE_VIEW = سسٹم میں علاقے/اضلاع/کمیونٹیز/سہولیات گاہيں دیکھنے کے قابل +UserRight.Desc.PERFORM_BULK_OPERATIONS = فہرستوں میں بلک آپریشنز انجام دینے کے قابل +UserRight.Desc.SAMPLE_CREATE = نئے نمونے بنانے کے قابل +UserRight.Desc.SAMPLE_EDIT = موجودہ نمونے میں ترمیم کرنے کے قابل +UserRight.Desc.SAMPLE_EXPORT = سورماس سے نمونے ايکسپورٹ کرنے کے قابل +UserRight.Desc.SAMPLE_DELETE = سسٹم سے نمونے ڈیلیٹ کرنے کے قابل +UserRight.Desc.SAMPLE_TRANSFER = نمونے کسی اور لیبارٹری میں منتقل کرنے کے قابل +UserRight.Desc.SAMPLE_VIEW = موجودہ نمونے دیکھنے کے قابل +UserRight.Desc.SAMPLETEST_CREATE = نئے نمونے کے ٹیسٹس بنانے کے قابل +UserRight.Desc.SAMPLETEST_EDIT = موجودہ نمونے کے ٹیسٹس میں ترمیم کرنے کے قابل +UserRight.Desc.STATISTICS_EXPORT = سورماس سے تفصیلی اعدادوشمار ايکسپورٹ کرنے کے قابل +UserRight.Desc.TASK_ASSIGN = صارفین کےليے کام مختص کرنے کے قابل +UserRight.Desc.TASK_CREATE = نئے کام بنانے کے قابل +UserRight.Desc.TASK_EDIT = موجودہ کاموں میں ترمیم کرنے کے قابل +UserRight.Desc.TASK_VIEW = موجودہ کاموں کو دیکھنے کے قابل +UserRight.Desc.USER_CREATE = نئے صارفین بنانے کے قابل +UserRight.Desc.USER_EDIT = موجودہ صارفین میں ترمیم کرنے کے قابل +UserRight.Desc.USER_VIEW = موجودہ صارفین کو دیکھنے کے قابل +UserRight.Desc.VISIT_CREATE = نئے دورے بنانے کے قابل +UserRight.Desc.VISIT_EDIT = موجودہ دوروں میں ترمیم کرنے کے قابل +UserRight.Desc.WEEKLYREPORT_CREATE = ہفتہ وار رپورٹس بنانے کے قابل +UserRight.Desc.WEEKLYREPORT_VIEW = ہفتہ وار رپورٹس دیکھنے کے قابل +UserRight.Desc.CASE_MERGE = کیسز کو ضم کرنے کے قابل +UserRight.Desc.PERSON_VIEW = موجودہ افراد کو دیکھنے کے قابل +UserRight.Desc.PERSON_EDIT = موجودہ افراد میں ترمیم کرنے کے قابل +UserRight.Desc.PERSON_DELETE = سسٹم سے افراد کو ڈیلیٹ کرنے کے قابل +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = شخص کے رابطے کی تفصیلات کو مٹانے کے قابل +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = دوسرے صارفین کے ذریعہ رپورٹ کردہ نمونوں میں ترمیم کرنے کے قابل +UserRight.Desc.PATHOGEN_TEST_CREATE = نئے پیتھوجین ٹیسٹس بنانے کے قابل +UserRight.Desc.PATHOGEN_TEST_EDIT = موجودہ پیتھوجین ٹیسٹس میں ترمیم کرنے کے قابل +UserRight.Desc.PATHOGEN_TEST_DELETE = سسٹم سے پیتھوجین ٹیسٹس کو مٹانے کے قابل +UserRight.Desc.ADDITIONAL_TEST_VIEW = موجودہ اضافی ٹیسٹس دیکھنے کے قابل +UserRight.Desc.ADDITIONAL_TEST_CREATE = نئے اضافی ٹیسٹس بنانے کے قابل +UserRight.Desc.ADDITIONAL_TEST_EDIT = موجودہ اضافی ٹیسٹس میں ترمیم کرنے کے قابل +UserRight.Desc.ADDITIONAL_TEST_DELETE = سسٹم سے اضافی ٹیسٹس کو مٹانے کے قابل +UserRight.Desc.CONTACT_REASSIGN_CASE = رابطوں کے سورس کیس کو دوبارہ حوالہ دیںے کے قابل +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = بیرونی علامتی جریدے مینج کرنے کے قابل +UserRight.Desc.VISIT_DELETE = سسٹم سے دوروں کو ڈیلیٹ کرنے کے قابل +UserRight.Desc.VISIT_EXPORT = سورماس سے دورے ايکسپورٹ کرنے کے قابل +UserRight.Desc.TASK_DELETE = سسٹم سے کام ڈیلیٹ کرنے کے قابل +UserRight.Desc.TASK_EXPORT = سورماس سے کام ايکسپورٹ کرنے کے قابل +UserRight.Desc.ACTION_CREATE = نئی کاروائیاں بنانے کے قابل +UserRight.Desc.ACTION_DELETE = سسٹم سے کارروائیاں کو ڈیلیٹ کرنے کے قابل +UserRight.Desc.ACTION_EDIT = موجودہ کاروائیوں میں ترمیم کرنے کے قابل +UserRight.Desc.EVENT_IMPORT = تقریبات امپورٹ کرنے کے قابل +UserRight.Desc.EVENT_DELETE = سسٹم سے تقریبات کو مٹانے کے قابل +UserRight.Desc.EVENTPARTICIPANT_DELETE = سسٹم سے تقریب کے شرکاء کو مٹانے کے قابل +UserRight.Desc.EVENTPARTICIPANT_IMPORT = تقریب کے شرکاء کو امپورٹ کرنے کے قابل +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = دستی بیرونی پیغامات بھیجنے کے قابل +UserRight.Desc.STATISTICS_ACCESS = اعدادوشمار تک رسائی حاصل کرنے کے قابل +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = عوامی ايکسپورٹ کنفیگریشنز مینج کرنے کے قابل +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = کیس کے نمونوں پر بلک آپریشنز انجام دینے کے قابل +UserRight.Desc.INFRASTRUCTURE_EXPORT = سورماس سے انفراسٹرکچر ڈیٹا ايکسپورٹ کرنے کے قابل +UserRight.Desc.INFRASTRUCTURE_IMPORT = انفراسٹرکچر ڈیٹا امپورٹ کرنے کے قابل +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = انفراسٹرکچر ڈیٹا آرکائیو کرنے کے قابل +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = ڈیش بورڈ پر کونٹيکٹ ٹرانسمیشن چینز دیکھنے کے قابل +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = مہمات کے ڈیش بورڈ تک رسائی حاصل کرنے کے قابل +UserRight.Desc.CASE_CLINICIAN_VIEW = معالج سے متعلق کیس کے حصوں تک رسائی حاصل کرنے کے قابل +UserRight.Desc.THERAPY_VIEW = موجودہ تھراپیز دیکھنے کے قابل +UserRight.Desc.PRESCRIPTION_CREATE = نئے نسخے بنانے کے قابل +UserRight.Desc.PRESCRIPTION_EDIT = موجودہ نسخوں میں ترمیم کرنے کے قابل +UserRight.Desc.PRESCRIPTION_DELETE = سسٹم سے نسخوں کو مٹانے کرنے کے قابل +UserRight.Desc.TREATMENT_CREATE = نئے علاج بنانے کے قابل +UserRight.Desc.TREATMENT_EDIT = موجودہ علاج میں ترمیم کرنے کے قابل +UserRight.Desc.TREATMENT_DELETE = سسٹم سے علاج مٹانے کے قابل +UserRight.Desc.CLINICAL_COURSE_VIEW = کیسز کے طبی کورس کو دیکھنے کے قابل +UserRight.Desc.CLINICAL_COURSE_EDIT = کیسز کے طبی کورس میں ترمیم کرنے کے قابل +UserRight.Desc.CLINICAL_VISIT_CREATE = نئے طبی دورے بنانے کے قابل +UserRight.Desc.CLINICAL_VISIT_EDIT = موجودہ طبی دوروں میں ترمیم کے قابل +UserRight.Desc.CLINICAL_VISIT_DELETE = سسٹم سے طبی دوروں کو مٹانے کے قابل +UserRight.Desc.PORT_HEALTH_INFO_VIEW = پورٹ صحت کی معلومات دیکھنے کے قابل +UserRight.Desc.PORT_HEALTH_INFO_EDIT = موجودہ پورٹ صحت کی معلومات میں ترمیم کرنے کے قابل +UserRight.Desc.POPULATION_MANAGE = آبادی کے اعداد و شمار مینج کرنے کے قابل +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = دستاویز کے ٹیمپلیٹس مینج کرنے کے قابل +UserRight.Desc.QUARANTINE_ORDER_CREATE = نئے قرنطینہ آرڈرز بنانے کے قابل +UserRight.Desc.LINE_LISTING_CONFIGURE = لائن لسٹنگ کوکنفیگر کرنے کے قابل +UserRight.Desc.AGGREGATE_REPORT_VIEW = نئی مجموعی رپورٹیں بنانے کے قابل +UserRight.Desc.AGGREGATE_REPORT_EXPORT = سورماس سے مجموعی رپورٹیں ايکسپورٹ کرنے کے قابل +UserRight.Desc.AGGREGATE_REPORT_EDIT = موجودہ مجموعی رپورٹس میں ترمیم کرنے کے قابل +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = دائرہ اختیار میں ذاتی ڈیٹا دیکھنے کے قابل +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = دائرہ اختیار کے باہر ذاتی ڈیٹا دیکھنے کے قابل +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = دائرہ اختیار میں حساس ڈیٹا دیکھنے کے قابل +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = دائرہ اختیار کے باہر حساس ڈیٹا دیکھنے کے قابل +UserRight.Desc.CAMPAIGN_VIEW = موجودہ مہمات دیکھنے کے قابل +UserRight.Desc.CAMPAIGN_EDIT = موجودہ مہمات میں ترمیم کرنے کے قابل +UserRight.Desc.CAMPAIGN_ARCHIVE = مہمات کو آرکائیو کرنے کے قابل +UserRight.Desc.CAMPAIGN_DELETE = سسٹم سے مہمات کو مٹانے کے قابل +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = موجودہ مہمات کو ڈیٹا سے دیکھنے کے قابل +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = موجودہ مہمات کو ڈیٹا سے ترمیم کرنے کے قابل +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = مہمات کو ڈیٹا سے آرکائیو کرنے کے قابل +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = سسٹم سے مہم فارم کا ڈیٹا مٹانے کے قابل +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = سورماس سے مہم فارم کا ڈیٹا ايکسپورٹ کرنے کے قابل +UserRight.Desc.BAG_EXPORT = BAG ایکسپورٹ کرنے کے قابل +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = ایک سورماس سے دوسرے میں ڈیٹا کا اشتراک کرنے کے قابل +UserRight.Desc.LAB_MESSAGES = لیب کے پیغامات کو منظم کرنے کے قابل +UserRight.Desc.CASE_SHARE = کیسز پورے ملک کے ساتھ شیئرکرنے کے قابل +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = لیب پیغامات کی فہرست میں بلک آپریشنز انجام دینے کے قابل +UserRight.Desc.IMMUNIZATION_VIEW = موجودہ امیونائزیشن اور ویکسینیشن دیکھنے کے قابل +UserRight.Desc.IMMUNIZATION_CREATE = نئے امیونائزیشن اور ویکسینیشن بنانے کے قابل +UserRight.Desc.IMMUNIZATION_EDIT = موجودہ امیونائزیشن اور ویکسینیشن ترمیم کرنے کے قابل +UserRight.Desc.IMMUNIZATION_DELETE = سسٹم سے امیونائزیشنز اور ویکسینز کو مٹانے کے قابل +UserRight.Desc.IMMUNIZATION_ARCHIVE = امیونائزیشنز کو آرکائیو کرنے کے قابل +UserRight.Desc.PERSON_EXPORT = افراد کو ایکسپورٹ کرنے کے قابل +UserRight.Desc.CONTACT_MERGE = رابطے ضم کرنے کے قابل +UserRight.Desc.EVENTGROUP_CREATE = نئے تقریبات کے گروپس بنانے کے قابل +UserRight.Desc.EVENTGROUP_EDIT = موجودہ تقریبات کے گروپس میں ترمیم کرنے کے قابل +UserRight.Desc.EVENTGROUP_LINK = تقریبات کو تقریب کے گروپس سے لنک کرنے کے قابل +UserRight.Desc.EVENTGROUP_ARCHIVE = تقریبات کے گروپس کو آرکائیو کرنے کے قابل +UserRight.Desc.EVENTGROUP_DELETE = سسٹم سے تقریب کے گروپس کو مٹانے کے قابل +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = تقریب ک ڈائرکٹری میں بلک آپریشنز انجام دینے کے قابل +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = تقریب کے شرکاہ کی ڈائرکٹری میں بلک آپریشنز انجام دینے کے قابل +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = سفری اندراج کی ڈائرکٹری تک رسائی حاصل کرنے کے قابل +UserRight.Desc.TRAVEL_ENTRY_VIEW = موجودہ سفری اندراجات دیکھنے کے قابل +UserRight.Desc.TRAVEL_ENTRY_CREATE = نئے سفری اندراجات بنانے کے قابل +UserRight.Desc.TRAVEL_ENTRY_EDIT = موجودہ سفری اندراجات میں ترمیم کرنے کے قابل +UserRight.Desc.TRAVEL_ENTRY_DELETE = سسٹم سے سفری اندراجات کو مٹانے کے قابل +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = سفری اندراجات آرکائیو کرنے قابل +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = ڈیٹا پروٹیکشن ڈیٹا ایکسپورٹ کرنے قابل +UserRight.Desc.OUTBREAK_VIEW = وباء کے پھیلاو کو دیکھنے کے قابل +UserRight.Desc.OUTBREAK_EDIT = وباء کے پھیلاو میں ترمیم کرنے کے قابل +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = بلک pseudonomization انجام دینے کے قابل +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = سورماس سے سورماس انٹرفیس کے لیے تکنیکی صارف کا حق +UserRight.Desc.SORMAS_REST = SORMAS REST انٹرفیس تک رسائی حاصل کرنے کے قابل +UserRight.Desc.EXTERNAL_VISITS = بیرونی دوروں تک رسائی حاصل کرنے کے قابل REST اینڈ پوائنٹس +UserRight.Desc.SORMAS_UI = SORMAS گرافیکل یوزر انٹرفیس تک رسائی حاصل کرنے کے قابل +UserRight.Desc.DEV_MODE = کنفیگریشن ڈائرکٹری میں ڈویلپر کے اختیارات تک رسائی حاصل کرنے کے قابل # UserRightGroup UserRightGroup.CASE_INVESTIGATION = کیس کی تفتیش @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=عمل شدہ LabMessageStatus.FORWARDED=آگے بڑھایا LabMessageStatus.UNCLEAR=غیر واضح +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=لیب کا پیغام +ExternalMessageType.PHYSICIANS_REPORT=معالج کی رپورٹ + # ShareRequestDataType ShareRequestDataType.CASE = کیس ShareRequestDataType.CONTACT = رابطہ diff --git a/sormas-api/src/main/resources/enum_zh-CN.properties b/sormas-api/src/main/resources/enum_zh-CN.properties index 80d1876d8c2..f1004532a2d 100644 --- a/sormas-api/src/main/resources/enum_zh-CN.properties +++ b/sormas-api/src/main/resources/enum_zh-CN.properties @@ -1,6 +1,6 @@ ############################################################################### # SORMAS® - Surveillance Outbreak Response Management & Analysis System -# Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) +# Copyright © 2016-2022 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 . ############################################################################### -# Enum captions +# Enum captions and descriptions # ActionContext ActionContext.EVENT = Event @@ -1414,6 +1414,7 @@ UserRight.EVENTGROUP_LINK = Link events to event groups UserRight.EVENTGROUP_ARCHIVE = Archive event groups UserRight.EVENTGROUP_DELETE = Delete event groups from the system UserRight.PERFORM_BULK_OPERATIONS_EVENT = Perform bulk operations in the event directory +UserRight.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Perform bulk operations in the event participants directory UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Access the travel entry directory UserRight.TRAVEL_ENTRY_VIEW = View existing travel entries UserRight.TRAVEL_ENTRY_CREATE = Create new travel entries @@ -1423,6 +1424,180 @@ UserRight.TRAVEL_ENTRY_ARCHIVE = Archive travel entries UserRight.EXPORT_DATA_PROTECTION_DATA = Export data protection data UserRight.OUTBREAK_VIEW = View outbreaks UserRight.OUTBREAK_EDIT = Edit outbreaks +UserRight.PERFORM_BULK_OPERATIONS_PSEUDONYM = Perform bulk pseudonomization +UserRight.SORMAS_TO_SORMAS_CLIENT = Sormas to Sormas Client +UserRight.SORMAS_REST = Access Sormas REST +UserRight.EXTERNAL_VISITS = External visits +UserRight.SORMAS_UI = Access Sormas UI +UserRight.DEV_MODE = Access developer options + +# UserRight descriptions +UserRight.Desc.CASE_ARCHIVE = Able to archive cases +UserRight.Desc.CASE_CHANGE_DISEASE = Able to edit case disease +UserRight.Desc.CASE_CHANGE_EPID_NUMBER = Able to edit case epid number +UserRight.Desc.CASE_CLASSIFY = Able to edit case classification and outcome +UserRight.Desc.CASE_CREATE = Able to create new cases +UserRight.Desc.CASE_DELETE = Able to delete cases from the system +UserRight.Desc.CASE_EDIT = Able to edit existing cases +UserRight.Desc.CASE_EXPORT = Able to export cases from SORMAS +UserRight.Desc.CASE_IMPORT = Able to import cases into SORMAS +UserRight.Desc.CASE_INVESTIGATE = Able to edit case investigation status +UserRight.Desc.CASE_TRANSFER = Able to transfer cases to another region/district/facility +UserRight.Desc.CASE_REFER_FROM_POE = Able to refer case from point of entry +UserRight.Desc.CASE_RESPONSIBLE = Can be responsible for a case +UserRight.Desc.CASE_VIEW = Able to view existing cases +UserRight.Desc.CONTACT_ASSIGN = Able to assign contacts to officers +UserRight.Desc.CONTACT_CLASSIFY = Able to edit contact classification +UserRight.Desc.CONTACT_CONVERT = Able to create resulting cases from contacts +UserRight.Desc.CONTACT_CREATE = Able to create new contacts +UserRight.Desc.CONTACT_IMPORT = Able to import contacts +UserRight.Desc.CONTACT_DELETE = Able to delete contacts from the system +UserRight.Desc.CONTACT_EDIT = Able to edit existing contacts +UserRight.Desc.CONTACT_EXPORT = Able to export contacts from SORMAS +UserRight.Desc.CONTACT_RESPONSIBLE = Can be responsible for a contact +UserRight.Desc.CONTACT_VIEW = Able to view existing contacts +UserRight.Desc.CONTACT_ARCHIVE = Able to archive contacts +UserRight.Desc.DASHBOARD_CONTACT_VIEW = Able to access the contact supervisor dashboard +UserRight.Desc.DASHBOARD_SURVEILLANCE_VIEW = Able to access the surveillance supervisor dashboard +UserRight.Desc.DATABASE_EXPORT_ACCESS = Able to export the whole database +UserRight.Desc.EVENT_ARCHIVE = Able to archive events +UserRight.Desc.EVENT_CREATE = Able to create new events +UserRight.Desc.EVENT_EDIT = Able to edit existing events +UserRight.Desc.EVENT_EXPORT = Able to export events from SORMAS +UserRight.Desc.EVENT_RESPONSIBLE = Can be responsible for an event +UserRight.Desc.EVENT_VIEW = Able to view existing events +UserRight.Desc.EVENTPARTICIPANT_CREATE = Able to create new event participants +UserRight.Desc.EVENTPARTICIPANT_EDIT = Able to edit existing event participants +UserRight.Desc.EVENTPARTICIPANT_ARCHIVE = Able to archive event participants +UserRight.Desc.EVENTPARTICIPANT_VIEW = Able to view existing event participants +UserRight.Desc.INFRASTRUCTURE_CREATE = Able to create new regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_EDIT = Able to edit regions/districts/communities/facilities +UserRight.Desc.INFRASTRUCTURE_VIEW = Able to view regions/districts/communities/facilities in the system +UserRight.Desc.PERFORM_BULK_OPERATIONS = Able to perform bulk operations in lists +UserRight.Desc.SAMPLE_CREATE = Able to create new samples +UserRight.Desc.SAMPLE_EDIT = Able to edit existing samples +UserRight.Desc.SAMPLE_EXPORT = Able to export samples from SORMAS +UserRight.Desc.SAMPLE_DELETE = Able to delete samples from the system +UserRight.Desc.SAMPLE_TRANSFER = Able to transfer samples to another lab +UserRight.Desc.SAMPLE_VIEW = Able to view existing samples +UserRight.Desc.SAMPLETEST_CREATE = Able to create new sample tests +UserRight.Desc.SAMPLETEST_EDIT = Able to edit existing sample tests +UserRight.Desc.STATISTICS_EXPORT = Able to export detailed statistics from SORMAS +UserRight.Desc.TASK_ASSIGN = Able to assign tasks to users +UserRight.Desc.TASK_CREATE = Able to create new tasks +UserRight.Desc.TASK_EDIT = Able to edit existing tasks +UserRight.Desc.TASK_VIEW = Able to view existing tasks +UserRight.Desc.USER_CREATE = Able to create new users +UserRight.Desc.USER_EDIT = Able to edit existing users +UserRight.Desc.USER_VIEW = Able to view existing users +UserRight.Desc.VISIT_CREATE = Able to create new visits +UserRight.Desc.VISIT_EDIT = Able to edit existing visits +UserRight.Desc.WEEKLYREPORT_CREATE = Able to create weekly reports +UserRight.Desc.WEEKLYREPORT_VIEW = Able to view weekly reports +UserRight.Desc.CASE_MERGE = Able to merge cases +UserRight.Desc.PERSON_VIEW = Able to view existing persons +UserRight.Desc.PERSON_EDIT = Able to edit existing persons +UserRight.Desc.PERSON_DELETE = Able to delete persons from the system +UserRight.Desc.PERSON_CONTACT_DETAILS_DELETE = Able to delete person contact details +UserRight.Desc.SAMPLE_EDIT_NOT_OWNED = Able to edit samples reported by other users +UserRight.Desc.PATHOGEN_TEST_CREATE = Able to create new pathogen tests +UserRight.Desc.PATHOGEN_TEST_EDIT = Able to edit existing pathogen tests +UserRight.Desc.PATHOGEN_TEST_DELETE = Able to delete pathogen tests from the system +UserRight.Desc.ADDITIONAL_TEST_VIEW = Able to view existing additional tests +UserRight.Desc.ADDITIONAL_TEST_CREATE = Able to create new additional tests +UserRight.Desc.ADDITIONAL_TEST_EDIT = Able to edit existing additional tests +UserRight.Desc.ADDITIONAL_TEST_DELETE = Able to delete additional tests from the system +UserRight.Desc.CONTACT_REASSIGN_CASE = Able to reassign the source case of contacts +UserRight.Desc.MANAGE_EXTERNAL_SYMPTOM_JOURNAL = Able to manage external symptom journal +UserRight.Desc.VISIT_DELETE = Able to delete visits from the system +UserRight.Desc.VISIT_EXPORT = Able to export visits from SORMAS +UserRight.Desc.TASK_DELETE = Able to delete tasks from the system +UserRight.Desc.TASK_EXPORT = Able to export tasks from SORMAS +UserRight.Desc.ACTION_CREATE = Able to create new actions +UserRight.Desc.ACTION_DELETE = Able to delete actions from the system +UserRight.Desc.ACTION_EDIT = Able to edit existing actions +UserRight.Desc.EVENT_IMPORT = Able to import events +UserRight.Desc.EVENT_DELETE = Able to delete events from the system +UserRight.Desc.EVENTPARTICIPANT_DELETE = Able to delete event participants from the system +UserRight.Desc.EVENTPARTICIPANT_IMPORT = Able to import event participants +UserRight.Desc.SEND_MANUAL_EXTERNAL_MESSAGES = Able to send manual external messages +UserRight.Desc.STATISTICS_ACCESS = Able to access statistics +UserRight.Desc.MANAGE_PUBLIC_EXPORT_CONFIGURATION = Able to manage public export configurations +UserRight.Desc.PERFORM_BULK_OPERATIONS_CASE_SAMPLES = Able to perform bulk operations on case samples +UserRight.Desc.INFRASTRUCTURE_EXPORT = Able to export infrastructure data from SORMAS +UserRight.Desc.INFRASTRUCTURE_IMPORT = Able to import infrastructure data +UserRight.Desc.INFRASTRUCTURE_ARCHIVE = Able to archive infrastructure data +UserRight.Desc.DASHBOARD_CONTACT_VIEW_TRANSMISSION_CHAINS = Able to view contact transmission chains on the dashboard +UserRight.Desc.DASHBOARD_CAMPAIGNS_VIEW = Able to access campaigns dashboard +UserRight.Desc.CASE_CLINICIAN_VIEW = Able to access case sections concerned with clinician +UserRight.Desc.THERAPY_VIEW = Able to view existing therapies +UserRight.Desc.PRESCRIPTION_CREATE = Able to create new prescriptions +UserRight.Desc.PRESCRIPTION_EDIT = Able to edit existing prescriptions +UserRight.Desc.PRESCRIPTION_DELETE = Able to delete prescriptions from the system +UserRight.Desc.TREATMENT_CREATE = Able to create new treatments +UserRight.Desc.TREATMENT_EDIT = Able to edit existing treatments +UserRight.Desc.TREATMENT_DELETE = Able to delete treatments from the system +UserRight.Desc.CLINICAL_COURSE_VIEW = Able to view the clinical course of cases +UserRight.Desc.CLINICAL_COURSE_EDIT = Able to edit the clinical course of cases +UserRight.Desc.CLINICAL_VISIT_CREATE = Able to create new clinical visits +UserRight.Desc.CLINICAL_VISIT_EDIT = Able to edit existing clinical visits +UserRight.Desc.CLINICAL_VISIT_DELETE = Able to delete clinical visits from the system +UserRight.Desc.PORT_HEALTH_INFO_VIEW = Able to view port health info +UserRight.Desc.PORT_HEALTH_INFO_EDIT = Able to edit existing port health info +UserRight.Desc.POPULATION_MANAGE = Able to manage population data +UserRight.Desc.DOCUMENT_TEMPLATE_MANAGEMENT = Able to manage document templates +UserRight.Desc.QUARANTINE_ORDER_CREATE = Able to create new quarantine orders +UserRight.Desc.LINE_LISTING_CONFIGURE = Able to configure line listing +UserRight.Desc.AGGREGATE_REPORT_VIEW = Able to create new aggregate reports +UserRight.Desc.AGGREGATE_REPORT_EXPORT = Able to export aggregate reports from SORMAS +UserRight.Desc.AGGREGATE_REPORT_EDIT = Able to edit existing aggregate reports +UserRight.Desc.SEE_PERSONAL_DATA_IN_JURISDICTION = Able to see personal data in jurisdiction +UserRight.Desc.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION = Able to see personal data outside jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_IN_JURISDICTION = Able to see sensitive data in jurisdiction +UserRight.Desc.SEE_SENSITIVE_DATA_OUTSIDE_JURISDICTION = Able to see sensitive data outside jurisdiction +UserRight.Desc.CAMPAIGN_VIEW = Able to view existing campaigns +UserRight.Desc.CAMPAIGN_EDIT = Able to edit existing campaigns +UserRight.Desc.CAMPAIGN_ARCHIVE = Able to archive campaigns +UserRight.Desc.CAMPAIGN_DELETE = Able to delete campaigns from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_VIEW = Able to view existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_EDIT = Able to edit existing campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_ARCHIVE = Able to archive campaign form data +UserRight.Desc.CAMPAIGN_FORM_DATA_DELETE = Able to delete campaign form data from the system +UserRight.Desc.CAMPAIGN_FORM_DATA_EXPORT = Able to export campaign form data from SORMAS +UserRight.Desc.BAG_EXPORT = Able to perform BAG export +UserRight.Desc.SORMAS_TO_SORMAS_SHARE = Able to share data from one SORMAS instance to another +UserRight.Desc.LAB_MESSAGES = Able to manage lab messages +UserRight.Desc.CASE_SHARE = Able to share cases with the whole country +UserRight.Desc.PERFORM_BULK_OPERATIONS_LAB_MESSAGES = Able to perform bulk operations in lab messages list +UserRight.Desc.IMMUNIZATION_VIEW = Able to view existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_CREATE = Able to create new immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_EDIT = Able to edit existing immunizations and vaccinations +UserRight.Desc.IMMUNIZATION_DELETE = Able to delete immunizations and vaccinations from the system +UserRight.Desc.IMMUNIZATION_ARCHIVE = Able to archive immunizations +UserRight.Desc.PERSON_EXPORT = Able to export persons +UserRight.Desc.CONTACT_MERGE = Able to merge contacts +UserRight.Desc.EVENTGROUP_CREATE = Able to create new event groups +UserRight.Desc.EVENTGROUP_EDIT = Able to edit existing event groups +UserRight.Desc.EVENTGROUP_LINK = Able to link events to event groups +UserRight.Desc.EVENTGROUP_ARCHIVE = Able to archive event groups +UserRight.Desc.EVENTGROUP_DELETE = Able to delete event groups from the system +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENT = Able to perform bulk operations in the event directory +UserRight.Desc.PERFORM_BULK_OPERATIONS_EVENTPARTICIPANT = Able to perform bulk operations in the event participants directory +UserRight.Desc.TRAVEL_ENTRY_MANAGEMENT_ACCESS = Able to access the travel entry directory +UserRight.Desc.TRAVEL_ENTRY_VIEW = Able to view existing travel entries +UserRight.Desc.TRAVEL_ENTRY_CREATE = Able to create new travel entries +UserRight.Desc.TRAVEL_ENTRY_EDIT = Able to edit existing travel entries +UserRight.Desc.TRAVEL_ENTRY_DELETE = Able to delete travel entries from the system +UserRight.Desc.TRAVEL_ENTRY_ARCHIVE = Able to archive travel entries +UserRight.Desc.EXPORT_DATA_PROTECTION_DATA = Able to export data protection data +UserRight.Desc.OUTBREAK_VIEW = Able to view outbreaks +UserRight.Desc.OUTBREAK_EDIT = Able to edit outbreaks +UserRight.Desc.PERFORM_BULK_OPERATIONS_PSEUDONYM = Able to perform bulk pseudonomization +UserRight.Desc.SORMAS_TO_SORMAS_CLIENT = Techincal user right for the SORMAS to SORMAS interface +UserRight.Desc.SORMAS_REST = Able to access the SORMAS REST interface +UserRight.Desc.EXTERNAL_VISITS = Able to access external visits REST endpoints +UserRight.Desc.SORMAS_UI = Able to access the SORMAS graphical user interface +UserRight.Desc.DEV_MODE = Able to access developer options in the configuration directory # UserRightGroup UserRightGroup.CASE_INVESTIGATION = Case Investigation @@ -1664,9 +1839,9 @@ ReinfectionStatus.PROBABLE = Probable reinfection ReinfectionStatus.POSSIBLE = Possible reinfection # Vaccine -Vaccine.COMIRNATY=Pfizer–BioNTech COVID‑19 vaccine +Vaccine.COMIRNATY=Pfizer-BioNTech COVID-19 vaccine Vaccine.MRNA_1273=Moderna COVID-19 Vaccine -Vaccine.OXFORD_ASTRA_ZENECA=Oxford–AstraZeneca COVID-19 vaccine +Vaccine.OXFORD_ASTRA_ZENECA=Oxford-AstraZeneca COVID-19 vaccine Vaccine.AD26_COV2_S=Ad26.COV2.S Vaccine.NVX_COV_2373=Novavax COVID-19 vaccine Vaccine.SANOFI_GSK=Sanofi-GSK @@ -1730,6 +1905,10 @@ LabMessageStatus.PROCESSED=Processed LabMessageStatus.FORWARDED=Forwarded LabMessageStatus.UNCLEAR=Unclear +# ExternalMessageType +ExternalMessageType.LAB_MESSAGE=Lab message +ExternalMessageType.PHYSICIANS_REPORT=Physician's report + # ShareRequestDataType ShareRequestDataType.CASE = Case ShareRequestDataType.CONTACT = Contact diff --git a/sormas-api/src/main/resources/strings.properties b/sormas-api/src/main/resources/strings.properties index 24aa6d62d4f..05e33b0b363 100644 --- a/sormas-api/src/main/resources/strings.properties +++ b/sormas-api/src/main/resources/strings.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -303,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -646,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -1158,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1174,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1379,11 +1381,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_ar-SA.properties b/sormas-api/src/main/resources/strings_ar-SA.properties new file mode 100644 index 00000000000..36faa2d42b2 --- /dev/null +++ b/sormas-api/src/main/resources/strings_ar-SA.properties @@ -0,0 +1,1437 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2021 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 . +############################################################################### + +# Any text presented to the user that is not a caption or can be used in +# various places (e.g. as part of a larger text or caption) + +# General Strings +active = Active +address = Address +and = and +at = at +between = between +bpm = bpm +by = by +comparedTo = compared to %s +done = Done +edit = Edit +epiWeek = Epi Week +fileName = File Name +forCase = for case +forContact = for contact +forEventParticipant = for event participant +inactive = Inactive +inColumn = in column +lastTwoDays = last two days +lastTwoWeeks = last two weeks +lastTwoYears = last two years +lastWeek = last week +lastYear = last year +mmhg = mmHg +no = No +notAnswered = Not answered +of = of +on = on +or = or +pleaseSpecify = Please specify +previousPeriod = previous period +quarantineEnd = Quarantine ends at the end of follow-up +quarterShort = Q +reportedBy = Reported By +reportedOn = Reported on +step = Step +setTo = Set to +toCase = to case +notSpecified = Not specified +week = Week +weekShort = Wk +year = Year +years = years +yes = Yes +yesterday = yesterday +none = None +total = Total +until = until +min = Min +max = Max +average = Average +month = Month +day = Day +text = Text +number = Number +date = Date +nameOf = Name of %s +uuidOf = UUID of %s +listOf = List of %s +mapOf = Map of <%s , %s> + +# Aggregate Report +aggregateReportLegend = %s \= %s; %s \= %s; %s \= %s + +# Classification +classificationAllOf = all of +classificationClassificationRules = SORMAS Case Classification Rules +classificationConfirmed = Confirmed Classification +classificationConfirmedNoSymptoms = Confirmed Classification - No symptoms +classificationConfirmedUnknownSymptoms = Confirmed Classification - Unknown symptoms +classificationCriteriaForTestType = for test type +classificationCriteriaForExposureType = for exposure type +classificationDaysBeforeCaseStart = days before symptom onset/case report date +classificationEventCluster = Case linked to a cluster event +classificationForDisease = for +classificationGeneratedFor = Generated for SORMAS +classificationInfoText = ... when the case meets the following requirements\:
+classificationInfoNumberText = ... when the case meets %s of the following requirements\:
+classificationNoneOf = none of +classificationNotWithin = not within +classificationOneNegativeTestResult = One negative lab result +classificationOneOf = one of +classificationOnePositiveTestResult = One positive lab result of +classificationOneOtherPositiveTestResult = One other positive lab result +classificationPersonAged = Person aged +classificationNotACase = Not a case Classification +classificationProbable = Probable Classification +classificationRulesFor = Classification Rules For +classificationSymptomsAllOf = All symptoms +classificationSymptomsAnyOf = Any symptom +classificationSuspect = Suspect Classification +classificationYearsOrLess = years or less +classificationYearsOrMore = years or more +classificationLastVaccinationDateWithin = Last vaccination date within + +# Confirmation +confirmationAlsoAdjustQuarantine = You have extended the follow-up. Should the end of the quarantine be adjusted accordingly? +confirmationArchiveCampaign = Are you sure you want to archive this campaign? This will not remove it from the system or any statistics, but only hide it from the normal campaign directory. +confirmationArchiveCase = Are you sure you want to archive this case? This will not remove it from the system or any statistics, but only hide it from the normal case directory. +confirmationArchiveCaseWithContacts = Archive related contacts along with the archived case +confirmationDearchiveCaseWithContacts = Dearchive related contacts along with the dearchived case +confirmationArchiveCases = Are you sure you want to archive all %d selected cases? +confirmationArchiveContact = Are you sure you want to archive this contact? This will not remove it from the system or any statistics, but only hide it from the normal contact directory. +confirmationArchiveEvent = Are you sure you want to archive this event? This will not remove it from the system or any statistics, but only hide it from the normal event directory. +confirmationArchiveEvents = Are you sure you want to archive all %d selected events? +confirmationArchiveEventParticipant = Are you sure you want to archive this event participant? This will not remove it from the system or any statistics, but only hide it from the list of event participants. +confirmationArchiveImmunization = Are you sure you want to archive this immunization? This will not remove it from the system or any statistics, but only hide it from the normal immunization directory. +confirmationArchiveTask = Are you sure you want to archive all %d selected tasks? +confirmationArchiveTasks = Are you sure you want to archive this task? This will not remove it from the system or any statistics, but only hide it from the normal task management. +confirmationArchiveTravelEntry = Are you sure you want to archive this travel entry? This will not remove it from the system or any statistics, but only hide it from the normal travel entry directory. +confirmationArchiveEventGroup = Are you sure you want to archive this event group? This will not remove it from the system or any statistics, but only hide it from the normal event group directory. +confirmationCancelFollowUp = Are you sure you want to cancel the follow-up of all %d selected contacts? +confirmationChangeCaseDisease = Really change case disease? +confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. +confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. +confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. +confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? +confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. +confirmationDearchiveEventGroup = Are you sure you want to de-archive this event group? This will make it appear in the normal event group directory again. +confirmationDeleteCases = Are you sure you want to delete all %d selected cases? +confirmationDeleteContacts = Are you sure you want to delete all %d selected contacts? +confirmationDeleteEntity = Are you sure you want to delete this %s? This action can not be reversed. +confirmationDeleteEventParticipants = Are you sure you want to delete all %d selected event participants? +confirmationDeleteEvents = Are you sure you want to delete all %d selected events? +confirmationDeleteTravelEntries = Are you sure you want to delete all %d selected travel entries? +confirmationDeleteFile = Are you sure you want to delete "%s"? +confirmationDeletePathogenTests = Are you sure you want to delete all %d selected pathogen tests? +confirmationDeletePrescriptions = Are you sure you want to delete all %d selected prescriptions? +confirmationDeleteSamples = Are you sure you want to delete all %d selected samples? +confirmationDeleteTasks = Are you sure you want to delete all %d selected tasks? +confirmationDeleteTreatments = Are you sure you want to delete all %d selected treatments? +confirmationDeleteVisits = Are you sure you want to delete all %d selected visits? +confirmationLostToFollowUp = Are you sure you want to set the follow-up of all %d selected contacts to lost to follow-up? +confirmationPickCaseAndDeleteOther = Are you sure that the case you did not select is a duplicate of this case? The case you did not select and all contacts, samples, tasks and other data linked to it will be deleted. +confirmationPickContactAndDeleteOther = Are you sure that the contact you did not select is a duplicate of this contact? The contact you did not select and all samples, tasks and other data linked to it will be deleted. +confirmationMergeCaseAndDeleteOther = Are you sure that the case you did not select is a duplicate of this case? The case you selected will be updated with information from the case you did not select, and the latter will then be deleted. +confirmationMergeContactAndDeleteOther = Are you sure that the contact you did not select is a duplicate of this contact? The contact you selected will be updated with information from the contact you did not select, and the latter will then be deleted. +confirmationUpdateCompleteness = Are you sure you want to update the completeness values of all cases in the list? This might take some time. +confirmationEnterBulkEditMode = There are currently more than %d items in the list. It is recommended to use some filters first because entering bulk edit mode with this many items might slow down your system. Do you still want to proceed? +confirmationDisableAllLineListingRegion = Are you sure you want to disable line listing for this disease? Line listing will be canceled for all districts. +confirmationDisableAllLineListingNational = Are you sure you want to disable line listing for this disease? Line listing will be canceled for all districts in all regions. +confirmationArchiveArea = Are you sure you want to archive this area? +confirmationDearchiveArea = Are you sure you want to de-archive this area? +confirmationArchiveContinent = Are you sure you want to archive this continent? +confirmationDearchiveContinent = Are you sure you want to de-archive this continent? +confirmationArchiveSubcontinent = Are you sure you want to archive this subcontinent? +confirmationDearchiveSubcontinent = Are you sure you want to de-archive this subcontinent? +confirmationArchiveCountry = Are you sure you want to archive this country? +confirmationDearchiveCountry = Are you sure you want to de-archive this country? +confirmationArchiveRegion = Are you sure you want to archive this region? +confirmationDearchiveRegion = Are you sure you want to de-archive this region? +confirmationArchiveDistrict = Are you sure you want to archive this district? +confirmationDearchiveDistrict = Are you sure you want to de-archive this district? +confirmationArchiveCommunity = Are you sure you want to archive this community? +confirmationDearchiveCommunity = Are you sure you want to de-archive this community? +confirmationArchiveFacility = Are you sure you want to archive this facility? +confirmationDearchiveFacility = Are you sure you want to de-archive this facility? +confirmationArchiveLaboratory = Are you sure you want to archive this laboratory? +confirmationDearchiveLaboratory = Are you sure you want to de-archive this laboratory? +confirmationArchivePointOfEntry = Are you sure you want to archive this point of entry? +confirmationDearchivePointOfEntry = Are you sure you want to de-archive this point of entry? +confirmationArchiveAreas = Are you sure you want to archive all %d selected areas? +confirmationDearchiveAreas = Are you sure you want to de-archive all %d selected areas? +confirmationArchiveContinents = Are you sure you want to archive all %d selected continents? +confirmationDearchiveContinents = Are you sure you want to de-archive all %d selected continents? +confirmationArchiveSubcontinents = Are you sure you want to archive all %d selected subcontinents? +confirmationDearchiveSubcontinents = Are you sure you want to de-archive all %d selected subcontinents? +confirmationArchiveCountries = Are you sure you want to archive all %d selected countries? +confirmationDearchiveCountries = Are you sure you want to de-archive all %d selected countries? +confirmationArchiveRegions = Are you sure you want to archive all %d selected regions? +confirmationDearchiveRegions = Are you sure you want to de-archive all %d selected regions? +confirmationArchiveDistricts = Are you sure you want to archive all %d selected districts? +confirmationDearchiveDistricts = Are you sure you want to de-archive all %d selected districts? +confirmationArchiveCommunities = Are you sure you want to archive all %d selected communities? +confirmationDearchiveCommunities = Are you sure you want to de-archive all %d selected communities? +confirmationArchiveFacilities = Are you sure you want to archive all %d selected facilities? +confirmationDearchiveFacilities = Are you sure you want to de-archive all %d selected facilities? +confirmationDearchiveImmunization = Are you sure you want to de-archive this immunization? This will make it appear in the normal immunization directory again. +confirmationArchiveLaboratories = Are you sure you want to archive all %d selected laboratories? +confirmationDearchiveLaboratories = Are you sure you want to de-archive all %d selected laboratories? +confirmationDearchiveTask = Are you sure you want to de-archive this task? This will make it appear in the normal task directory again. +confirmationDearchiveTasks = Are you sure you want to de-archive all %d selected tasks? +confirmationDearchiveTravelEntry = Are you sure you want to de-archive this travel entry? This will make it appear in the normal travel entry directory again. +confirmationArchivePointsOfEntry = Are you sure you want to archive all %d selected points of entry? +confirmationDearchivePointsOfEntry = Are you sure you want to de-archive all %d selected points of entry? +confirmationContactSourceCaseDiscardUnsavedChanges = Changing or removing the source case of a contact will discard all unsaved changes you have made to the contact. Are you sure you want to continue? +confirmationRemoveUserAsOfficer = The user roles of this user have changed. Saving this user will remove it from any case or contact that they are assigned to as surveillance officer or contact officer. Do you still want to save the user? +confirmationExtendQuarantine=Are you sure you want to extend the quarantine? +confirmationReduceQuarantine=Are you sure you want to reduce the quarantine? +confirmationExtendFollowUp=Would you also want the follow-up period to be extended accordingly? +confirmationRemoveGridRowTitle=Confirm remove +confirmationRemoveGridRowMessage=Are you sure you want to remove this row? +confirmationRemoveGridRowConfirm=Yes +confirmationRemoveGridRowCancel=No +confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. +confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? +confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? +confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? +confirmationDeleteLabMessages = Are you sure you want to delete all %d selected lab messages? +confirmationUnclearLabMessage = Are you sure you want to mark this lab message as unclear? +confirmationManuallyForwardedLabMessage = Are you sure you want to mark this lab message as forwarded? +confirmationFetchLabMessages = Another user seems to be fetching lab messages at the moment. If you choose to proceed, this may result in duplicate lab messages. Are you sure you want to proceed? +confirmationRejectSormasToSormasShareRequest = Are you sure you want to reject the share request? +confirmationEnableUsers = Are you sure you want to enable all %d selected users? +confirmationDisableUsers = Are you sure you want to disable all %d selected users? +confirmationRevokeSormasToSormasShareRequest = Are you sure you want to revoke the share request? +confirmationSinceLabMessages = This is the first time lab messages will be fetched. Do you want to select the start date from which to fetch lab messages? If you select no, all lab messages will be retrieved. +confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. +confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? +confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? + +# Entities +entityAction=Action +entityActions=Actions +entityActivityAsCase = Activity as Case +entityAdditionalTest=Additional test +entityAdditionalTests=Additional tests +entityBurial=Burial +entityCampaign=Campaign +entityCampaigns=Campaigns +entityCase=Case +entityCases=Cases +entityClinicalVisit=Clinical assessment +entityClinicalVisits=Clinical assessments +entityContact=Contact +entityContacts=Contacts +entityDistrict=District +entityDistricts=Districts +entityDocuments=Documents +entityEvent=Event +entityEvents=Events +entityEventGroup=Event group +entityEventGroups=Event groups +entityEventParticipant=Event participant +entityEventParticipants=Event participants +entityGathering = Social event +entityImmunization = Immunization +entityImmunizations = Immunizations +entityPathogenTests = Pathogen tests +entityPrescription = Prescription +entityPrescriptions = Prescriptions +entityQuarantineOrder = Quarantine Order +entityRegion = Region +entityRegions = Regions +entitySample = Sample +entitySamples = Samples +entityTask = Task +entityTasks = Tasks +entityTravel = Travel +entityTravelEntries = Travel Entries +entityTreatment = Treatment +entityTreatments = Treatments +entityUser = User +entityExposure = Exposure +entityCampaignData = Campaign Data +entityCampaignDataForm=campaign data form +entityStatistics = Statistics +entityAreas = Areas +entityCountries = Countries +entityPointsOfEntry = Points of entry +entityAggregateReports = Aggregate Reports +entityContactFollowUps = Contact follow ups +entityBagCases = BAG cases +entityBagContacts = BAG contacts +entityCaseVisits = Case visits +entityContactVisits = Contact visits +entityEventActions = Events actions +entityCaseManagement = Case management +entityCommunities = Communities +entityFacilities = Facilities +entityPersonContactDetail = Person contact details +entityUserRoles = User roles +entityDataDictionary= Data dictionary +entityDataProtectionDictionary= Data protection dictionary +entityPersons = Persons +entityVaccinations = Vaccinations + +# Error Messages +errorAccessDenied=You do not have the required rights to view this page. +errorEntityOutdated=The data could not be saved because it has been changed in the meantime. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. +errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. +errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. +errorNoAccessToWeb=Your user account does not have access to the web application +errorNotRequiredRights=You do not have the required rights to perform this action. +errorOccurred = An error has occurred +errorProblemOccurred = A problem has occurred +errorViewNotFound = You tried to navigate to a view (%s) that does not exist. +errorWasReported = An unexpected error occurred. Please contact your supervisor or administrator and inform them about it. +errorInvalidValue = Invalid value +errorCaseDuplicateDeletion = The duplicate case could not be deleted due to an internal error. +errorCaseMerging = The cases could not be merged due to an internal error. +errorContactDuplicateDeletion = The duplicate contact could not be deleted due to an internal error. +errorContactMerging = The contacts could not be merged due to an internal error. +errorSormasToSormasShare = The data could not be shared due to some errors. +errorSormasToSormasRequestToken = Could not request token. +errorSormasToSormasServerAccess = The selected health department is not configured. Please contact an admin and tell them about this issue. +errorSormasToSormasSend = Unexpected error occurred while sharing. Please contact an admin and tell them about this issue. +errorSormasToSormasConnection = Connection refused by the target health department. +errorSormasToSormasResult = Unexpected error occurred while getting share result. Please contact the recipient health department and tell them about this issue. Please also contact your admin and tell them about this issue. +errorSormasToSormasCertNotGenerated = Sormas to sormas certificate is not yet generated. Please contact an admin and tell them about this issue. +errorSormasToSormasEncrypt = Could not encrypt the data. Please contact an admin and tell them about this issue. +errorSormasToSormasDecrypt = Could not decrypt the shared data. Please contact an admin and tell them about this issue. +errorSormasToSormasAccept = The share request could not be accepted. Please contact the sender health department and tell them about this issue. Please also contact your admin and tell them about this issue. +errorSormasToSormasDeleteFromExternalSurveillanceTool = Failed to delete entities from external surveillance tool. +errorSormasToSormasInvalidRequestMethod = Invalid HTTP verb used +errorSormasToSormasLoadShares = Failed to load shares +errorSormasToSormasRevokeNotPending = The request can not be revoked because it is already accepted or rejected. +errorSormasToSormasAcceptNotPending = The request can not be accepted because it is already rejected or revoked. +errorSormasToSormasRejectNotPending = The request can not be rejected because it is already accepted or revoked. +errorSormasToSormasUpdateNotPending = The request can not be updated because it is already accepted or revoked. +errorQuarantineOnlySupportedEntities = Quarantine can only be issued for cases, contacts, event participants and travel entries. +errorQuarantineBulkOnlySupportedEntities = Bulk quarantine can only be issued for cases, contacts, event participants. +errorCreatingTemplateDirectory = Could not create template directory. +errorDeletingDocumentTemplate = Error deleting document template +errorDeletingDocument = Error deleting document +errorDocumentGeneration = Error while generating document\: %s +errorDocumentGenerationMultipleDiseasses = The selected entries has different diseases. +errorIllegalFilename = Illegal file name\: %s +errorFileNotFound = File '%s' not found +errorReadingTemplate = Error reading template '%s' +errorReadingDocument = Error reading document '%s' +errorProcessingTemplate = Error processing template. +errorTemplateFileCorrupt = The template file is corrupt. +errorWritingTemplate = Could not write template file. +errorCampaignDiagramTotalsCalculationError=At least part of the percentage values for the diagram '%s' could not be calculated. Please check the diagram definitions for errors. +errorNoPopulationDataLocations=No population data was found for the following locations\: %s +errorNoPopulationDataFound=There is no population data available. Switching to absolute data view +errorFormIdPopulationAgeGroup=Both "Form Id" and "Population Age Group" options are set +errorExternalSurveillanceToolNonCoronavirusCase=Could not send the selected cases to the reporting tool because the case %s is not a %s case. +errorExternalSurveillanceToolCasesNotSharable=%d of the selected cases can not be sent to the external reporting tool.
Please make sure that all of the cases below are owned and allowed to be shared with the external reporting tool. Then, re-try sending or only send the ones that can be sent. +errorExternalSurveillanceToolNonClusterEvent=Could not send the selected events to the reporting tool because the event %s is not a %s cluster. +errorExternalSurveillanceToolEventNotOwned=%d of the selected events can not be sent to the external reporting tool.
Please make sure that all of the events below are owned. Then, re-try sending or only send the ones that can be sent. +errorEventFromAnotherJurisdiction = The event is related to a jurisdiction you don't have access to +errorEventUnlinkEventGroupFromAnotherJurisdiction = The event group has an event related to a jurisdiction you don't have access to +errorCaseNotEditable = This case is not editable anymore +errorEntityNotEditable = This entity is not editable anymore +errorCampaignNotEditable = This campaign is not editable anymore +errorContactNotEditable = This contact is not editable any more +errorEventNotEditable = This event is not editable any more +errorEventParticipantNotEditable = This event participant is not editable any more +errorSampleNotEditable = This sample is not editable any more +errorImmunizationNotEditable = This immunization is not editable any more +errorForbidden = Access to the specified resource has been forbidden. Please contact your supervisor or administrator and inform them about it +errorNoRightsForChangingField = You have no rights for changing %s +errorNoRightsForChangingMultipleFields = You have no rights for changing %s and related fields + +# headings +headingAccessDenied = Access denied +headingActivityAsCase = Activity as Case +headingAdditionalTests = Additional tests +headingAllContacts = All Contacts +headingAnimalContacts = Animal Contacts +headingArchiveCampaign = Archive Campaign +headingArchiveCase = Archive case +headingArchiveContact = Archive contact +headingArchiveEvent = Archive event +headingArchiveEventParticipant = Archive event participant +headingArchiveEventGroup = Archive event group +headingArchiveImmunization = Archive immunization +headingArchiveTravelEntry = Archive travel entry +headingCampaignBasics = Campaign basics +headingCampaignData = Campaign data +headingCampaignDashboard = Campaign dashboard +headingCaseData = Case data +headingCaseFatalityRate=Case Fatality Rate +headingCaseFound = Case found +headingCaseImport = Case Import +headingPointOfEntryImport = Point of Entry Import +headingCaseStatusMap = Case Status Map +headingCasesArchived = Cases archived +headingCasesDearchived = Cases de-archived +headingCasesDeleted = Cases deleted +headingCaseConversion = Conversion to case +headingChangeCaseDisease = Change case disease +headingCasesGuide = Guide\: Case Directory +headingCasesSentToExternalSurveillanceTool=Cases sent to the reporting tool +headingChangePathogenTestResult = Change pathogen test result +headingClinicalMeasurements = Clinical measurements +headingClinicalVisitsDeleted = Clinical assessments deleted +headingComplications = Complications +headingConfirmArchiving = Confirm archiving +headingConfirmDearchiving = Confirm de-archiving +headingConfirmDeletion = Confirm Deletion +headingConfirmMerging = Confirm Merging +headingConfirmUpdateCompleteness = Update completeness values +headingContactData = Contact data +headingContactsArchived = Contacts archived +headingConfirmEnabling = Confirm enabling +headingConfirmDisabling = Confirm disabling +headingUnderFollowUp = Under Follow-up +headingContactInformation = Contact information +headingContactMap = Contact Map +headingContactsDeleted = Contacts deleted +headingCreateAdditionalTest = Create new additional test results +headingCreateEntry = Create entry +headingCreateNewAction = Create new action +headingCreateNewAggregateReport = Create a new aggregated report +headingCreateNewCampaign = Create new campaign +headingCreateNewCase = Create new case +headingCreateNewCaseIssue = Case creation issue +headingCreateNewClinicalVisit = Create new clinical assessment +headingCreateNewContact = Create new contact +headingCreateNewContactIssue = Contact creation issue +headingCreateNewTravelEntry=Create new travel entry +headingCreateNewEvent = Create new event +headingCreateNewEventParticipant = Add new event participant +headingCreateNewEventGroup = Create new event group +headingCreateNewFacility = Create new facility +headingCreateNewImmunization = Create new immunization +headingCreateNewPerson = Create new person +headingCreateNewPrescription = Create new prescription +headingCreateNewSample = Create new sample +headingCreateNewTask = Create new task +headingCreateNewTaskQuestion = Create new task? +headingCreateNewTreatment = Create new treatment +headingCreateNewUser = Create new user +headingCreateNewVisit = Create new visit +headingCreatePathogenTestResult = Create new pathogen test result +headingDatabaseExportFailed = Database export failed +headingDearchiveCampaign = De-Archive campaign +headingDearchiveCase = De-Archive case +headingDearchiveContact = De-Archive contact +headingDearchiveEvent = De-Archive event +headingDearchiveEventParticipant = De-Archive event participant +headingDearchiveEventGroup = De-Archive event group +headingDearchiveImmunization = De-Archive immunization +headingDearchiveTravelEntry = De-Archive travel entry +headingDefineOutbreakDistricts = Define which districts currently are affected by an outbreak. +headingDownloadDocumentTemplateGuide = Download the SORMAS Document Template Guide +headingDownloadImportTemplate = Download the Import Template +headingDownloadErrorReport = Download Error Report +headingDownloadImportGuide = Download the SORMAS Import Guide and Data Dictionary +headingEditAction = Edit action +headingEditAdditionalTest = Edit additional test results +headingEditAggregateReport = Edit aggregated report +headingEditAssignee = Edit assignee +headingEditCampaign = Edit campaign +headingEditCases = Edit cases +headingEditClinicalVisit = Edit clinical assessment +headingEditContacts = Edit contacts +headingEditEventParticipant = Edit person +headingEditEvents = Edit events +headingEditPathogenTestResult = Edit pathogen test result +headingEditPrescription = Edit prescription +headingEditTask = Edit task +headingEditTreatment = Edit treatment +headingEditUser = Edit user +headingEditVisit = Edit visit +headingEditCountry = Edit country +headingEditContinent = Edit continent +headingEditSample = Edit sample +headingEditSubcontinent = Edit subcontinent +headingEnvironmentalExposure = Environmental Exposure +headingEpiCurve = Epidemiological Curve +headingErrorReportNotAvailable = Error report not available +headingEventData = Event data +headingEventGroupData = Event group data +headingEventParticipantsDeleted = Event participants deleted +headingEventParticipantResponsibleJurisdictionUpdated = Event participant jurisdiction update +headingEventJurisdictionUpdated = Event jurisdiction update +headingEventsArchived = Events archived +headingEventsDearchived = Events de-archived +headingEventsDeleted = Events deleted +headingEventsSentToExternalSurveillanceTool = Events sent to the reporting tool +headingExportFailed = Export failed +headingFatalities=Fatalities +headingFileExists = Duplicate File +headingFilters = Filters +headingFollowUpCanceled = Follow-up canceled +headingStoppedFollowUp = Stopped Follow-up +headingFollowUpStatus = Follow-up status +headingFollowUpStatusChanged = Follow-up status changed +headingHealthConditions = Pre-existing conditions +headingHospitalization = Current Hospitalization +headingPreviousHospitalizations = Previous Hospitalizations +headingImportCaseContacts = Import Case Contacts +headingImportCases = Import Cases +headingImportCommunities = Import Communities +headingImportContacts = Import Contacts +headingImportCampaign = Import campaign form data +headingImportCsvFile = Import CSV File +headingImportDistricts = Import Districts +headingImportError = Import error +headingImportEvent = Import events +headingImportEventParticipant = Import event participants +headingImportedCaseInfo = Imported Case Information +headingImportedPersonInfo = Imported Person Information +headingImportFailed = Import failed +headingImportFacilities = Import Facilities +headingImportPointsOfEntry = Import Points of Entry +headingImportPopulationData = Import Population Data +headingImportContinents = Import Continents +headingImportSubcontinents = Import subcontinents +headingImportCountries = Import Countries +headingImportAllCountries = Import Default Countries +headingImportAllContinents = Import Default Continents +headingImportAllSubcontinents = Import Default Subcontinents +headingImportAreas = Import Areas +headingImportRegions= Import Regions +headingImportTravelEntries = Import Travel Entries +headingInformationSource = Source of Information +headingInfrastructureLocked = Infrastructure locked +headingIntroduction = Introduction +headingLaboratorySample = Laboratory sample +headingLastReportedDistrict=Last reported district +headingLineListing = Line listing +headingLineListingImport = Line listing import +headingLocation = Location +headingLoginFailed = Login failed +headingMaternalHistory = Maternal history +headingMedicalInformation = Additional medical information +headingMissingDateFilter = Missing date filter +headingMyTasks = My Tasks +headingNewAccount = New account +headingNewCases = New Cases +headingNewEvents = New Events +headingNewPassword = New password +headingNewTestResults = New Test Results +headingNoCasesSelected = No cases selected +headingNoClinicalVisitsSelected = No clinical assessments selected +headingNoContactsSelected = No contacts selected +headingNoEventParticipantsSelected = No event participants selected +headingNoEventsSelected = No events selected +headingNoTravelEntriesSelected = No travel entries selected +headingNoFile = No file +headingNoPathogenTestsSelected = No pathogen tests selected +headingNoPrescriptionsSelected = No prescriptions selected +headingNoSamplesSelected = No samples selected +headingNoTasksSelected = No tasks selected +headingNoTreatmentsSelected = No treatments selected +headingNoVisitsSelected = No visits selected +headingNoUsersSelected = No users selected +headingOutbreakDistricts=Outbreak Districts +headingOutbreakIn = Outbreak in +headingPathogenTestsDeleted = Pathogen tests deleted +headingPaperFormDates = Reception dates of paper form +headingPersonData = Person data +headingPersonInformation = Person information +headingPersonOccupation = Occupation & education +headingPickOrCreateCase = Pick or Create a Case +headingPickOrCreatePerson = Pick or create person +headingSelectPerson = Select person +headingPickOrCreateEvent = Pick or create event +headingPickOrCreateEventGroup = Pick or create event group +headingPickOrCreateEntry = Pick or create entry +headingPickOrCreateImmunization = Pick or create immunization +headingPickOrCreatePathogenTest = Pick or create pathogen test +headingPickOrCreateSample = Pick or create sample +headingPointOfEntryInformation = Point of entry information +headingPrescriptionsDeleted = Prescriptions deleted +headingRecovery = Recovery +headingReferSample = Refer sample to another laboratory +headingRequestedAdditionalTests = Requested additional tests\: +headingRequestedPathogenTests = Requested pathogen tests\: +headingResponsibleJurisdiction=Responsible jurisdiction +headingResults = Results +headingSamplesDeleted = Samples deleted +headingSaveNotification = Save notification +headingSecurityAlert=Security Alert +headingSelectCampaign = Select a campaign +headingSetOutbreakStatus = Set status of all districts\: +headingShowLabMessage = Lab message +headingSignsAndSymptoms = Clinical Signs and Symptoms +headingSimilarImmunization = Similar immunizaton +headingSyncUsers = Sync Users +headingTasksArchived = Tasks archived +headingTasksDearchived = Tasks de-archived +headingTasksDeleted = Tasks deleted +headingTemplateNotAvailable = Template not available +headingTests = Pathogen tests +headingTransferCase = Transfer case +headingTravelEntryData = Travel entry data +headingTravelEntriesDeleted = Travel entries deleted +headingReferCaseFromPointOfEntry = Refer case from point of entry +headingTreatments = Executed treatments +headingTreatmentsDeleted = Treatments deleted +headingUpdatePassword = Update password +headingUploadSuccess = Upload Successful +headingUserData = User data +headingVaccination = Vaccination +headingViewNotFound = The view could not be found +headingVisits = Visits +headingVisitsDeleted = Visits deleted +headingVisualization = Visualization +headingWrongFileType = Wrong file type +headingMissingEpiWeekFilter = Missing epi week filter +headingMergeGuide = Guide\: Merging Duplicate Cases +headingContactMergeGuide = Guide\: Merging Duplicate Contacts +# %d: 1 or 2; %s: Person name +headingComparisonCase = Case %d\: %s +headingCaseComparison = Case Comparison +headingConfirmChoice = Confirm Your Choice +headingHowToMergeCases = How to Merge Cases +headingHowToMergeContacts = How to Merge Contacts +headingExplanationOfTerms = Explanation of Terms +headingCompleteness = Completeness +headingDataImport = Data import +headingDisableLineListing = Disable Line Listing? +headingEditLineListing = Edit Line Listing +headingInvalidDateEntered = Invalid Date Entered +headingArchivingNotPossible = Archiving not possible +headingDearchivingNotPossible = De-archiving not possible +headingNoRowsSelected = No rows selected +headingUserSettings = User Settings +headingContactsPerCase = Contacts per Case +headingQuarantineForCases = Quarantine data for cases +headingCasesResultingFromContacts = Cases resulting from contacts +headingcasesWithReferenceDefinitionFulfilled = Cases with reference definition fulfilled +headingCasesInQuarantine = Cases in Quarantine +headingCasesPlacedInQuarantine = Cases placed in Quarantine +headingContactsInQuarantine = Contacts in Quarantine +headingContactsPlacedInQuarantine = Contacts placed in Quarantine +headingContactsCancelFollowUp = Confirm canceling follow-up for contacts +headingContactsLostToFollowUp = Confirm setting contacts to lost to follow-up +headingPickOrCreateContact = Pick or create contact +headingNewSourceCases = New Cases not Previously Known to Be Contacts +headingNoCaseFound = No case found +headingNoEventFound = No event found +headingEventNotDeleted = Event not deleted +headingSomeCasesNotDeleted = Some cases were not deleted +headingSomeEventsNotDeleted = Some events were not deleted +headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed +headingSelectSourceCase = Select Source Case +headingRemoveCaseFromContact = Remove Case from Contact +headingDiscardUnsavedChanges = Discard Unsaved Changes +headingGenerateCases = Generate Cases +headingGenerateContacts = Generate Contacts +headingContactDataNotComplete = Contact data is not complete +headingSymptomJournalAccountCreation = PIA +headingSaveUser = Save User +headingCreateCampaignDataForm = New %s +headingExtendQuarantine = Extend quarantine +headingReduceQuarantine = Reduce quarantine +headingAdjustQuarantine = Adjust quarantine +headingExtendFollowUp = Extend follow-up period +headingExposureInvestigation = Exposure Investigation +headingEpiDataSourceCaseContacts = Contacts with Source Case +headingExposureDetails = Exposure Details +headingAnimalContactDetails = Animal Contact Details +headingBurialDetails = Burial Details +headingCampaignFormDataDuplicateNew = New Campaign Form Data +headingCampaignFormDataDuplicateExisting = Existing Campaign Form Data +headingCampaignFormDataAlreadyExisting = Campaign Form Data Already Existing +headingActivityAsCaseDetails = Activity as Case Details +headingUnlinkCaseFromEvent = Unlink case from event +headingUpdatePersonContactDetails = Update existing person contact details +headingEventGroupLinkEventIssue = Issue while linking event from event group +headingEventGroupUnlinkEventIssue = Issue while unlinking event from event group +headingExportUserRightsFailed = Export user rights failed +headingLabMessageDownload = Download lab message +headingNoLabMessagesSelected = No lab messages selected +headingLabMessagesDeleteProcessed = Delete processed lab message(s) +headingLabMessagesDeleted = Lab messages deleted +headingLabMessageCorrection = Correction lab message +headingFetchLabMessages = Fetch new lab messages +headingCaution = Caution +headingUnavailableTaskEdition = Unavailable task edition +headingDeleteVaccinations = Remove immunization vaccinations +headingDocumentCreated = Document created +headingUsersEnabled = Users enabled +headingUsersDisabled = Users disabled +headingConfirmUnclearLabMessage=Confirm unclear +headingConfirmManuallyForwardedLabMessage=Confirm forwarded +headingUpdateCaseWithNewDiseaseVariant=Update case disease variant +headingRejectSormasToSormasShareRequest=Reject share request +headingShareRequestDetails=Share request details +headingShareRequestCases=Cases +headingShareRequestContacts=Contacts +headingShareRequestEvents=Events +headingShareRequestEventParticipants=Event participants +headingRevokeSormasToSormasShareRequest=Revoke share request +headingCaseResponsibleJurisidction=Responsible jurisdiction +headingSeeAllPersons=See persons for all association types +headingPlaceOfStayInHospital = Place of stay in hospital +headingCurrentHospitalization = Current hospitalization +headingCorrectPerson = Correct person data +headingPreviousPersonInformation = Previous person information +headingUpdatedPersonInformation = Updated person information +headingCorrectSample = Correct sample data +headingPreviousSampleInformation = Previous sample information +headingUpdatedSampleInformation = Updated sample information +headingCorrectPathogenTest = Correct pathogent test data +headingPreviousPathogenTestInformation = Previous pathogen test information +headingUpdatedPathogenTestInformation = Updated pathogen test information +headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts + +immunizationVaccinationHeading = Vaccination +immunizationRecoveryHeading = Recovery + +# Info texts +infoActivityAsCaseInvestigation = Please document ALL relevant activities after infection\: +infoAddTestsToSample = To add a test result to this sample, it has to be marked as received first. +infoArchivedCases = Cases are automatically archived after %d days without changes to the data. +infoArchivedContacts = Contacts are automatically archived after %d days without changes to the data. +infoArchivedEvents = Events are automatically archived after %d days without changes to the data. +infoArchivedEventParticipants = Event participants are automatically archived after %d days without changes to the data. +infoArchivedTravelEntries = Travel entries are automatically archived after %d days without changes to the data. +infoAssigneeMissingEmail = The user assigned to this task does not have an e-mail address provided, and will therefore not be notified. +infoObserverMissingEmail = At least one of the observers of this task does not have an e-mail address provided, and will therefore not be notified. +infoAssigneeMissingEmailOrPhoneNumber = The user assigned to this task does not have an e-mail address nor a phone number provided, and will therefore not be notified. +infoAutomaticDeletion = Deletion scheduled for %s +infoAutomaticDeletionTooltip = Deletion scheduled for %s
End of processing\: %s
Deletion period\: %s +infoAutomaticDeletionTooltipDays = %s days +infoAutomaticDeletionTooltipMonths = %s months +infoAutomaticDeletionTooltipYears = %s years +infoObserverMissingEmailOrPhoneNumber = At least one of the observers of this task does not have an e-mail address nor a phone number provided, and will therefore not be notified. +infoBasicExport = Export the columns and rows that are shown in the table below. +infoCanceledBy = Canceled by %s using bulk action +infoCaseDate = By default, cases are filtered by the most relevant date available\:
  • Symptom onset date
  • Case report date
This means that, when a case e.g. has a symptom onset date, only this date will be taken into account when searching the list for cases in the specified date range. You can specify a date type in the dropdown menu to instead specifically filter by this date.

Example\: Case A has been created this week and therefore has a report date that lies in this week as well. However, Case A also has a symptom onset date that is set to last week (because it has been entered retrospectively). By default, when "Most relevant date" is selected and you have set the filter to only display cases of this week, Case A will not appear in the list because its symptom onset date lies in the previous week. For the case to appear in the list, you need to select "Case report date" which will result in only the report date being considered when filtering the list. +infoCaseIncidence = "Case incidence proportion" means the number of cases per 100,000 inhabitants. You can check the map key to see the thresholds that define how the districts are colorized. +infoCaseMap = If cases are shown by home address and there are no GPS coordinates available for it, the coordinates of the location where the case has been reported are used instead. +infoCheckProbableInfectionEnvironment = This checkbox should be checked if you are sure that this exposure was the most probable infection environment for this case. Only one exposure can be marked as the probable infection environment at the same time, and that exposure will be transmitted to SurvNet. +infoContactDashboard = All Dashboard elements that display general information about contacts use the follow-up period of the respective contact, starting with the contact report date. +infoConvertToCaseContacts = There are %s additional %s contacts of this person that do not have a resulting case set. Do you want to set the case you have just created as the resulting case of some or all of these contacts as well? +infoConvertToCaseContactsAndEventParticipants = There are %s additional %s contacts and %s additional %s event participants of this person that do not have a resulting case set. Do you want to set the case you have just created as the resulting case of some or all of these contacts and event participants as well? +infoConvertToCaseEventParticipants = There are %s additional %s event participants of this person that do not have a resulting case set. Do you want to set the case you have just created as the resulting case of some or all of these event participants as well? +infoConvertToCaseSelect = Please select the contacts and event participants for which you want to set the created case as the resulting case. +infoCreateEntry = The database contains no entry that seems to be similar to the details of the lab message.

Select one of the options and click on the Confirm button to create a new entry for the person.

If you are unsure, you can discard this window and cancel the process. +infoDashboardIncidence = Thresholds are calculated using quartiles. +infoDatabaseExportTables = Please select the database tables you want to export. +infoDefineOutbreaks = Click on a button to define which districts of the region currently have an outbreak of a specific disease. +infoDetailedExport = Export the rows that are shown in the table below with an extended set of columns. This may take a while. +infoCaseManagementExport = Export the rows that are shown in the table below with a customized set of columns that are relevant for the case management process. This may take a while. +infoDisplayNetworkDiagram = Please maximize to view the disease transmission chains +infoDocumentAlreadyExists = A Document with filename "%s" already exists. Overwrite? +infoDownloadDocumentTemplateImportGuide = If this is your first time uploading document templates to SORMAS, we strongly recommend to read the document template guide first. +infoDownloadExport = The export is being prepared. This may take a while.
You can close this dialog after the download has completed. +infoDownloadCaseImportTemplate = You can use this template .csv file to bring your data into a format SORMAS can read. Please do this every time you import data, never use a file you have downloaded before. +infoDownloadImportTemplate = You can use this template .csv file to bring your data into a format SORMAS can read. Please do this every time you import data, never use a file you have downloaded before. +infoDownloadErrorReport = If there were any rows that could not be imported, you will be offered a .csv file containing all these rows as well as the error descriptions. +infoDownloadImportGuide = If this is your first time importing data into SORMAS, we strongly recommend to read the import guide first. +infoEventParticipantAlreadyExisting = For this person, an event participant already exists in this event. You can either continue with this event participant or go back to the event selection. +infoEventResponsibleUserFilter = The responsible user filter requires a region to be selected in the region filter. +infoExistingImmunizationPeriod = Immunization period of existing immunization +infoExpectedFollowUpUntilDateCase = The expected follow-up until date for this case is based on its %s (%s) +infoExpectedFollowUpUntilDateContact = The expected follow-up until date for this contact is based on its %s (%s) +infoExportNoFilters = Warning\: No filters have been selected. Export may take a while. +infoFacilityCsvImport = Name of a configured facility (requires FacilityType), OTHER_FACILITY (requires FacilityType and FacilityDetails) or NO_FACILITY +infoFacilityNeedsDistrict = Please define a district in order to select a facility. +infoImmunizationPeriod = Immunization period of this immunization +infoImportAllCountries = This will import all countries which are currently WHO members. You will receive a notification when the import process has finished. +infoImportAllContinents = This will import all default continents. You will receive a notification when the import process has finished. +infoImportAllSubcontinents = This will import all default subcontinents. You will receive a notification when the import process has finished. +infoImportCsvFile = Depending on the amount of rows you want to import, this may take a while. You will receive a notification when the import process has finished. +infoImportInfrastructureAllowOverwrite = Select this option if existing data should be overwritten with data from the import file. If an existing entry (based on the name or ISO/UNO-Code if available ) is found, all data will be updated with the content of the import file (if available). If no existing entry is found, a new one will be created. +infoImportProcess = %d rows are being imported. The import process might take a while.
You will be able to review and solve any errors after the import process has been completed. +infoImportSimilarity = One of the cases you tried to import is similar to an already existing case in the SORMAS database. Please check whether the case to import is a duplicate of any of the cases in the list and, if so, select that case and confirm. +infoLostToFollowUpBy = Set to lost to follow-up by %s using bulk action +infoNoAdditionalTests = No additional tests have been created for this sample +infoNoCasesFoundStatistics = No cases have been found for the selected filters and visualization options. +infoNoDiseaseSelected = Please select a disease to display the immunization overview. +infoCaseIncidenceNotPossible = The following regions have missing population data\:

%s.

As a result, case incidence cannot be calculated and case counts are displayed instead. +infoCaseIncidenceMissingPopulationData = The following regions and/or districts have missing population data\:

%s.

Incidence proportion cannot be calculated for these regions and/or districts. +infoCaseIncidenceIncompatible = No population data is available for communities and facilities. Case incidence cannot be calculated and case counts are displayed instead. If you want to view case incidence, please remove any community and facilitiy filters and groupings. +infoNoPathogenTests = No pathogen tests have been created for this sample +infoPickOrCreateCase = There are existing cases in the database that seem very similar to the one you are about to create. Please have a look at the list of existing cases and verify that the case you want to create is not a duplicate of one of them. If you find a case that is most likely the same as yours, please click on it in the list and confirm. +infoPickOrCreateCaseNewCase = Newly added case information +infoPickOrCreateImmunization = The system already contains at least one immunization for %s for this person and means of immunization that overlaps with the specified immunziation period. Please compare the most recent existing immunization with the one you created and decide whether to discard the new immunization, use its information to update the existing one, or create it anyway. +infoPickOrCreateImmunizationExisting = Existing immunization information +infoPickOrCreateImmunizationNew = Newly added immunization information +infoPickOrCreatePathogenTest = The database already contains at least one pathogen test that belongs to the sample.

Please look through the lists of pathogen tests. If you feel certain that one matches the lab message details, select it and click on the Confirm button. Otherwise, click on Create new sample to create a new sample for the entry.

If you are unsure, you can discard this window and cancel the process. +infoPickOrCreateSample = The database already contains at least one sample that seems to be very similar to the details of the lab message.

Please look through the lists of samples. If you feel certain that one matches the lab message details, select it and click on the Confirm button. Otherwise, click on Create new pathogen test to create a new pathogen test for the sample.

If you are unsure, you can discard this window and cancel the process. +infoSampleAdditionalTesting = Please tick every type of additional test you would like to be performed on this sample. +infoSampleExport = Export the samples of all cases displayed in the table rows with an extended set of columns. This may take a while. +infoSamplePathogenTesting = Please tick every type of pathogen test you would like to be performed on this sample. +infoSimilarImmunization = The system already contains at least one immunization for %s for this person and means of immunization that overlaps with the specified immunization period. Do you still want to update the start and end date or go back and adjust your changes? +infoStatisticsDisclaimer = All statistics on this page are aggregated data of the whole country. This includes cases you might not have read and write access to and therefore are not visible in the case directory. +infoStatisticsFilter = Add filters to restrict the aggregated data.
If you use multiple filters, only cases that pass all restrictions will be aggregated. +infoStatisticsResults = Click the "Generate" button to create a new table, map or chart. +infoSurveillanceDashboard = All Dashboard elements that display cases (the "New Cases" statistics, the Epidemiological Curve and the Case Status Map) use the onset date of the first symptom for the date/epi week filter. If this date is not available, the date of report is used instead. +infoCampaignsDashboard=All Dashboard elements that display campaign diagrams. +infoUploadDocumentTemplate=Select a "%s"-Document Template you would like to upload. +infoUserEmail = Used to send E-Mail notifications. +infoUserPhoneNumber = Used to send SMS notifications. Needs to contain country code. +infoWeeklyReportsView = Number of officer/informant reports is the total number of reports that were submitted by the officers/informants associated with the displayed region or officer this week.

Percentage is the percentage of officers/informants that submitted their report for the respective week.

Number of officers/informants zero reports is the amount of zero reports, i.e. submitted reports with no cases. These are included in the total number of reports.

Officer/Informant report submission is either the date the report has been submitted at or a hint that no report has been submitted for this week yet. +infoMergingExplanation = This view is designed to assist you in detecting and merging duplicate cases. Cases are always displayed as pairs, the case with the earlier creation date being on top.

You can use the creation date filter to only view potential duplicates that were created in a specific time period. The creation date is automatically generated when a case is entered into SORMAS and can not be changed by users. Therefore, once you have reviewed all duplicates from a specific time period in the past, you will never have to do it again as there will be no new cases created during this time frame.

Please note that most likely not all displayed cases are actual duplicates. There is the potential for false positives, so please thoroughly review the cases before merging them\! In addition to the information provided in the table, you can also click on the IDs of the cases to open them in a new tab. Keep in mind that it is much worse to falsely merge unique cases together than to have some duplicates in the system. +infoContactMergingExplanation = This view is designed to assist you in detecting and merging duplicate contacts. Contacts are always displayed as pairs, the contact with the earlier creation date being on top.

You can use the creation date filter to only view potential duplicates that were created in a specific time period. The creation date is automatically generated when a contact is entered into SORMAS and can not be changed by users. Therefore, once you have reviewed all duplicates from a specific time period in the past, you will never have to do it again as there will be no new contacts created during this time frame.

Please note that most likely not all displayed contacts are actual duplicates. There is the potential for false positives, so please thoroughly review the contacts before merging them\! In addition to the information provided in the table, you can also click on the IDs of the contacts to open them in a new tab. Keep in mind that it is much worse to falsely merge unique contacts together than to have some duplicates in the system. +infoMergingMergeDescription = Choose this option only if you are sure that the two cases are the same\! You should click on this button next to the case with the most recent or more complete information. Click on the IDs of the cases to open them in new tabs in order to view all their data. When the case you chose is missing information that is present in the other case, it will be updated. Also, contacts, samples, tasks and case management information will be transfered. Afterwards, the case you did not choose will be deleted. +infoContactMergingMergeDescription = Choose this option only if you are sure that the two contacts are the same\! You should click on this button next to the contact with the most recent or more complete information. Click on the IDs of the contacts to open them in new tabs in order to view all their data. When the contact you chose is missing information that is present in the other contact, it will be updated. Also, samples, tasks and contact management information will be transfered. Afterwards, the contact you did not choose will be deleted. +infoMergingPickDescription = Clicking on this button will simply delete the case that was not picked. However, no information will be copied to the case that remains active. All contacts, samples and tasks will be lost as well. Choose this option if you are sure that both cases are the same, but the other case has not been updated with any information that needs to be transfered to the one that remains active. +infoContactMergingPickDescription = Clicking on this button will simply delete the contact that was not picked. However, no information will be copied to the contact that remains active. All samples and tasks will be lost as well. Choose this option if you are sure that both contacts are the same, but the other contact has not been updated with any information that needs to be transfered to the one that remains active. +infoMergingHideDescription = Choose this option if you are not sure whether the two cases are the same or if you know that they are not. This will hide the case pair from the list. Please note that, when you refresh the view or come back to it later, it will re-appear as long as you don't choose a different time period in the creation date filter. +infoContactMergingHideDescription = Choose this option if you are not sure whether the two contacts are the same or if you know that they are not. This will hide the contact pair from the list. Please note that, when you refresh the view or come back to it later, it will re-appear as long as you don't choose a different time period in the creation date filter. +infoHowToMergeCases = You can choose between two options when reviewing potentially duplicate cases\: +infoHowToMergeContacts = You can choose between two options when reviewing potentially duplicate contacts\: +infoCalculateCompleteness = The Calculate Completeness button on top can be used to calculate the completeness values for all cases in the table. This is only necessary if there are cases in the list that do not yet have a completeness value. Normally, this value is automatically updated whenever the details of a case or one of its contacts or samples change. +infoContactCalculateCompleteness = The Calculate Completeness button on top can be used to calculate the completeness values for all contacts in the table. This is only necessary if there are contacts in the list that do not yet have a completeness value. Normally, this value is automatically updated whenever the details of a contact or one of its samples change. +infoCaseCompleteness = Completeness is a measurement of how much vital data has already been entered into the case. This is composed of the following, weighted by their importance\:
  • Has the case been classified?
  • Has the case been investigated?
  • Has at least one sample been taken?
  • Has at least one symptom been documented?
  • Has at least one contact been created?
  • Is there an outcome for the case?
  • Does the case have a birth date or age?
  • Does the case have a sex?
  • Has an onset date been specified?
+infoContactCompleteness = Completeness is a measurement of how much vital data has already been entered into the contact. This is composed of the following, weighted by their importance\:
  • Has the contact been classified?
  • Has the contact status been modified?
  • Has at least one sample been taken?
  • Does the contact has a last contact date specified?
  • Does the contact have a sex?
  • Does the contact have its relation specified?
  • Does the contact have a category specified?
  • Does the contact have its birthdate specified?
+infoCompletenessMerge = You can use this measurement to get an idea about which case you should use as the one that remains active when merging. However, please make sure that you still have a detailed look at both cases to avoid mistakes. +infoContactCompletenessMerge = You can use this measurement to get an idea about which contact you should use as the one that remains active when merging. However, please make sure that you still have a detailed look at both contacts to avoid mistakes. +infoMergeIgnoreRegion = Selecting this option excludes the region as a criteria for detecting duplicates. Merging and picking are deactivated here because the probability of a real duplicate beyond region boundaries is very low. If a real duplicate is detected, this case can be deleted manually via the case directory. +infoContactMergeIgnoreRegion = Selecting this option excludes the region as a criteria for detecting duplicates. Merging and picking are deactivated here because the probability of a real duplicate beyond region boundaries is very low. If a real duplicate is detected, this contact can be deleted manually via the contact directory. +infoCustomExport = In this view, you can create and save export configurations with customized sets of columns. Saving these configurations allows you to quickly export only the information that you're interested, without having to manually edit the resulting CSV file afterwards. Please click on the blue export button next to one of your configurations or create a new configuration by using the button to the right. +infoEditExportConfiguration = Each of the checkboxes below represents a column in the export file. Please select all the columns you want to appear in your customized export and deselect those that you don't require. +infoPopulationDataView = Use one of the buttons below to manage population data for regions and districts within SORMAS. If you want to edit the data, please use the export function, copy the data you want to change into the import template, edit it, and import the template file containing the changed data. +infoPopulationCollectionDate = Please indicate the date the population data you want to import was collected on. If you only know the year, please choose the 1st of January of that year. +infoPopulationReferenceYear = The case incidence proportions are calculated by either projecting the population data to %s, which is the maximum year that was selected in the filters, or by taking the original population data if the maximum selected year is before the year the population data was collected in. +infoLineListingConfigurationRegion = Line listing is enabled for all districts listed next to the disease. Click on the Edit line listing button below a disease name to configure line listing for all districts. +infoLineListingConfigurationNation = Click on a region to open a detailed view with line listing information for all its districts. Click on the Edit line listing button below a disease to configure line listing for all regions. +# 1st %s: disease name; 2nd %s: region name +infoLineListingConfigurationRegionEdit = You're editing the regional line listing configuration for %s in %s. +# %s: disease name +infoLineListingConfigurationNationEdit = You're editing the country-wide line listing configuration for %s. +infoNoNetworkDiagram = Please select a disease above to view the disease transmission chains. +infoSyncUsers = Sync SORMAS users' data to the External Authentication Provider configured.
The sync is one way only SORMAS -> Authentication Provider.
Passwords are not updated for users which already exist in the External Authentication Provider +infoSpecificCaseSearch = Use the text field below to search for a specific case in the whole country. You can search by case ID, external ID or epid number. Click on "Search Case" when you're done to open the case if the search was successful. If more than one case is found, the case with the latest report date will be opened. +infoSpecificEventSearch = Use the text field below to search for a specific event in the whole country. You can search by case ID or person ID. Click on "Search Event" when you're done to open the event if the search was successful.

If more than one event is found, the event with the latest report date will be opened. +infoSearchCaseForContact = Use the text field below to search for any case in the system you have access to. You can search by name, case ID, external ID or epid number. When you're done, click on "Search Case" to see a list of all cases that match the text that you've entered. Select a case in this list and click on "Confirm" to use the selected case as the contact's source case. +infoNoSourceCaseSelected = Please select the source case for this contact, if known +infoNoSourceCaseSelectedLineListing = Please select the source case, if known +infoContactCreationSourceCase = Selected source case\:
%s +infoSelectOrCreateContact = The database already contains at least one contact that seems to be very similar to the details of the created contact.

Please look through the list of contacts. If you feel certain that one matches your contact, select it and click on the Save button. Otherwise, click on Create new contact to create a new contact for the person.

If you are unsure, you can discard this window and cancel the contact creation process. +infoSelectOrCreateContactImport = The database already contains at least one contact that seems to be very similar to the details of the imported contact.

Please look through the list of contacts. If you feel certain that one matches your contact, select it and click on the Save button. Otherwise, click on Create new contact to create a new contact for the person.

If you are unsure, you can discard this window to remove the contact from the current import. +infoSelectOrCreateEntry = The database already contains at least one entry that seems to be very similar to the details of the lab message.

Please look through the lists of cases, contacts and event participants. If you feel certain that one matches the lab message details, select it and click on the Confirm button. Otherwise, select one of the other options to create a new entry for the person.

If you are unsure, you can discard this window and cancel the process. +infoSelectOrCreatePersonForContact = The database already contains at least one person that seems to be very similar to the personal details of the created contact.

Please look through the list of persons. If you feel certain that one of those persons matches your contact person, select it and click on the Save button. Otherwise, click on Create New Person to create a new person for your contact.

If you are unsure, you can discard this window and cancel the contact creation process. +infoSelectOrCreatePersonForImmunization = The database already contains at least one person that seems to be very similar to the personal details of the created immunization.

Please look through the list of persons. If you feel certain that one of those persons matches your immunization person, select it and click on the Save button. Otherwise, click on Create New Person to create a new person for your immunization.

If you are unsure, you can discard this window and cancel the immunization creation process. +infoSelectOrCreatePersonForImport = The database already contains at least one person that seems to be very similar to the personal details of the imported entry.

Please look through the list of persons. If you feel certain that one of those persons matches the person of the imported entry, select it and click on the Save button. Otherwise, click on Create New Person to create a new person.

If you are unsure, you can discard this window to remove the entry from the current import. +infoSelectOrCreatePersonForEventParticipant = The database already contains at least one person that seems to be very similar to the personal details of the created event participant.

Please look through the list of persons. If you feel certain that one of those persons matches your event person, select it and click on the Save button. Otherwise, click on Create New Person to create a new event person for your event.

If you are unsure, you can discard this window and cancel the event participant creation process. +infoSelectOrCreatePersonForLabMessage = The database already contains at least one person that seems to be very similar to the personal details of the lab message.

Please look through the list of persons. If you feel certain that one of those persons matches the lab message person, select it and click on the Confirm button. Otherwise, click on Create New Person to create a new person for the lab message.

If you are unsure, you can discard this window and cancel the process. +infoSelectOrCreatePersonForLabMessageWithoutMatches = A person closely matching the person details of the lab message could not automatically be determined.

You can manually search for matches, or you can create a new person. Once you selected an option, continue via the Confirm button.

If you are unsure, you can discard this window and cancel the process. +infoSkipOrOverrideDuplicateCampaignFormDataImport = The database already contains a dataset for the form %s in the campaign %s for the specified community and date. Please have a look at the details for the existing dataset and choose Skip if you want to keep the existing data or Overwrite if you want to replace the existing data with the data you have imported. +pseudonymizedCasesSelectedWarning = For the bulked-edited cases you have only limited access to the sensitive data. For those cases the value you put into "Place Description" will be ignored. +pseudonymizedEntitiesSelectedWarning = You only have limited access to some of the selected entities. Please deselect pseudonymized entities to continue. +infoPickOrCreateEventForCase = The list below contains all existing events having the same disease as the current case. Please check whether the event this case belongs to is already on this list or create a new one if it isn't. +infoPickOrCreateEventForCases = The list below contains all existing events having the same disease as the selected cases. Please check whether the event these cases belongs to is already on this list or create a new one if it isn't. +infoPickOrCreateEventForContact = The list below contains all existing events having the same disease as the current contact. Please check whether the event this contact belongs to is already on this list or create a new one if it isn't. +infoPickOrCreateEventForContacts = The list below contains all existing events having the same disease as the selected contacts. Please check whether the event these contacts belongs to is already on this list or create a new one if it isn't. +infoPickOrCreateEventForLabMessage = The list below contains all existing events having the same disease as the lab message. Please check whether the event the new event participant belongs to is already on this list or create a new one if it isn't. +infoPickOrCreateSuperordinateEventForEvent = The list below contains all existing events with an event date and the same disease as the current event. Please check whether the superordinate event for this event is already on this list or create a new one if it isn't. +infoPickOrCreateEventGroupForEvent = The list below contains all existing event groups. Please check whether the event group this event belongs to is already on this list or create a new one if it isn't. +infoSelectOrCreatePersonForCase = The database already contains at least one person that seems to be very similar to the personal details of the created case.

Please look through the list of persons. If you feel certain that one of those persons matches your case person, select them and click on the Save button. Otherwise, click on Create New Person to create a new person for your case.

If you are unsure, you can discard this window and cancel the case creation process. +infoSearchPerson = Use the filters below to search for any person in the system you have access to. When you're done click on "Search" to see a list of persons that match the text that you have entered. Select person in the list and click on "Confirm" to choose the selected person. +infoContactsViewRegionDistrictFilter = When you select a region and/or district filter, the contact directory is primarily filtered by the responsible region and district of the contacts. If these are not filled in, the region and district of the contact's source case are used instead. +infoDeveloperOptions = You can use the controls below to generate dummy cases and contacts based on the selected restraints. Please note that generating a lot of data at once might take some time.
Generated data is neither fully deterministic, nor fully random, and intended for testing and demonstration purposes only. +infoDeveloperOptionsContactGeneration = When generating contacts, the generator will pick random existing cases as source. Please make sure the case database is not empty before generating contacts. +infoDeveloperOptionsSeedUsage = Using the seed will create identical datasets, provided the starting conditions (configuration & database) are also identical +infoCreateNewSampleDiscardsChangesCase = Creating a new sample will discard all unsaved changes made to this case +infoCreateNewSampleDiscardsChangesContact = Creating a new sample will discard all unsaved changes made to this contact +infoCreateNewSampleDiscardsChangesEventParticipant = Creating a new sample will discard all unsaved changes made to this event participant +infoUsageOfEditableCampaignGrids = You can edit the campaign data and dashboard definitions by clicking inside one of the cells in the grid, and you can reorder the dashboard elements by dragging and dropping the grid rows +infoSaveOfTask = Saving this task will discard any unsaved changes made to the case. +populationDataByArea = Population data by Area +populationDataByRegion = Population data by Region +populationDataByCommunity = No population data available for communities +populationDataByDistrict = Population data by District +infoExposureInvestigation = Please document ALL relevant direct exposures (e.g. attended gatherings, travels, animal contacts, etc.) during the incubation period\: +infoExposureInvestigationContacts = Please document information about the exposure that led to this contact\: +infoEpiDataFieldsHint = Please indicate if any of the following is relevant for the patient during the incubation period\: +infoEpiDataSourceCaseContacts = Please indicate ALL contacts with potential source cases during the incubation period\: +infoNoSourceCase = No source case +infoCreateNewContactDiscardsChanges = Creating a new contact will discard all unsaved changes made to this case +infoExposuresInfectionEnvironmentHint = This exposure is marked as the probable infection environment. +infoExposuresRiskAreaHint = This exposure took place in a risk area. +infoUserSyncProcess = %d users are being synced to the External Authentication Provider. The import process might take a while.
You will be able to review and solve any errors after the import process has been completed. +infoNoSubordinateEvents=No subordinate events +infoNoSuperordinateEvent=No superordinate event +infoNoEventGroups=No event groups +infoMergeFiltersHint = Calculating and displaying potential duplicate cases is a very complex task and can require a lot of time. It is strongly recommended to adjust the filters on top of this view to reduce the number of cases that are detected at the same time, e.g. by increasing the lower threshold of the "Creation date" filter, or by selecting thresholds for the "Report or Onset Date".

When you see this hint, the loading of duplicates has been temporarily blocked to make sure that you can adjust the filters. Clicking on "Confirm Filters" after doing so will bring up the list of potential duplicates. +infoPlaceOfStayInHospital = Please select a hospital as the place of stay. If the case is not currently admitted to a hospital as an inpatient, please document hospitalizations under previous hospitalizations. +infoMoreDetailsAboutHospitalization = For adding more details about the hospitalization, go to the hospitalization tab. +infoCountryNotEditableEventParticipantsWithoutJurisdiction = Changing the country is not permitted because at least one event participant in this event does not have a responsible region and/or responsible district set. +infoContactAlreadyConvertedToCase = This contact has already been converted to a case. Please add new visits to the case instead. +infoSearchPersonOnDependentForm = Search for another person + +# Messages +messageActivateAccount = Account has to be activated +messageAdditionalTestDeleted = Additional test deleted +messageAdditionalTestSaved = Additional test saved +messageAggregateReportFound = Attention\: For your selection an already created report was found. Do you want to edit this report or discard your selection? +messageAllCasesAlreadyInEvent = All cases are already linked to the selected event. +messageAllCasesLinkedToEvent = All cases have been linked to the selected event. +messageAllContactsAlreadyInEvent = All contacts are already linked to the selected event. +messageAllContactsLinkedToEvent = All contacts have been linked to the selected event. +messageAlreadyEventParticipant = The person you have selected is already defined as an event participant of this event. +messageAnimalContactsHint = Please indicate an answer regarding ALL animals (live or dead) the person had direct exposure to (e.g. hunt, touch, eat) during the incubation period. +messageArchiveUndoneReasonMandatory = Please add a reason for de-archiving +messageCampaignArchived = Campaign has been archived +messageCampaignCreated = New campaign created +messageCampaignDearchived = Campaign has been de-archived +messageCampaignDeleted = Campaign deleted +messageCampaignSaved = Campaign saved +messageCampaignFormSaved = %s saved +messageCaseArchived = Case has been archived +messageCaseCreated = New case created +messageCaseDearchived = Case has been de-archived +messageCaseDuplicateDeleted = The duplicate case has been deleted. +messageCaseIncidenceUnsupportedAgeGroup = Case incidence proportion can only be generated for 5 year intervals. Please remove all other age stratification filters and visualization groupings. +messageCaseReferredFromPoe = Case has been referred to the specified facility +messageCaseRelationToEventWithoutDisease=It is not possible to link a case to an event if the disease of the event has not been set +messageCaseSaved = Case saved +messageCaseSavedClassificationChanged = Case saved. The classification was automatically changed to %s. +messageCaseTransfered = Case has been transfered to another facility +messageCasesArchived = All selected cases have been archived +messageCasesDearchived = All selected cases have been de-archived +messageCasesDeleted = All selected cases have been deleted +messageCasesEdited = All cases have been edited +messageCasesEditedExceptArchived = %s cases have been successfully edited. Some of the cases could not be edited because they are in a different jurisdiction or were already archived. +messageCasesMerged = Cases merged and duplicate case deleted. +messageCasesSentToExternalSurveillanceTool = All selected cases have been sent to the reporting tool +messageCasesNotDeletedReasonExternalSurveillanceTool = Some cases were not deleted because the communication with the reporting tool failed. +messageChangePathogenTestResult = The result of this pathogen test differs from the current overall pathogen test result of the sample. Do you want to update its result to %s? +messageCheckInputData = Please check the input data +messageClinicalCourseSaved = Clinical course saved +messageClinicalVisitCreated = Clinical assessment created +messageClinicalVisitSaved = Clinical assessment saved +messageClinicalVisitsDeleted = All selected clinical assessments have been deleted +messageCloneCaseWithNewDisease = You have just created a positive pathogen test result for a different disease. Do you want SORMAS to automatically generate a new case with this new disease? All information from this case will be copied to the new case. +messageUpdateCaseWithNewDiseaseVariant = You have saved a positive pathogen test of a different disease variant than the variant specified in the case. Do you want to update the disease variant of the case? The case's current disease variant is %s, the pathogen test's disease variant is %s. +messageCompletenessValuesUpdated = Completeness values have been updated. +messageConfirmCaseAfterPathogenTest=The final laboratory result of the sample the saved pathogen test belongs to is positive. However, the case cannot be automatically classified as a confirmed case because it is missing some information. Do you want to set the case classification to confirmed anyway? +messageConvertContactToCase=You have just saved a positive laboratory result for the contact disease. Do you want to create a case for the contact person? The case will be set as the resulting case of this contact, and the final laboratory result of the sample will automatically be set to positive. +messageConvertContactToCaseDifferentDiseases=You have just saved a positive laboratory result for for a different disease than the contact disease. Do you want to create a case with this disease for the contact person? The case will not be set as the resulting case of this contact. +messageConvertEventParticipantToCase=You have just saved a positive laboratory result for the event disease. Do you want to create a case for the event participant person? The case will automatically be linked to the event participant, and the final laboratory result of the sample will be set to positive. +messageConvertEventParticipantToCaseDifferentDiseases=You have just saved a positive laboratory result for a different disease than the event disease. Do you want to create a case with this disease for the event participant person? The case will not be linked to the event participant. +messageConvertEventParticipantToCaseNoDisease=You have just saved a positive laboratory result for an event with no disease. Do you want to create a case with this disease for the event participant person? The final laboratory result of the sample will automatically be set to positive but the case will not be linked to the event participant. +messageContactCreated=New contact created +messageContactArchived = Contact has been archived +messageContactDearchived = Contact has been de-archived +messageContactSaved = Contact data saved +messageContactsDeleted = All selected contacts have been deleted +messageContactsEdited = All contacts have been edited +messageContactsEditedExceptArchived = %s contacts have been successfully edited. Some of the contacts could not be edited because they are in a different jurisdiction or were already archived. +messageContactDuplicateDeleted = The duplicate contact has been deleted. +messageContactsMerged = Contacts merged and duplicate contact deleted. +messageCopyPassword = Please copy this password, it is shown only once. +messageCountCasesAlreadyInEvent = %s cases were already linked to the event, all others were linked. +messageCountContactsAlreadyInEvent = %s contacts were already linked to the event, all others were linked. +messageCreateCollectionTask = You have set the specimen condition to not adequate.
Do you want to create a new sample collection task? +messageDatabaseExportFailed = Please contact an admin and notify them about this problem +messageEntryCreated = Entry created +messageEpiDataHint = Please indicate if any of the following is relevant for the patient during the incubation period. +messageEpidNumberWarning = The entered epid number is already used by another case. Please assign a new epid number to this or the other case. +messageCaseExternalTokenWarning = The entered external token is already used by another case. Please assign a new external token to this or the other case. +messageCaseFound = A case that matches the entered search term has been found and linked to current immunization +messageCaseFoundNoValidPathogenTest = A case that matches the entered search term has been found however no valid pathogen tests on the case found +messageContactExternalTokenWarning = The entered external token is already used by another contact. Please assign a new external token to this or the other contact. +messageEventExternalTokenWarning = The entered external token is already used by another event. Please assign a new external token to this or the other event. +messagePersonExternalTokenWarning = The entered external token is already used by another person. Please assign a new external token to this or the other person. +messageErrorReportNotAvailable = The error report file is not available. Please contact an admin and tell them about this issue. +messageEventArchived = Event has been archived +messageEventGroupArchived = Event group has been archived +messageEventCreated = New event created +messageEventGroupCreated = New event group created +messageEventLinkedAsSuperordinate = The selected event was successfully linked to this event as its superordinate event +messageEventLinkedAsSubordinate = The selected event was successfully linked to this event as a subordinate event +messageEventLinkedToGroup = The selected event was successfully linked to this event group +messageEventSuperordinateEventUnlinked = The link between this event and its superordinate event was successfully removed +messageEventSubordinateEventUnlinked = The link between this event and its subordinate event was successfully removed +messageEventParticipationUnlinked = The link between this case and the event was successfully removed +messageEventUnlinkedFromEventGroup = The link between this event and the event group was successfully removed +messageEventDearchived = Event has been de-archived +messageEventGroupDearchived = Event group has been de-archived +messageEventParticipantArchived = Event participant has been archived +messageEventParticipantDearchived = Event participant has been de-archived +messageEventParticipantCreated = New person created +messageEventParticipantSaved = Person data saved +messageEventParticipantsDeleted = All selected event participants have been deleted +messageEventParticipantResponsibleJurisdictionUpdated = Changing or removing the responsible jurisdiction of this event participant could make you lose access to its personal details and/or disallow you to edit it in the future. Are you sure you want to proceed? +messageEventParticipantToCaseWithoutEventDisease=It is not possible to create cases from an event participant if the disease of the event has not been set +messageEventParticipantToContactWithoutEventDisease=It is not possible to create a contact from an event participant if the disease of the event has not been set +messageEventJurisdictionUpdated = Changing or removing the jurisdiction of this event could make you lose access to its personal details and/or disallow you to edit it in the future. Are you sure you want to proceed? +messageEventSaved = Event data saved +messageEventGroupSaved = Event group data saved +messageEventsArchived = All selected events have been archived +messageEventsDearchived = All selected events have been de-archived +messageEventsDeleted = All selected events have been deleted +messageEventsSentToExternalSurveillanceTool = All selected events have been sent to the reporting tool +messageEventsSentToSurvnet = All selected events have been sent to SurvNet +messageCountCasesNotDeleted = %s cases not deleted. CasesIds not deleted\: %s +messageCountEventsNotDeleted = %s events not deleted. Event Ids not deleted\: %s +messageEventsNotDeletedReason = No events that contain event participants linked will be deleted. Please remove the events participants from the event in order to be able to delete it. +messageCountEventsNotDeletedExternalSurveillanceTool=%s events not deleted due to the reporting tool communication. Event Ids not deleted\: %s +messageEventsNotDeletedReasonExternalSurveillanceTool=Some events were not deleted because the communication with the reporting tool failed. +messageEventsEdited = All events have been edited +messageEventsEditedExceptArchived = %s events have been successfully edited. Some of the events could not be edited because they are in a different jurisdiction or were already archived. +messageExportFailed = There was an error preventing the data to be exported. Please contact an admin and inform them about this issue. +messageExportConfigurationDeleted = Export configuration deleted +messageExportConfigurationSaved = Export configuration saved +messageFollowUpCanceled = Follow-up of all selected contacts has been canceled +messageFollowUpStatusChanged = Follow-up of all selected contacts that have follow-up has been set to lost to follow-up +messageFacilityChanged = You have changed the facility of this case. Do you want to transfer the case to the new facility (the hospitalization may be updated) or do you only want to edit the data to correct a mistake? +messageFacilityMulitChanged = You have changed the facility of multiple cases. Do you want to transfer these cases to the new facility (the hospitalization may be updated) or do you only want to edit their data to correct mistakes? +messageGdpr = In accordance with the principle of data minimization imposed by the GDPR, you must ensure that you enter here only objective data absolutely necessary for the processing of the file. In particular, you must not enter genetic or biometric, philosophical, political, religious data, union opinions, sexual life or orientation, ethnic origin, offenses, convictions, security measures, criminal record ... or any other data that is not related to public health surveillance. +messageGdprCheck = I have read this information, please don't show this window again +messageImmunizationArchived = Immunization has been archived +messageImmunizationDearchived = Immunization has been de-archived +messageImmunizationSaved = Immunization data saved. +messageImmunizationSavedVaccinationStatusUpdated = Immunization data saved. The vaccination status of matching cases, contacts, and event participants of the immunization person has been updated to vaccinated. +messageImportCanceled = Import canceled\!
The import has been canceled. All already processed rows have been successfully imported. You can now close this window. +messageImportCanceledErrors = Import canceled\!
The import has been canceled. Some of the already processed rows could not be imported due to malformed data.
Please close this window and download the error report. +messageImportError = Could not import file. +messageImportFailed = The import failed due to a critical error. Please contact your admin and inform them about this issue. +messageImportFailedFull = Import failed\!
The import failed due to a critical error. Please contact your admin and inform them about this issue. +messageImportInvalidColumn = Invalid column\!
The column "%s" is not part of the imported data type or one of its connected entities. Please remove it from the .csv file and upload it again. +messageImportPartiallySuccessful = Import partially successful\!
The import has been successful, but some of the rows could not be imported due to malformed data.
Please close this window and download the error report. +messageImportSuccessful = Import successful\!
All rows have been imported. You can now close this window. +messageUploadSuccessful = Upload successful\! You can now close this window. +messageIncompleteGpsCoordinates = GPS coordinates are incomplete +messageLabMessagesAssigned = The assignee has been changed for all selected lab messages +messageLoginFailed = Please check your username and password and try again +messageMissingCases = Please generate some cases before generating contacts +messageMissingDateFilter = Please fill in both date filter fields +messageMissingEpiWeekFilter = Please fill in both epi week filter fields +messageNoCasesSelected = You have not selected any cases +messageNoClinicalVisitsSelected = You have not selected any clinical assessments +messageNoContactsSelected = You have not selected any contacts +messageNoCsvFile = You have not selected a file to upload. Please select a .csv file containing the data you want to import from your computer. +messageNoDocumentTemplateUploadFile = You have not selected a file to upload. Please select a .docx template file you want to import from your computer. +messageNoDocumentUploadFile = You have not selected a file to upload. Please select a file you want to import from your computer. +messageNoEventParticipantsSelected = You have not selected any event participants +messageNoEventsSelected = You have not selected any events +messageNoTravelEntriesSelected = You have not selected any travel entries +messageNoPathogenTestsSelected = You have not selected any pathogen tests +messageNoPrescriptionsSelected = You have not selected any prescriptions +messageNoSamplesSelected = You have not selected any samples +messageNoTasksSelected = You have not selected any tasks +messageNoTreatmentsSelected = You have not selected any treatments +messageNoVisitsSelected = You have not selected any visits +messageNoUsersSelected = You have not selected any users +messageOutbreakSaved = Outbreak information saved +messagePasswordReset = User's password was reset +messagePasswordResetEmailLink = A link to reset the password was sent to the user's email +messagePathogenTestSaved = Pathogen test saved. The classification of its associated case was automatically changed to %s. +messagePathogenTestSavedShort = Pathogen test saved +messagePathogenTestsDeleted = All selected pathogen tests have been deleted +messagePersonSaved = Person data saved +messagePersonSavedClassificationChanged = Person data saved. The classification of at least one case associated with this person was automatically changed to %s. +messagePlagueTypeChange = The symptoms selected match the clinical criteria for %s. The plague type is set to %s for this case. +messagePrescriptionCreated = Prescription created +messagePrescriptionSaved = Prescription saved +messagePrescriptionsDeleted = All selected prescriptions have been deleted +messageRelatedSampleFound = The sample referenced in this lab message seems to already exist.
Do you want to directly open that sample? There were no processed related lab messages found. +messageRelatedSampleAndLabMessagesFound = A lab message with the same report ID was already processed. It is related to a sample also referenced in this lab message.
Do you want to directly open that sample? +messageSampleErrors = There are errors in the sample form. Please fix them and save the sample before referring it to another laboratory. +messageSampleSaved = Sample data saved +messageSamplesDeleted = All selected samples have been deleted +messageSpecifyColumnAttribute = Please specify the column attribute you have chosen for the visualization +messageSpecifyFilterAttributes = Please specify all selected filter attributes and sub attributes +messageSpecifyRowAttribute = Please specify the row attribute you have chosen for the visualization +messageSymptomsHint = Please tick an answer for ALL symptoms indicating if they occurred at any point in time during this illness\: +messageSymptomsVisitHint = Please tick an answer for ALL symptoms indicating if they were present at the time of this visit\: +messageTasksArchived = All selected tasks have been archived +messageTasksEdited = All tasks have been edited +messageTasksDearchived = All selected tasks have been de-archived +messageTasksDeleted = All selected tasks have been deleted +messageTemplateNotAvailable = The template file is not available. Please contact an admin and tell them about this issue. +messageTravelEntrySaved = Travel entry data saved +messageTravelEntryArchived = Travel entry has been archived +messageTravelEntryDearchived = Travel entry has been de-archived +messageTravelEntryPOEFilledBySystem = [System] Automatically filled point of entry +messageTravelEntriesDeleted = All selected travel entries have been deleted +messageTreatmentCreated = Treatment created +messageTreatmentSaved = Treatment saved +messageTreatmentsDeleted = All selected treatments have been deleted +messageUnknownFilterAttributeForPopulationData = Displaying case incidence proportion for unknown sex or age group is not possible. Please remove the respective values from your filters. +messageDeletionUnsupportedByExternalJournalWarning = The external journal has not yet provided a function to unregister persons from within SORMAS. Please manually delete the person from the external journal. +messageDiseaseNotSpecifiedInLabMessage = The tested disease of the lab message could not automatically be determined. Please manually verify that this lab message is about a disease to be dealt with in SORMAS. +messageUserRoleCombination = cannot be combined with +messageVisitsDeleted = All selected visits have been deleted +messageWrongFileType = Please provide a .csv file containing the data you want to import. It's recommended to use the import template file as a starting point. +messageWrongTemplateFileType=For %s, please provide a .%s file. +messageLineListingDisabled = Line listing has been disabled +messageLineListingSaved = Line listing configuration saved +messageNoEndDate = no end date +messageInvalidDatesLineListing = There are invalid dates in at least one of the line listing configurations. Please make sure that all entered dates are in the present or future and try again. +messageAreaArchived = Area has been archived +messageAreaDearchived = Area has been de-archived +messageContinentArchived = Continent has been archived +messageContinentDearchived = Continent has been de-archived +messageSubcontinentArchived = Subcontinent has been archived +messageSubcontinentDearchived = Subcontinent has been de-archived +messageCountryArchived = Country has been archived +messageCountryDearchived = Country has been de-archived +messageRegionArchived = Region has been archived +messageRegionDearchived = Region has been de-archived +messageDistrictArchived = District has been archived +messageDistrictDearchived = District has been de-archived +messageCommunityArchived = Community has been archived +messageCommunityDearchived = Community has been de-archived +messageFacilityArchived = Facility has been archived +messageFacilityDearchived = Facility has been de-archived +messageLaboratoryArchived = Laboratory has been archived +messageLaboratoryDearchived = Laboratory has been de-archived +messagePointOfEntryArchived = Point of entry has been archived +messagePointOfEntryDearchived = Point of entry has been de-archived +messageAreaArchivingNotPossible = This area can not be archived because it is still used in other infrastructure data. Please archive any region in this area first. +messageContinentArchivingNotPossible = This continent can not be archived because it is still used in other infrastructure data. Please archive any subcontinent in this continent first. +messageSubcontinentArchivingNotPossible = This subcontinent can not be archived because it is still used in other infrastructure data. Please archive any country in this subcontinent first. +messageRegionArchivingNotPossible = This region can not be archived because it is still used in other infrastructure data. Please archive any district, facility, laboratory and point of entry in this region first. +messageDistrictArchivingNotPossible = This district can not be archived because it is still used in other infrastructure data. Please archive any community, facility, laboratory and point of entry in this district first. +messageCommunityArchivingNotPossible = This community can not be archived because it is still used in other infrastructure data. Please archive any facility and laboratory in this community first. +messageAreasArchivingNotPossible = At least one of the selected areas is still used in other infrastructure data. Please archive any region in all selected areas first. +messageContinentsArchivingNotPossible = At least one of the selected continents is still used in other infrastructure data. Please archive any subcontinent in all selected continents first. +messageSubcontinentsArchivingNotPossible = At least one of the selected subcontinents is still used in other infrastructure data. Please archive any countries in all selected subcontinents first. +messageRegionsArchivingNotPossible = At least one of the selected regions is still used in other infrastructure data. Please archive any district, facility, laboratory and point of entry in all selected regions first. +messageDistrictsArchivingNotPossible = At least one of the selected districts is still used in other infrastructure data. Please archive any community, facility, laboratory and point of entry in all selected districts first. +messageCommunitiesArchivingNotPossible = At least one of the selected communities is still used in other infrastructure data. Please archive any facility and laboratory in all selected communities first. +messageCountryDearchivingNotPossible = This country can not be de-archived because its subcontinent is still archived. Please de-archive its subcontinent first. +messageSubcontinentDearchivingNotPossible = This subcontinent can not be de-archived because its continent is still archived. Please de-archive its continent first. +messageDistrictDearchivingNotPossible = This district can not be de-archived because its region is still archived. Please de-archive its region first. +messageCommunityDearchivingNotPossible = This community can not be de-archived because its district or region are still archived. Please de-archive its district and region first. +messageFacilityDearchivingNotPossible = This facility can not be de-archived because its community, district or region are still archived. Please de-archive its community, district and region first. +messageLaboratoryDearchivingNotPossible = This laboratory can not be de-archived because its community, district or region are still archived. Please de-archive its community, district and region first. +messagePointOfEntryDearchivingNotPossible = This point of entry can not be de-archived because its district or region are still archived. Please de-archive its district and region first. +messageCountriesDearchivingNotPossible = At least one of the selected countries can not be de-archived because its subcontinent is still archived. Please de-archive the subcontinents of all selected countries first. +messageSubcontinentsDearchivingNotPossible = At least one of the selected subcontinents can not be de-archived because its continent is still archived. Please de-archive the continents of all selected subcontinents first. +messageDistrictsDearchivingNotPossible = At least one of the selected districts can not be de-archived because its region is still archived. Please de-archive the regions of all selected districts first. +messageCommunitiesDearchivingNotPossible = At least one of the selected communities can not be de-archived because its district or region are still archived. Please de-archive the districts and regions of all selected communities first. +messageFacilitiesDearchivingNotPossible = At least one of the selected facilities can not be de-archived because its community, district or region are still archived. Please de-archive the communities, districts and regions of all selected facilities first. +messageLaboratoriesDearchivingNotPossible = At least one of the selected laboratories can not be de-archived because its community, district or region are still archived. Please de-archive the communities, districts and regions of all selected laboratories first. +messagePointsOfEntryDearchivingNotPossible = At least one of the selected points of entry can not be de-archived because its district or region are still archived. Please de-archive the districts and regions of all selected points of entry first. +messageNoRowsSelected = You have not selected any rows +messageAreasArchived = All selected areas have been archived +messageAreasDearchived = All selected areas have been de-archived +messageContinentsArchived = All selected continents have been archived +messageContinentsDearchived = All selected continents have been de-archived +messageSubcontinentsArchived = All selected subcontinents have been archived +messageSubcontinentsDearchived = All selected subcontinents have been de-archived +messageCountriesArchived = All selected countries have been archived +messageCountriesDearchived = All selected regions have been de-archived +messageRegionsArchived = All selected regions have been archived +messageRegionsDearchived = All selected regions have been de-archived +messageDistrictsArchived = All selected districts have been archived +messageDistrictsDearchived = All selected districts have been de-archived +messageCommunitiesArchived = All selected communities have been archived +messageCommunitiesDearchived = All selected communities have been de-archived +messageFacilitiesArchived = All selected facilities have been archived +messageFacilitiesDearchived = All selected facilities have been de-archived +messageLaboratoriesArchived = All selected laboratories have been archived +messageLaboratoriesDearchived = All selected laboratories have been de-archived +messagePointsOfEntryArchived = All selected points of entry have been archived +messagePointsOfEntryDearchived = All selected points of entry have been de-archived +messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? +messageNoCaseFound = No case could be found that matches the entered search term. +messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. +messageNoEventFound = No event could be found that matches the entered search term. +messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message +messageContactCaseRemoved = The source case has been removed from this contact +messageContactCaseChanged = The source case of the contact has been changed +messageSampleOpened = Opened sample found for search string +messageSystemFollowUpCanceled = [System] Follow-up automatically canceled because contact was converted to a case +messageSystemFollowUpCanceledByDropping = [System] Follow-up automatically canceled because contact was dropped +messageSetContactRegionAndDistrict = Please choose a responsible region and responsible district and save the contact before removing the source case. +messageAllCampaignFormsValid = All campaign forms have been successfully validated +messageEnterSms = Please enter your SMS message here\: +messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. +messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. +messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. +messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? +messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. +messageUserSyncCanceledErrors = Sync canceled\!
The sync has been canceled. Some of the already processed users could not be synced due to malformed data.
Please close this window and download the error report. +messageUserSyncFailedFull = Sync failed\!
The sync failed due to a critical error. Please contact your admin and inform them about this issue. +messageUserSyncPartiallySuccessful = Sync partially successful\!
The sync has been successful, but some of the users could not be synced due to malformed data.
Please close this window and download the error report. +messageUserSyncSuccessful = Sync successful\!
All users have been synced. You can now close this window. +messageUserRightsExportFailed = Please contact an admin and notify them about this problem +messageNoLabMessagesSelected = You have not selected any lab messages +messageExternalLabResultsAdapterNotFound = The external lab results adapter could not be found. This probably means you system is not configured correctly. Please contact you system administrator. +messageLabMessagesDeleteProcessed = Only unprocessed lab messages can be deleted +messageLabMessagesDeleted = All selected lab messages have been deleted +messageQuarantineOrderDocumentCreated = Quarantine order document has been created +messageUnavailableTaskEditionDueToDifferentDistricts = Task edition is not available if they are related to different districts +messageUsersEnabled = All selected users have been enabled +messageUsersDisabled = All selected users have been disabled +messageDontShareWithReportingToolWarning = This case is actively prevented from being sent to the external reporting tool +messageBulkCasesWithDifferentDiseasesSelected = You have selected cases with different diseases. Some bulk edit options might be unavailable. +messageBulkContactsWithDifferentDiseasesSelected = You have selected contacts with different diseases. Some bulk edit options might be unavailable. +messageBulkDontShareWithReportingToolWarning = The cases will be prevented from being sent to the external reporting tool +messageBulkLinkEventHint = All selected cases will be linked to the selected event if they are not linked to it already +messageInfrastructureLocked = Infrastructure data is locked and cannot be added/edited/imported/de-archived +messageDeleteImmunizationVaccinations = Changing the means of immunization will delete all vaccinations that have been added to this immunization. Are you sure you want to proceed with the change? +messageVaccinationNotRelevantForCase = This vaccination is not relevant for this case because the vaccination date is set after the symptom onset date or case report date. +messageVaccinationNoDateNotRelevantForCase = This vaccination is not relevant for this case because it does not have a vaccination date. +messageVaccinationNotRelevantForContact = This vaccination is not relevant for this contact because the vaccination date is set after the last contact date or contact report date. +messageVaccinationNoDateNotRelevantForContact = This vaccination is not relevant for this contact because it does not have a vaccination date. +messageVaccinationNotRelevantForEventParticipant = This vaccination is not relevant for this event participant because the vaccination date is after the event date or event report date. +messageVaccinationNoDateNotRelevantForEventParticipant = This vaccination is not relevant for this event participant because it does not have a vaccination date. + +# Notifications +notificationCaseClassificationChanged = The classification of case %s has changed to %s. +notificationCaseInvestigationDone = The investigation of case %s has been done. +notificationEventParticipantCaseClassificationConfirmed = A person that was an event participant in the event %s was identified as a confirmed %s case %s. Please check if an explicit link should be created between the event participant and the case. +notificationContactSymptomatic = The contact %s of case %s has become symptomatic. +notificationContactWithoutCaseSymptomatic = The contact %s has become symptomatic. +notificationDiseaseChanged = The disease of case %s has changed from %s to %s. Please review all related cases and see if their diseases need to be changed as well. +notificationLabResultArrived = %s pathogen test result has arrived for %s case %s. Test type\: %s. Tested disease\: %s. +notificationLabResultArrivedContact = %s pathogen test result has arrived for %s contact %s. Test type\: %s. Tested disease\: %s. +notificationLabResultArrivedEventParticipant = %s pathogen test result has arrived for %s event participant %s. Test type\: %s. Tested disease\: %s. +notificationLabResultArrivedEventParticipantNoDisease = %s pathogen test result has arrived for %s event participant %s. Test type\: %s. +notificationLabSampleShipped = A new sample (sample code\: %s) for case %s is being shipped to your laboratory. +notificationLabSampleShippedShort = A new sample for case %s is being shipped to your laboratory. +notificationLabSampleShippedShortForContact = A new sample for contact %s is being shipped to your laboratory. +notificationLabSampleShippedShortForEventParticipant = A new sample for event participant %s is being shipped to your laboratory. +notificationPersonsUpdated = Updated %d Person(s) +notificationTaskObserverInformation = You are assigned as an observer to this task. +notificationTaskDueGeneral = Your %s task is overdue. +notificationTaskDueSpecific = Your %s task for %s is overdue. +notificationTaskStartGeneral = Your %s task should be started today. +notificationTaskStartSpecific = Your %s task for %s should be started today. +notificationTaskAssociatedCaseLink = Link to the associated case\: %s +notificationTaskAssociatedContactLink = Link to the associated contact\: %s +notificationTaskAssociatedEventLink = Link to the associated event\: %s +notificationTaskAssociatedTravelEntryLink = Link to the associated travel entry\: %s +notificationTaskGeneralUpdatedAssigneeUserSource = Your %s task has been assigned to another user. You are no longer in charge of this task. +notificationTaskGeneralUpdatedAssigneeUserTarget = A(n) %s task has been assigned to you. +notificationTaskSpecificUpdatedAssigneeUserSource = Your %s task for %s has been assigned to another user. You are no longer in charge of this task. +notificationTaskSpecificUpdatedAssigneeUserTarget = A(n) %s task for %s has been assigned to you. +notificationVisitCompleted = A follow-up visit for contact %s assigned to user %s has been completed. +notificationEventParticipantRelatedToOtherEvents = The Person %s newly added as Participant %s to Event %s (responsible user\: %s) by %s is also related to these Events \:\n%s +notificationEventWithResponsibleUserLine = Event %s (responsible user\: %s) +notificationSmsSent = Message sent +notificationEventGroupCreated = Event Group %s (%s) created by %s.\n\n%s +notificationEventAddedToEventGroup = %s added to Event Group %s (%s) by %s .\n\n%s +notificationEventRemovedFromEventGroup = %s removed from Event Group %s (%s) by %s .\n\n%s +notificationEventGroupSummary = Here is a summary of the Events now contained in the Event Group\:\n%s +notificationEventGroupSummaryEmpty = This event group is empty. + +#Labels +labelActualLongSeed = Actual Long seed +labelNumberOfUsers = No. of users +labelNumberOfContinents = No. of continents +labelNumberOfSubcontinents = No. of subcontinents +labelNumberOfCountries = No. of countries +labelNumberOfRegions = No. of regions +labelNumberOfDistricts = No. of districts +labelNumberOfCommunities = No. of communities +labelNumberOfPointofEntry = No. of points of entry +labelNumberOfFacilities = No. of facilities +labelNumberOfAreas = No. of areas +labelNumberOfTemplates = No. of Templates +labelNoVaccinationDate = No vaccination date +labelNoVaccineName = No vaccine name + +# Numbers +numberEight = eight +numberEleven = eleven +numberFive = five +numberFour = four +numberNine = nine +numberOne = one +numberSeven = seven +numberSix = six +numberTen = ten +numberThree = three +numberTwelve = twelve +numberTwo = two + +# Prompts +promptActionDateFrom = Date of action from... +promptActionDateTo = ... to +promptActionEpiWeekFrom = Date of action from epi week... +promptActionEpiWeekTo = ... to epi week +promptActionChangeDateFrom = Date of action change from... +promptActionChangeDateTo = ... to +promptActionChangeEpiWeekFrom = Date of action change from epi week... +promptActionChangeEpiWeekTo = ... to epi week +promptCampaignSearch = ID, name +promptCasesDateFrom = New cases from... +promptCasesEpiWeekFrom = New cases from epi week... +promptCasesEpiWeekTo = ... to epi week +promptCasesSearchField = ID, EPID number, external ID, facility +promptCaseOrContactEventSearchField = Event\: ID, title, description +promptPersonsSearchField = ID, name, phone number, email, city, street, postal code +promptCreationDateFrom = Creation date from ... +promptDateTo = ... to +promptNamePhoneEmail = Name, phone number and email address +promptContactDateType = Contact reference date +promptContactDateFrom = New contacts from... +promptContactDateTo = ... to +promptContactEpiWeekFrom = New contacts from epi week... +promptContactEpiWeekTo = ... to epi week +promptContactsSearchField = ID, case ID, case name, external ID +promptDisease = Disease +promptDistrict = District +promptEventDateType = Event reference date +promptEventDateFrom =Date of event from epi week +promptEventDateTo = ... to +promptEventEpiWeekFrom = Date of event from epi week +promptEventEpiWeekTo = ... to epi week +promptEventEvolutionDateFrom = Date of last evolution from... +promptEventEvolutionDateTo = ... to +promptEventSignalEvolutionEpiWeekFrom = Date of last evolution from epi week... +promptEventSignalEvolutionEpiWeekTo = ... to epi week +promptEventParticipantsSearchField = name, phone number +promptEventsSearchField = ID, title, description, source details +promptEventsSearchFieldEventParticipants = ID or personal details of event participants +promptEventsSearchFieldEventGroups = ID or name of event group +promptEventGroupSearchField = ID, name +promptEventGroupSearchFieldEvent = Event ID, title, description, source details, location +promptImmunizationDateType = Immunization reference date +promptImmunizationValidFrom = New immunizations valid from... +promptImmunizationDateFrom = Immunization report date from... +promptImmunizationDateTo = ... to +promptImmunizationEpiWeekFrom = New immunizations from epi week... +promptImmunizationEpiWeekTo = ... to epi week +promptLabMessagesSearchField = UUID, name, postal code, lab name, lab postal code +promptLabMessagesDateFrom = Message date from... +promptLabMessagesDateTo = ... to +promptLabMessagesPersonBirthDateFrom = Birth date from... +promptLabMessagesPersonBirthDateTo = ... to +promptNewCaseDateType = Case reference date +promptPrescriptionTextFilter = Prescription details or prescribing clinician +promptRegion = Region +promptRelatedPersonLikeField = Person ID/name/contact information/location +promptSamplesSearchField = Sample ID/name, case name/epid number/ID +promptSampleDateFrom = Sample date from ... +promptSampleDateTo = ... to +promptSampleEpiWeekFrom = Sample date from epi week +promptSampleEpiWeekTo = ... to epi week +promtSampleDataType = Sample reference date +promptSearch = Search... +promptTaskSearchField = Case or contact ID/name, Event ID/title +promptTaskDateType = Task reference date +promptTaskDateFrom = Tasks from... +promptTaskDateTo = ... to +promptTaskEpiWeekFrom = Tasks from epi week... +promptTaskEpiWeekTo = ... to epi week +promptTravelEntrySearchField = Person first and last name, person UUID, person external ID, travel entry UUID, travel entry external ID +promptTreatmentTextFilter = Treatment details or executing staff member +promptTypeToAdd = Type here to add... +promptUserSearch = Search user +promptFilterByPeriod = Filter by period +promptSelectPeriod = Select period +promptCampaign = Campaign +promptArea = Area +promptAllAreas=All areas +promptAllRegions=All regions +promptAllDistricts=All districts +promptAllCommunities=All communities +promptExternalIdExternalSurveillanceTool=Will adopt external reporting tool GUID +promptExternalJournalForceDeletion=Do you want to force the cancellation in SORMAS? This would mark the person as deleted from the external journal in SORMAS, while there is a high probability of personal data still remaining in the external journal. +promptPersonDuplicateSearchIdExternalId=ID, External ID, External token +#DiseaseNetworkDiagram +DiseaseNetworkDiagram.Classification.HEALTHY = Healthy +DiseaseNetworkDiagram.heading = Disease network diagram +DiseaseNetworkDiagram.highRisk = High risk +DiseaseNetworkDiagram.legend = Legend +DiseaseNetworkDiagram.lowRisk = Low risk +DiseaseNetworkDiagram.selectByClassification = Select by Classification +DiseaseNetworkDiagram.subheading = The arrows indicate the direction of transmission + +promptImmunizationStartDateFrom = Immunization start date from... +promptImmunizationPositiveTestResultDateFrom = Immunization positive test result date from... +promptImmunizationRecoveryDateFrom = Immunization recovery date from... + +promptTravelEntryDateFrom = Travel entry report date from... +promptTravelEntryDateTo = ... to +promptTravelEntryEpiWeekFrom = Travel entry from epi week... +promptTravelEntryEpiWeekTo = ... to epi week + +# Unsaved changes +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. +unsavedChanges.discard = Discard changes +unsavedChanges.save = Save changes +unsavedChanges.cancel = Cancel action + +headingNetworkDiagramTooManyContacts = Too many contacts +warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. +confirmNetworkDiagramTooManyContacts = Do you really want to update the diagram? + +headingContactTracingFirstContact = First contact with Contact Tracing + +infoBAGExport=Full-Export to SEDEX + +# Survnet Gateway +ExternalSurveillanceToolGateway.notificationEntrySent = Entry has been sent to the reporting tool +ExternalSurveillanceToolGateway.notificationEntriesSent = All selected entries have been successfully sent to the reporting tool. +ExternalSurveillanceToolGateway.notificationEntriesDeleted = All selected entries have been successfully deleted in the reporting tool. +ExternalSurveillanceToolGateway.notificationEntryNotSent = Entry could not be sent +ExternalSurveillanceToolGateway.notificationErrorSending = Error when sending entry +ExternalSurveillanceToolGateway.unableToSend=Please save or discard any unsaved changes before sending the %s to the reporting tool. +ExternalSurveillanceToolGateway.confirmSendCase=Are you sure you want to send the case to the reporting tool? +ExternalSurveillanceToolGateway.confirmSendCases=Are you sure you want to send the cases to the reporting tool? +ExternalSurveillanceToolGateway.confirmSendEvent=Are you sure you want to send the event to the reporting tool? +ExternalSurveillanceToolGateway.confirmSendEvents=Are you sure you want to send the events to the reporting tool? +ExternalSurveillanceToolGateway.confirmDeleteCase=Are you sure you want to delete the case in the reporting tool? +ExternalSurveillanceToolGateway.confirmDeleteEvent=Are you sure you want to delete the event in the reporting tool? +ExternalSurveillanceToolGateway.sharedAt = shared at +ExternalSurveillanceToolGateway.deletedAt = deleted at +ExternalSurveillanceToolGateway.notificationEntryNotDeleted = Entry could not be deleted in the reporting tool +warningDashboardMapTooManyMarkers = There are more than %d places to display and it is possible that your browser will freeze while displaying them. +ExternalSurveillanceToolGateway.notificationErrorDeleting = Error when deleting entry +ExternalSurveillanceToolGateway.versionRequestError = Error requesting version + +headingSurveillanceReports=Reports +headingCreateSurveillanceReport=Create new report +headingEditSurveillanceReport=Edit report + + +# Default password +DefaultPassword.ownUserIntroduction=You have just logged in using the default password for this user. This password is not secure, as it could be used by unauthorized third parties to gain access to your account. Please make sure to change your password as soon as possible. +DefaultPassword.otherUsersIntroduction=Your installation of SORMAS has default logins enabled, which were automatically created during setup. These logins have insecure default passwords, which could be used by unauthorized third parties to gain access to these accounts. Please make sure to change the default passwords of all affected users as soon as possible, or to entirely remove the accounts, if they are no longer required. +DefaultPassword.ownUserAction=By clicking the following button, a new random password will be generated and assigned to your account. The new password will be displayed below. +DefaultPassword.otherUsersAction=By clicking the GENERATE NEW PASSWORDS button, new random passwords will be generated and assigned to each of the selected user accounts. The new passwords will be displayed below next to the corresponding user. +DefaultPassword.ownUserNewPasswordSetHints=Your account has been successfully updated. Make sure to copy your new password and keep it safe. This new password is displayed only once. +DefaultPassword.otherUsersNewPasswordSetHints=Your accounts have been successfully updated. Make sure to copy the new passwords and to notify the affected users about the password change. The new passwords are displayed only once. +DefaultPassword.newPassword=New Password +DefaultPassword.newPasswordPlaceholder=New Password\: %s +DefaultPassword.unchanged=- unchanged - + +sormasToSormasLoadingShares = Loading shares... + +errorConstraintViolation = Invalid data + +reloadPageToSeeChanges = Please reload the page to see the latest changes diff --git a/sormas-api/src/main/resources/strings_cs-CZ.properties b/sormas-api/src/main/resources/strings_cs-CZ.properties index 8d6e1975209..11bf1c13590 100644 --- a/sormas-api/src/main/resources/strings_cs-CZ.properties +++ b/sormas-api/src/main/resources/strings_cs-CZ.properties @@ -118,7 +118,7 @@ classificationLastVaccinationDateWithin = Datum posledního očkování v rámci confirmationAlsoAdjustQuarantine = Prodloužili jste následná opatření. Měl by být konec karantény odpovídajícím způsobem upraven? confirmationArchiveCampaign = Opravdu chcete archivovat tuto kampaň? Toto neodstraní ze systému ani ze statistik, ale skryje pouze z běžného adresáře kampaní. confirmationArchiveCase = Opravdu chcete tento případ archivovat? To jej neodstraní ze systému ani ze statistik, ale skryje pouze z adresáře běžných případů. -confirmationArchiveCaseWithContacts = Archive related contacts along with the archived case +confirmationArchiveCaseWithContacts = Archivovat související kontakty spolu s archivovaným případem confirmationDearchiveCaseWithContacts = Dearchive related contacts along with the dearchived case confirmationArchiveCases = Opravdu chcete archivovat všech %d vybraných případů? confirmationArchiveContact = Opravdu chcete archivovat tento kontakt? Toto jej neodstraní ze systému ani ze statistik, ale skryje pouze z běžného adresáře kontaktů. @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Skutečně změnit případovou chorobu? confirmationDearchiveCampaign = Jste si jisti, že chcete vyjmout z archivu tuto kampaň? Tím se znovu zobrazí v běžném adresáři kampaní. confirmationDearchiveCase = Jste si jisti, že chcete vyjmout z archivu tento případ? Tím se znovu zobrazí v adresáři běžných případů. confirmationDearchiveCases = Jste si jisti, že chcete vyjmout z archivu všech %d vybraných případů? -confirmationDearchiveContact = Opravdu chcete dearchivovat tento případ? Ten se znovu zobrazí v adresáři běžných případů. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Jste si jisti, že chcete vyjmout z archivu tuto událost? Tato akce se znovu zobrazí v normální adresáři událostí. confirmationDearchiveEvents = Jste si jisti, že chcete vyjmout z archivu všech %d vybraných události? confirmationDearchiveEventParticipant = Opravdu chcete vyjmout z archivu tohoto účastníka? Ten se zobrazí znovu v seznamu účastníků běžné události. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Opravdu chcete odstranit tento řádek? confirmationRemoveGridRowConfirm=Ano confirmationRemoveGridRowCancel=Ne confirmationSetMissingGeoCoordinates=Tato akce vyplní geo souřadnice pro každou osobu, která má zadanou adresu, ale nezadají žádné geo souřadnice. Mějte prosím na paměti, že tato akce se týká všech osob v jurisdikci bez ohledu na níže uvedené filtry. Upozornění\: V závislosti na počtu osob může tato metoda trvat dosti dlouho. -confirmationSuperordinateEventDiscardUnsavedChanges = Změna nebo odstranění zdrojového případu kontaktu zruší všechny neuložené změny, které jste provedli v kontaktu. Jste si jisti, že chcete pokračovat? confirmationLocationFacilityAddressOverride = Vybrané zařízení má údaje o poloze, které se liší od těch, které právě upravujete. Chcete je přepsat z toho zařízení? confirmationCancelExternalFollowUpPopup=Opravdu chcete zrušit externí sledování v systému eDiary? confirmationUnlinkCaseFromEvent = Opravdu chcete odpojit tento případ od této události? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = Toto je první zpráva laboratoře. Přejete si v confirmationSeeAllPersons=Jste si jisti, že chcete vyhledávat osoby pro všechny typy přidružení? Mohlo by to vést k pomalé odezvě. confirmationLabMessageCorrection = Tato laboratorní zpráva obsahuje opravy k předchozí zprávě.
Chcete, aby byly tyto opravy zpracovány z této laboratoře? confirmLabMessageCorrectionThrough = Žádné další nové nebo změněné informace nelze automaticky určit z laboratorní zprávy. Chcete ručně přidat nebo upravit více informací? +confirmationDeleteCaseContacts = Chcete také odstranit všechny kontakty tohoto případu? # Entities entityAction=Akce @@ -302,7 +302,7 @@ entityVaccinations = Očkování # Error Messages errorAccessDenied=Nemáte dostatečná práva k zobrazení této stránky. errorEntityOutdated=Údaje se nepodařilo uložit, protože byly mezitím změněny. -errorFieldValidationFailed=Zkontrolujte zadaná data. Alespoň jedno pole, které musí být vyplněno, je prázdné. +errorFieldValidationFailed=Zkontrolujte zadaná data. Alespoň jedno pole má chyby. errorIntegerFieldValidationFailed=Zkontrolujte zadaná data. Alespoň jedno z polí, kde bylo očekáváno celé číslo, obsahuje něco jiného. errorLabResultsAdapterNotFound = Adaptér výsledků externí laboratoře nebyl nalezen. Ujistěte se, že je nainstalován ve vašem systému a správně zadán ve vašem sormas.properties. errorNoAccessToWeb=Váš uživatelský účet nemá přístup k webové aplikaci @@ -366,8 +366,8 @@ errorEventParticipantNotEditable = Tento účastník události již není upravi errorSampleNotEditable = Tento vzorek již není upravitelný errorImmunizationNotEditable = Tato imunizace již není upravitelná errorForbidden = Access to the specified resource has been forbidden. Please contact your supervisor or administrator and inform them about it -errorNoRightsForChangingField = You have no rights for changing %s -errorNoRightsForChangingMultipleFields = You have no rights for changing %s and related fields +errorNoRightsForChangingField = Nemáte žádná práva pro změnu %s +errorNoRightsForChangingMultipleFields = Nemáte žádná práva pro změnu %s a souvisejících polí # headings headingAccessDenied = Přístup odepřen @@ -645,6 +645,7 @@ headingEventNotDeleted = Událost nebyla smazána headingSomeCasesNotDeleted = Některé případy nebyly odstraněny headingSomeEventsNotDeleted = Některé události nebyly odstraněny headingContactConfirmationRequired = Vyžadováno potvrzení kontaktu +headingContactConversionFollowUpCommentLarge = Komentář k následnému sledování překročí maximální povolený počet znaků headingSelectSourceCase = Vyberte zdrojový případ headingRemoveCaseFromContact = Odstranit případ z kontaktu headingDiscardUnsavedChanges = Zahodit neuložené změny @@ -681,16 +682,12 @@ headingFetchLabMessages = Načíst nové zprávy laboratoře headingCaution = Varování headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Odstranit imunizační vakcinaci - headingDocumentCreated = Dokument vytvořen headingUsersEnabled = Uživatelé povoleni headingUsersDisabled = Uživatelé zakázáni - headingConfirmUnclearLabMessage=Potvrzení nejasné headingConfirmManuallyForwardedLabMessage=Potvrzení přeposláno - headingUpdateCaseWithNewDiseaseVariant=Aktualizovat variantu případové choroby - headingRejectSormasToSormasShareRequest=Odmítnout žádost o sdílení headingShareRequestDetails=Detaily žádosti o sdílení headingShareRequestCases=Případy @@ -698,13 +695,10 @@ headingShareRequestContacts=Kontakty headingShareRequestEvents=Události headingShareRequestEventParticipants=Účastníci události headingRevokeSormasToSormasShareRequest=Odmítnout žádost o sdílení - headingCaseResponsibleJurisidction=Odpovědná příslušnost headingSeeAllPersons=Zobrazit osoby pro všechny typy přidružení - headingPlaceOfStayInHospital = Místo pobytu v nemocnici headingCurrentHospitalization = Aktuální hospitalizace - headingCorrectPerson = Správné údaje o osobě headingPreviousPersonInformation = Předchozí informace o osobě headingUpdatedPersonInformation = Aktualizovaná informace o osobě @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Správné údaje o zkoušce patogeny headingPreviousPathogenTestInformation = Předchozí informace o testu patogenu headingUpdatedPathogenTestInformation = Aktualizované informace o testu patogenu headingLabMessageCorrectionThrough = Nebyly nalezeny žádné další změny +headingDeleteContacts = Smazat kontakty immunizationVaccinationHeading = Očkování immunizationRecoveryHeading = Uzdravení @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Všechny vybrané laboratoře byly archivovány messageLaboratoriesDearchived = Všechny vybrané laboratoře byly vyjmuty z archivu messagePointsOfEntryArchived = Všechny vybrané místa vstupu byly archivovány messagePointsOfEntryDearchived = Všechna vybraná místa vstupu byla vyjmuta z archivu -messageFormHasErrorsPathogenTest = Prosím vyplňte všechna povinná pole před úpravou nebo vytvořením testů patogenu messageForwardedLabMessageFound = Existuje alespoň jedna další lab zpráva se stejným předaným ID. Chcete pokračovat ve zpracování této lab zprávy? messageNoCaseFound = Nebyl nalezen žádný případ, který by odpovídal zadanému hledanému výrazu. messageNoCaseFoundToLinkImmunization = Neexistuje žádný případ, který by odpovídal vyhledávacím kritériím a podmínkám odkazů. messageNoEventFound = Nebyla nalezena žádná událost, která by odpovídala zadanému hledanému výrazu. messageContactToCaseConfirmationRequired = Kontakty můžete převádět pouze do případů, které byly potvrzeny. Potvrďte prosím tento kontakt před vytvořením případu pro jeho kontaktní osobu. +messageContactConversionFollowUpCommentLarge = Provedení této akce automaticky zruší sledování a připojí k následnému komentáři následující zprávu\:

%s

Připojením by byla překročena maximální délka pole následného komentáře tato zpráva. Vyberte, zda chcete akci zrušit, zkrátit délku následného komentáře a zkusit to znovu, nebo vynechat zprávu zobrazenou výše. +messageContactConversionFollowUpCommentLargeAdjustComment = Upravit komentář +messageContactConversionFollowUpCommentLargeOmitMessage = Zrušit zprávu messageContactCaseRemoved = Zdrojový případ byl z tohoto kontaktu odstraněn messageContactCaseChanged = Zdrojový případ kontaktu byl změněn messageSampleOpened = Otevřený vzorek nalezen pro vyhledávací řetězec @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = Všechny formuláře kampaně byly úspěšně ov messageEnterSms = Prosím zadejte vaši SMS zprávu\: messageSelectedPeriodTooLong = Vybrali jste časové období, které překračuje maximální počet dní. Ujistěte se, že zvolená lhůta nepřesáhne %d dní. messagePersonAlreadyEventParticipant = Osoba případu je již účastníkem vybrané události. Tento případ byl propojen s vybranou událostí. -messagePersonAddedAsEventParticipant = Osoba případu byla přidána jako účastník události k vybrané události. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = Tento případ je již propojen s vybranou událostí. messagePersonContactDetailsPrimaryDuplicate = Hlavní kontaktní údaje tohoto typu jsou již zaznamenány pro tuto osobu. Chcete místo toho nastavit tyto kontaktní údaje jako hlavní kontaktní údaje? messageUserSyncCanceled = Synchronizace zrušena\!
Synchronizace byla zrušena. Všichni již zpracovaní uživatelé byli úspěšně synchronizováni. Nyní můžete toto okno zavřít. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... do epi týdne # Unsaved changes -unsavedChanges.warningTitle = Potvrdit navigaci -unsavedChanges.warningMessage = V tomto formuláři máte neuložené změny. +unsavedChanges.warningTitle = Neuložené změny +unsavedChanges.warningMessage = Tento formulář obsahuje neuložené změny. Rozhodněte, zda chcete zrušit akci, kterou jste právě učinili, abyste je zkontrolovali, nebo uložit nebo zrušit změny a pokračovat. unsavedChanges.discard = Zrušit změny unsavedChanges.save = Uložit změny -unsavedChanges.cancel = Zrušit navigaci +unsavedChanges.cancel = Zrušit akci headingNetworkDiagramTooManyContacts = Příliš mnoho kontaktů warningNetworkDiagramTooManyContacts = Je k dispozici %d kontaktů a je možné, že váš prohlížeč při zobrazení diagramu zatuhne.
Vyberte prosím menší časové okno. diff --git a/sormas-api/src/main/resources/strings_de-CH.properties b/sormas-api/src/main/resources/strings_de-CH.properties index 1ad29ef5604..971db92fa3f 100644 --- a/sormas-api/src/main/resources/strings_de-CH.properties +++ b/sormas-api/src/main/resources/strings_de-CH.properties @@ -118,8 +118,8 @@ classificationLastVaccinationDateWithin = Letztes Impfdatum innerhalb von confirmationAlsoAdjustQuarantine = Sie haben das Follow-up verlängert. Soll das Ende der Isolation/Quarantäne entsprechend angepasst werden? confirmationArchiveCampaign = Sind Sie sicher, dass Sie diese Kampagne archivieren wollen? Dadurch wird sie weder aus dem System noch aus den Statistiken entfernt, sondern nur aus dem normalen Kampagnen-Verzeichnis ausgeblendet. confirmationArchiveCase = Sind Sie sicher, dass Sie diesen Fall archivieren möchten? Dies entfernt ihn nicht aus dem System oder irgendwelchen Statistiken, sondern blendet ihn nur im normalen Fallverzeichnis aus. -confirmationArchiveCaseWithContacts = Archive related contacts along with the archived case -confirmationDearchiveCaseWithContacts = Dearchive related contacts along with the dearchived case +confirmationArchiveCaseWithContacts = Verknüpfte Kontakte zusammen mit dem archivierten Fall archivieren +confirmationDearchiveCaseWithContacts = Dearchive verknüpfte Kontakte zusammen mit dem dearchivierten Fall confirmationArchiveCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle archivieren möchten? confirmationArchiveContact = Sind Sie sicher, dass Sie diesen Kontakt archivieren möchten? Dies entfernt ihn nicht aus dem System oder irgendwelchen Statistiken, sondern versteckt sie nur im normalen Kontaktverzeichnis. confirmationArchiveEvent = Sind Sie sicher, dass Sie dieses Ereignis archivieren möchten? Dies entfernt es nicht aus dem System oder irgendwelchen Statistiken, sondern blendet es nur im normalen Ereignisverzeichnis aus. @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Fallerkrankung wirklich ändern? confirmationDearchiveCampaign = Sind Sie sicher, dass Sie diese Kampagne de-archivieren wollen? Dadurch wird sie wieder im normalen Kampagnen-Verzeichnis erscheinen. confirmationDearchiveCase = Sind Sie sicher, dass Sie diesen Fall de-archivieren möchten? Er wird dann im normalen Verzeichnis wieder angezeigt. confirmationDearchiveCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle de-archivieren möchten? -confirmationDearchiveContact = Sind Sie sicher, dass Sie diesen Fall de-archivieren möchten? Er wird dann im normalen Fallverzeichnis wieder angezeigt. +confirmationDearchiveContact = Sind Sie sicher, dass Sie diesen Kontakt wiedereröffnen möchten? Dies wird ihn erneut im normalen Kontaktverzeichnis erscheinen lassen. confirmationDearchiveEvent = Sind Sie sicher, dass Sie dieses Ereignis de-archivieren möchten? Er wird dann im normalen Ereignisverzeichnis wieder angezeigt. confirmationDearchiveEvents = Sind Sie sicher, dass Sie alle %d ausgewählten Ereignisse de-archivieren möchten? confirmationDearchiveEventParticipant = Sind Sie sicher, dass Sie diesen Ereignisteilnehmer dearchivieren möchten? Dies wird ihn in der normalen Ereignisteilnehmerliste wieder erscheinen lassen. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Sind Sie sicher, dass Sie diese Zeile entfernen confirmationRemoveGridRowConfirm=Ja confirmationRemoveGridRowCancel=Nein confirmationSetMissingGeoCoordinates=Diese Aktion wird Geo-Koordinaten für jede Person generieren, die eine Adresse angegeben, aber keine Geo-Koordinaten eingegeben haben. Bitte beachten Sie, dass diese Aktion alle Personen in Ihrem Zuständigkeitsbereich betrifft, unabhängig von den unten eingestellten Filtern. Warnung\: Abhängig von der Anzahl der Personen könnte diese Methode lange dauern. -confirmationSuperordinateEventDiscardUnsavedChanges = Verknüpfen oder Trennen eines übergeordneten Ereignisses verwirft alle ungespeicherten Änderungen, die Sie an diesem Ereignis vorgenommen haben. Sind sie sicher, dass Sie fortfahren möchten? confirmationLocationFacilityAddressOverride = Die ausgewählte Einrichtung hat Standortdetails, die sich von denen unterscheiden, die Sie gerade bearbeiten. Möchten Sie sie mit denen der Einrichtung überschreiben? confirmationCancelExternalFollowUpPopup=Sind Sie sicher, dass Sie externe Nachverfolgungen im Symptomtagebuch abbrechen möchten? confirmationUnlinkCaseFromEvent = Sind Sie sicher, dass Sie die Verknüpfung zu diesem Ereignis entfernen möchten? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = Dies ist das erste Mal, dass Labormeldungen abger confirmationSeeAllPersons=Sind Sie sicher, dass Sie Personen nach allen Verbindungstypen suchen möchten? Dies kann zu einer langsamen Reaktion führen. confirmationLabMessageCorrection = Diese Labormeldung enthält Korrekturen zu einer vorherigen.
Möchten Sie diese Korrekturen aus dieser Labormeldung bearbeiten? confirmLabMessageCorrectionThrough = Keine anderen neuen oder geänderten Informationen konnten automatisch aus der Labornachricht ermittelt werden. Möchten Sie manuell weitere Informationen hinzufügen oder bearbeiten? +confirmationDeleteCaseContacts = Möchten Sie auch alle Kontakte von diesem Fall löschen? # Entities entityAction=Aktion @@ -302,7 +302,7 @@ entityVaccinations = Impfungen # Error Messages errorAccessDenied=Ihnen fehlt die Berechtigung, um diese Seite anzusehen. errorEntityOutdated=Die Daten konnten nicht gespeichert werden, da sie in der Zwischenzeit geändert wurden. -errorFieldValidationFailed=Bitte überprüfen Sie die eingegebenen Daten. Mindestens ein Feld, das ausgefüllt werden muss, ist leer. +errorFieldValidationFailed=Bitte überprüfen Sie die eingegebenen Daten. Mindestens ein Feld hat Fehler. errorIntegerFieldValidationFailed=Bitte überprüfen Sie die eingegebenen Daten. Mindestens eines der Felder, in denen eine Zahl erwartet wurde, enthält etwas anderes. errorLabResultsAdapterNotFound = Der externe Labormeldungen-Adapter konnte nicht gefunden werden. Bitte stellen Sie sicher, dass er in Ihrem System installiert und in Ihren sormas.properties korrekt spezifiziert ist. errorNoAccessToWeb=Ihr Benutzerkonto hat keinen Zugriff auf die Webanwendung @@ -645,6 +645,7 @@ headingEventNotDeleted = Ereignis nicht gelöscht headingSomeCasesNotDeleted = Einige Fälle wurden nicht gelöscht headingSomeEventsNotDeleted = Einige Ereignisse wurden nicht gelöscht headingContactConfirmationRequired = Kontaktbestätigung erforderlich +headingContactConversionFollowUpCommentLarge = Nachverfolgungs-Kommentar wird die maximal zulässige Anzahl von Zeichen überschreiten headingSelectSourceCase = Indexfall wählen headingRemoveCaseFromContact = Fall vom Kontakt entfernen headingDiscardUnsavedChanges = Ungespeicherte Änderungen verwerfen @@ -681,16 +682,12 @@ headingFetchLabMessages = Neue Labormeldungen abrufen headingCaution = Achtung headingUnavailableTaskEdition = Unverfügbare Aufgabenbearbeitung headingDeleteVaccinations = Impfungen entfernen - headingDocumentCreated = Dokument erstellt headingUsersEnabled = Benutzer aktiviert headingUsersDisabled = Benutzer deaktiviert - headingConfirmUnclearLabMessage=Unklar bestätigen headingConfirmManuallyForwardedLabMessage=Weitergeleitet bestätigen - headingUpdateCaseWithNewDiseaseVariant=Krankheitsvariante des Falls aktualisieren - headingRejectSormasToSormasShareRequest=Anfrage ablehnen headingShareRequestDetails=Details der Anfrage headingShareRequestCases=Fälle @@ -698,13 +695,10 @@ headingShareRequestContacts=Kontakte headingShareRequestEvents=Ereignisse headingShareRequestEventParticipants=Ereignisteilnehmer headingRevokeSormasToSormasShareRequest=Anfrage widerrufen - headingCaseResponsibleJurisidction=Zuständigkeitsbereich headingSeeAllPersons=Personen für alle Verbindungstypen anzeigen - headingPlaceOfStayInHospital = Aufenthaltsort im Krankenhaus headingCurrentHospitalization = Aktueller Krankenhausaufenthalt - headingCorrectPerson = Personendaten korrigieren headingPreviousPersonInformation = Vorherige Personeninformationen headingUpdatedPersonInformation = Aktualisierte Personeninformationen @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Erregertest-Daten korrigieren headingPreviousPathogenTestInformation = Vorherige Erregertestinformationen headingUpdatedPathogenTestInformation = Aktualisierte Erregertestinformationen headingLabMessageCorrectionThrough = Keine weiteren Änderungen gefunden +headingDeleteContacts = Kontakte löschen immunizationVaccinationHeading = Impfung immunizationRecoveryHeading = Genesung @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Alle ausgewählten Labore wurden archiviert messageLaboratoriesDearchived = Alle ausgewählten Labore wurden de-archiviert messagePointsOfEntryArchived = Alle ausgewählten Einreiseorte wurden archiviert messagePointsOfEntryDearchived = Alle ausgewählten Einreiseorte wurden de-archiviert -messageFormHasErrorsPathogenTest = Bitte füllen Sie alle Pflichtfelder aus, bevor Sie Erregertests bearbeiten oder erstellen messageForwardedLabMessageFound = Es existiert mindestens eine andere Labormeldung mit der gleichen Meldungs-ID, die weitergeleitet wurde. Möchten Sie das Verarbeiten dieser Labormeldung fortsetzen? messageNoCaseFound = Es konnte kein Fall gefunden werden, der dem eingegebenen Suchbegriff entspricht. messageNoCaseFoundToLinkImmunization = Es gibt keinen Fall, der den Suchkriterien und Linkbedingungen entspricht. messageNoEventFound = Es konnte kein Ereignis gefunden werden, das mit dem eingegebenen Suchbegriff übereinstimmt. messageContactToCaseConfirmationRequired = Sie können nur bestätigte Kontakte in Fälle umwandeln. Bitte bestätigen Sie den Kontakt, bevor Sie einen Fall für seine Kontaktperson erstellen. +messageContactConversionFollowUpCommentLarge = Wenn diese Aktion ausgeführt wird, wird die Nachverfolgung automatisch abgebrochen und die folgende Nachricht an den Nachverfolgungs-Kommentar angehängt\:

%s

Die maximale Länge des Nachverfolgungs-Kommentar-Feldes würde durch Anhängen dieser Nachricht überschritten werden. Bitte wählen Sie aus, ob Sie die Aktion abbrechen, die Länge des Nachverfolgungs-Kommentars reduzieren und es erneut versuchen oder die oben angezeigte Nachricht weglassen möchten. +messageContactConversionFollowUpCommentLargeAdjustComment = Kommentar anpassen +messageContactConversionFollowUpCommentLargeOmitMessage = Nachricht weglassen messageContactCaseRemoved = Der Indexfall wurde von diesem Kontakt entfernt messageContactCaseChanged = Der Indexfall des Kontakts wurde geändert messageSampleOpened = Geöffnete Probe für Suchbegriff gefunden @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = Alle Kampagnenformulare wurden erfolgreich validi messageEnterSms = Bitte geben Sie hier Ihre SMS Nachricht ein\: messageSelectedPeriodTooLong = Sie haben einen Zeitraum ausgewählt, der die maximale Anzahl von Tagen überschreitet. Bitte stellen Sie sicher, dass der gewählte Zeitraum %d Tage nicht überschreitet. messagePersonAlreadyEventParticipant = Die Fall-Person ist bereits ein Ereignisteilnehmer in dem ausgewählten Ereignis. Dieser Fall wurde mit dem ausgewählten Ereignis verknüpft. -messagePersonAddedAsEventParticipant = Die Fall-Person wurde dem ausgewählten Ereignis als Ereignisteilnehmer hinzugefügt. +messagePersonAddedAsEventParticipant = Der neue Ereignisteilnehmer wurde erstellt. messagePersonAlreadyCaseInEvent = Dieser Fall ist bereits mit dem ausgewählten Ereignis verknüpft. messagePersonContactDetailsPrimaryDuplicate = Es gibt bereits primäre Kontaktdaten dieser Art für diese Person. Möchten Sie diese Kontaktdaten stattdessen als primäre Kontaktdaten festlegen? messageUserSyncCanceled = Synchronisation abgebrochen\!
Die Synchronisation wurde abgebrochen. Alle bereits verarbeiteten Benutzer wurden erfolgreich synchronisiert. Sie können dieses Fenster nun schliessen. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Einreise von epi Woche... promptTravelEntryEpiWeekTo = ... bis Epi Woche # Unsaved changes -unsavedChanges.warningTitle = Änderungen bestätigen -unsavedChanges.warningMessage = Sie haben ungespeicherte Änderungen auf diesem Formular. +unsavedChanges.warningTitle = Ungespeicherte Änderungen +unsavedChanges.warningMessage = Dieses Formular enthält ungespeicherte Änderungen. Bitte entscheiden Sie, ob Sie die gerade ausgeführte Aktion abbrechen wollen, um sie zu überprüfen oder speichern bzw. verwerfen Sie die Änderungen und fahren fort. unsavedChanges.discard = Änderungen verwerfen unsavedChanges.save = Änderungen speichern -unsavedChanges.cancel = Navigation abbrechen +unsavedChanges.cancel = Aktion abbrechen headingNetworkDiagramTooManyContacts = Zu viele Kontakte warningNetworkDiagramTooManyContacts = Es gibt %d Kontakte und es ist möglich, dass Ihr Browser während der Anzeige des Diagramms einfriert.
Bitte wählen Sie ein kleineres Zeitfenster. diff --git a/sormas-api/src/main/resources/strings_de-DE.properties b/sormas-api/src/main/resources/strings_de-DE.properties index a94217b9109..4da2c12f70b 100644 --- a/sormas-api/src/main/resources/strings_de-DE.properties +++ b/sormas-api/src/main/resources/strings_de-DE.properties @@ -117,28 +117,28 @@ classificationLastVaccinationDateWithin = Letztes Impfdatum innerhalb von # Confirmation confirmationAlsoAdjustQuarantine = Sie haben das Follow-up verlängert. Soll das Ende der Quarantäne entsprechend angepasst werden? confirmationArchiveCampaign = Sind Sie sicher, dass Sie diese Kampagne archivieren wollen? Dadurch wird sie weder aus dem System noch aus den Statistiken entfernt, sondern nur aus dem normalen Kampagnen-Verzeichnis ausgeblendet. -confirmationArchiveCase = Sind Sie sicher, dass Sie diesen Fall archivieren möchten? Dies entfernt ihn nicht aus dem System oder irgendwelchen Statistiken, sondern blendet ihn nur im normalen Fallverzeichnis aus. -confirmationArchiveCaseWithContacts = Archive related contacts along with the archived case -confirmationDearchiveCaseWithContacts = Dearchive related contacts along with the dearchived case -confirmationArchiveCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle archivieren möchten? -confirmationArchiveContact = Sind Sie sicher, dass Sie diesen Kontakt archivieren möchten? Dies entfernt ihn nicht aus dem System oder irgendwelchen Statistiken, sondern versteckt sie nur im normalen Kontaktverzeichnis. -confirmationArchiveEvent = Sind Sie sicher, dass Sie dieses Ereignis archivieren möchten? Dies entfernt es nicht aus dem System oder irgendwelchen Statistiken, sondern blendet es nur im normalen Ereignisverzeichnis aus. -confirmationArchiveEvents = Sind Sie sicher, dass Sie alle %d ausgewählten Ereignisse archivieren möchten? -confirmationArchiveEventParticipant = Sind Sie sicher, dass Sie diesen Ereignisteilnehmer archivieren möchten? Dies wird ihn nicht aus dem System oder irgendeiner Statistik entfernen, sondern nur aus der Liste der Ereignisteilnehmer ausblenden. -confirmationArchiveImmunization = Sind Sie sicher, dass Sie diese Immunisierung archivieren möchten? Dies entfernt sie nicht aus dem System oder irgendeiner Statistik, sondern versteckt sie nur im normalen Immunisierungsverzeichnis. +confirmationArchiveCase = Sind Sie sicher, dass Sie diesen Fall abschließen möchten? Dies entfernt ihn nicht aus dem System oder irgendwelchen Statistiken, sondern blendet ihn nur im normalen Fallverzeichnis aus. +confirmationArchiveCaseWithContacts = Verknüpfte Kontakte zusammen mit dem abgeschlossenen Fall abschließen +confirmationDearchiveCaseWithContacts = Verknüpfte Kontakte zusammen mit dem wiedereröffneten Fall wiedereröffnen +confirmationArchiveCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle abschließen möchten? +confirmationArchiveContact = Sind Sie sicher, dass Sie diesen Kontakt abschließen möchten? Dies entfernt ihn nicht aus dem System oder irgendwelchen Statistiken, sondern versteckt sie nur im normalen Kontaktverzeichnis. +confirmationArchiveEvent = Sind Sie sicher, dass Sie dieses Ereignis abschließen möchten? Dies entfernt es nicht aus dem System oder irgendwelchen Statistiken, sondern blendet es nur im normalen Ereignisverzeichnis aus. +confirmationArchiveEvents = Sind Sie sicher, dass Sie alle %d ausgewählten Ereignisse abschließen möchten? +confirmationArchiveEventParticipant = Sind Sie sicher, dass Sie diesen Ereignisteilnehmer abschließen möchten? Dies wird ihn nicht aus dem System oder irgendeiner Statistik entfernen, sondern nur aus der Liste der Ereignisteilnehmer ausblenden. +confirmationArchiveImmunization = Sind Sie sicher, dass Sie diese Immunisierung abschließen möchten? Dies entfernt sie nicht aus dem System oder irgendeiner Statistik, sondern versteckt sie nur im normalen Immunisierungsverzeichnis. confirmationArchiveTask = Sind Sie sicher, dass Sie alle %d ausgewählten Aufgaben archivieren möchten? confirmationArchiveTasks = Sind Sie sicher, dass Sie diese Aufgabe archivieren möchten? Dies entfernt sie nicht aus dem System oder irgendwelchen Statistiken, sondern versteckt sie nur in der normalen Aufgabenverwaltung. -confirmationArchiveTravelEntry = Sind Sie sicher, dass Sie diese Einreise archivieren möchten? Dies entfernt sie nicht aus dem System oder irgendeiner Statistik, sondern versteckt sie nur im normalen Einreiseverzeichnis. +confirmationArchiveTravelEntry = Sind Sie sicher, dass Sie diese Einreise abschließen möchten? Dies entfernt sie nicht aus dem System oder irgendeiner Statistik, sondern versteckt sie nur im normalen Einreiseverzeichnis. confirmationArchiveEventGroup = Sind Sie sicher, dass Sie diese Ereignisgruppe archivieren möchten? Dies entfernt sie nicht aus dem System oder irgendeiner Statistik, sondern versteckt sie nur im normalen Ereignisgruppenverzeichnis. confirmationCancelFollowUp = Sind Sie sicher, dass Sie die Nachverfolgung aller %d ausgewählten Kontakte abbrechen möchten? confirmationChangeCaseDisease = Fallerkrankung wirklich ändern? confirmationDearchiveCampaign = Sind Sie sicher, dass Sie diese Kampagne de-archivieren wollen? Dadurch wird sie wieder im normalen Kampagnen-Verzeichnis erscheinen. -confirmationDearchiveCase = Sind Sie sicher, dass Sie diesen Fall de-archivieren möchten? Er wird dann im normalen Verzeichnis wieder angezeigt. -confirmationDearchiveCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle de-archivieren möchten? -confirmationDearchiveContact = Sind Sie sicher, dass Sie diesen Fall de-archivieren möchten? Er wird dann im normalen Fallverzeichnis wieder angezeigt. -confirmationDearchiveEvent = Sind Sie sicher, dass Sie dieses Ereignis de-archivieren möchten? Er wird dann im normalen Ereignisverzeichnis wieder angezeigt. -confirmationDearchiveEvents = Sind Sie sicher, dass Sie alle %d ausgewählten Ereignisse de-archivieren möchten? -confirmationDearchiveEventParticipant = Sind Sie sicher, dass Sie diesen Ereignisteilnehmer dearchivieren möchten? Dies wird ihn in der normalen Ereignisteilnehmerliste wieder erscheinen lassen. +confirmationDearchiveCase = Sind Sie sicher, dass Sie diesen Fall wiedereröffnen möchten? Er wird dann im normalen Verzeichnis wieder angezeigt. +confirmationDearchiveCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle wiedereröffnen möchten? +confirmationDearchiveContact = Sind Sie sicher, dass Sie diesen Kontakt wiedereröffnen möchten? Dies wird ihn erneut im normalen Kontaktverzeichnis erscheinen lassen. +confirmationDearchiveEvent = Sind Sie sicher, dass Sie dieses Ereignis wiedereröffnen möchten? Er wird dann im normalen Ereignisverzeichnis wieder angezeigt. +confirmationDearchiveEvents = Sind Sie sicher, dass Sie alle %d ausgewählten Ereignisse wiedereröffnen möchten? +confirmationDearchiveEventParticipant = Sind Sie sicher, dass Sie diesen Ereignisteilnehmer wiedereröffnen möchten? Dies wird ihn in der normalen Ereignisteilnehmerliste wieder erscheinen lassen. confirmationDearchiveEventGroup = Sind Sie sicher, dass Sie diese Ereignisgruppe dearchivieren möchten? Dadurch wird sie im normalen Ereignisgruppenverzeichnis wieder angezeigt. confirmationDeleteCases = Sind Sie sicher, dass Sie alle %d ausgewählten Fälle löschen möchten? confirmationDeleteContacts = Sind Sie sicher, dass Sie alle %d ausgewählten Kontakte löschen möchten? @@ -198,12 +198,12 @@ confirmationArchiveCommunities = Sind Sie sicher, dass Sie alle %d ausgewählten confirmationDearchiveCommunities = Sind Sie sicher, dass Sie alle %d ausgewählten Gemeinden de-archivieren möchten? confirmationArchiveFacilities = Sind Sie sicher, dass Sie alle %d ausgewählten Einrichtungen archivieren möchten? confirmationDearchiveFacilities = Sind Sie sicher, dass Sie alle %d ausgewählten Einrichtungen de-archivieren möchten? -confirmationDearchiveImmunization = Sind Sie sicher, dass Sie diese Immunisierung de-archivieren möchten? Dadurch wird sie erneut im normalen Immunisierungsverzeichnis erscheinen. +confirmationDearchiveImmunization = Sind Sie sicher, dass Sie diese Immunisierung wiedereröffnen möchten? Dadurch wird sie erneut im normalen Immunisierungsverzeichnis erscheinen. confirmationArchiveLaboratories = Sind Sie sicher, dass Sie alle %d ausgewählten Labore archivieren möchten? confirmationDearchiveLaboratories = Sind Sie sicher, dass Sie alle %d ausgewählten Labore de-archivieren möchten? confirmationDearchiveTask = Sind Sie sicher, dass Sie diese Aufgabe de-archivieren möchten? Sie wird dann in der normalen Verwaltung wieder angezeigt. confirmationDearchiveTasks = Sind Sie sicher, dass Sie alle %d ausgewählten Aufgaben de-archivieren möchten? -confirmationDearchiveTravelEntry = Sind Sie sicher, dass Sie diese Einreise de-archivieren möchten? Dies wird sie im normalen Einreiseverzeichnis wieder erscheinen lassen. +confirmationDearchiveTravelEntry = Sind Sie sicher, dass Sie diese Einreise wiedereröffnen möchten? Dies wird sie im normalen Einreiseverzeichnis wieder erscheinen lassen. confirmationArchivePointsOfEntry = Sind Sie sicher, dass Sie alle %d ausgewählten Einreiseorte archivieren möchten? confirmationDearchivePointsOfEntry = Sind Sie sicher, dass Sie alle %d ausgewählten Einreiseorte de-archivieren möchten? confirmationContactSourceCaseDiscardUnsavedChanges = Durch das Ändern oder Entfernen des Indexfalls eines Kontakts werden alle ungespeicherten Änderungen, die Sie an dem Kontakt vorgenommen haben, verworfen. Sind Sie sicher, dass Sie fortfahren möchten? @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Sind Sie sicher, dass Sie diese Zeile entfernen confirmationRemoveGridRowConfirm=Ja confirmationRemoveGridRowCancel=Nein confirmationSetMissingGeoCoordinates=Diese Aktion wird Geo-Koordinaten für jede Person generieren, die eine Adresse angegeben, aber keine Geo-Koordinaten eingegeben haben. Bitte beachten Sie, dass diese Aktion alle Personen in Ihrem Zuständigkeitsbereich betrifft, unabhängig von den unten eingestellten Filtern. Warnung\: Abhängig von der Anzahl der Personen könnte diese Methode lange dauern. -confirmationSuperordinateEventDiscardUnsavedChanges = Verknüpfen oder Trennen eines übergeordneten Ereignisses verwirft alle ungespeicherten Änderungen, die Sie an diesem Ereignis vorgenommen haben. Sind sie sicher, dass Sie fortfahren möchten? confirmationLocationFacilityAddressOverride = Die ausgewählte Einrichtung hat Standortdetails, die sich von denen unterscheiden, die Sie gerade bearbeiten. Möchten Sie sie mit denen der Einrichtung überschreiben? confirmationCancelExternalFollowUpPopup=Sind Sie sicher, dass Sie externe Nachverfolgungen im Symptomtagebuch abbrechen möchten? confirmationUnlinkCaseFromEvent = Sind Sie sicher, dass Sie die Verknüpfung zu diesem Ereignis entfernen möchten? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = Dies ist das erste Mal, dass Labormeldungen abger confirmationSeeAllPersons=Sind Sie sicher, dass Sie Personen nach allen Verbindungstypen suchen möchten? Dies kann zu einer langsamen Reaktion führen. confirmationLabMessageCorrection = Diese Labormeldung enthält Korrekturen zu einer vorherigen.
Möchten Sie diese Korrekturen aus dieser Labormeldung bearbeiten? confirmLabMessageCorrectionThrough = Keine anderen neuen oder geänderten Informationen konnten automatisch aus der Labornachricht ermittelt werden. Möchten Sie manuell weitere Informationen hinzufügen oder bearbeiten? +confirmationDeleteCaseContacts = Möchten Sie auch alle Kontakte von diesem Fall löschen? # Entities entityAction=Aktion @@ -302,7 +302,7 @@ entityVaccinations = Impfungen # Error Messages errorAccessDenied=Ihnen fehlt die Berechtigung, um diese Seite anzusehen. errorEntityOutdated=Die Daten konnten nicht gespeichert werden, da sie in der Zwischenzeit geändert wurden. -errorFieldValidationFailed=Bitte überprüfen Sie die eingegebenen Daten. Mindestens ein Feld, das ausgefüllt werden muss, ist leer. +errorFieldValidationFailed=Bitte überprüfen Sie die eingegebenen Daten. Mindestens ein Feld hat Fehler. errorIntegerFieldValidationFailed=Bitte überprüfen Sie die eingegebenen Daten. Mindestens eines der Felder, in denen eine Zahl erwartet wurde, enthält etwas anderes. errorLabResultsAdapterNotFound = Der externe Labormeldungen-Adapter konnte nicht gefunden werden. Bitte stellen Sie sicher, dass er in Ihrem System installiert und in Ihren sormas.properties korrekt spezifiziert ist. errorNoAccessToWeb=Ihr Benutzerkonto hat keinen Zugriff auf die Webanwendung @@ -376,13 +376,13 @@ headingAdditionalTests = Zusätzliche Tests headingAllContacts = Alle Kontakte headingAnimalContacts = Tierkontakte headingArchiveCampaign = Archivierte Kampagnen -headingArchiveCase = Fall archivieren -headingArchiveContact = Kontakt archivieren -headingArchiveEvent = Ereignis archivieren -headingArchiveEventParticipant = Ereignisteilnehmer archivieren +headingArchiveCase = Fall abschließen +headingArchiveContact = Kontakt abschließen +headingArchiveEvent = Ereignis abschließen +headingArchiveEventParticipant = Ereignisteilnehmer abschließen headingArchiveEventGroup = Ereignisgruppe archivieren -headingArchiveImmunization = Immunisierung archivieren -headingArchiveTravelEntry = Einreise archivieren +headingArchiveImmunization = Immunisierung abschließen +headingArchiveTravelEntry = Einreise abschließen headingCampaignBasics = Grundlagen der Kampagne headingCampaignData = Daten der Kampagne headingCampaignDashboard = Kampagnenübersicht @@ -392,8 +392,8 @@ headingCaseFound = Fall gefunden headingCaseImport = Fall Import headingPointOfEntryImport = Import Einreiseort headingCaseStatusMap = Fallstatuskarte -headingCasesArchived = Fälle archiviert -headingCasesDearchived = Fälle de-archiviert +headingCasesArchived = Fälle abgeschlossen +headingCasesDearchived = Fälle wiedereröffnet headingCasesDeleted = Fälle gelöscht headingCaseConversion = Konvertierung in Fall headingChangeCaseDisease = Fallerkrankung ändern @@ -409,7 +409,7 @@ headingConfirmDeletion = Löschen bestätigen headingConfirmMerging = Zusammenführung bestätigen headingConfirmUpdateCompleteness = Vollständigkeitswerte aktualisieren headingContactData = Kontaktdaten -headingContactsArchived = Kontakte archiviert +headingContactsArchived = Kontakte abgeschlossen headingConfirmEnabling = Aktivieren bestätigen headingConfirmDisabling = Deaktivieren bestätigen headingUnderFollowUp = In der Nachverfolgung @@ -443,13 +443,13 @@ headingCreateNewVisit = Neuen Anruf erstellen headingCreatePathogenTestResult = Neues Erregertestergebnis erstellen headingDatabaseExportFailed = Datenbank-Export fehlgeschlagen headingDearchiveCampaign = Kampagne de-archivieren -headingDearchiveCase = Fall de-archivieren -headingDearchiveContact = Kontakt de-archivieren -headingDearchiveEvent = Ereignis de-archivieren -headingDearchiveEventParticipant = Ereignisteilnehmer de-archivieren +headingDearchiveCase = Fall wiedereröffnen +headingDearchiveContact = Kontakt wiedereröffnen +headingDearchiveEvent = Ereignis wiedereröffnen +headingDearchiveEventParticipant = Ereignisteilnehmer wiedereröffnen headingDearchiveEventGroup = Ereignisgruppe de-archivieren -headingDearchiveImmunization = Immunisierung de-archivieren -headingDearchiveTravelEntry = Einreise de-archivieren +headingDearchiveImmunization = Immunisierung wiedereröffnen +headingDearchiveTravelEntry = Einreise wiedereröffnen headingDefineOutbreakDistricts = Legen Sie fest, welche Landkreise von einem Ausbruch betroffen sind. headingDownloadDocumentTemplateGuide = SORMAS Datenvorlagen-Anleitung herunterladen headingDownloadImportTemplate = Importvorlage herunterladen @@ -483,8 +483,8 @@ headingEventGroupData = Ereignisgruppendaten headingEventParticipantsDeleted = Ereignisteilnehmer gelöscht headingEventParticipantResponsibleJurisdictionUpdated = Ereignisteilnehmer Zuständigkeitsaktualisierung headingEventJurisdictionUpdated = Ereignis Zuständigkeitsbereich Aktualisierung -headingEventsArchived = Ereignisse archiviert -headingEventsDearchived = Ereignisse de-archiviert +headingEventsArchived = Ereignisse abgeschlossen +headingEventsDearchived = Ereignisse wiedereröffnet headingEventsDeleted = Ereignisse gelöscht headingEventsSentToExternalSurveillanceTool = An die Meldesoftware gesendete Ereignisse headingExportFailed = Export fehlgeschlagen @@ -645,6 +645,7 @@ headingEventNotDeleted = Ereignisse nicht gelöscht headingSomeCasesNotDeleted = Einige Fälle wurden nicht gelöscht headingSomeEventsNotDeleted = Einige Ereignisse wurden nicht gelöscht headingContactConfirmationRequired = Kontaktbestätigung erforderlich +headingContactConversionFollowUpCommentLarge = Nachverfolgungs-Kommentar wird die maximal zulässige Anzahl von Zeichen überschreiten headingSelectSourceCase = Indexfall wählen headingRemoveCaseFromContact = Fall vom Kontakt entfernen headingDiscardUnsavedChanges = Ungespeicherte Änderungen verwerfen @@ -681,16 +682,12 @@ headingFetchLabMessages = Neue Labormeldungen abrufen headingCaution = Achtung headingUnavailableTaskEdition = Unverfügbare Aufgabenbearbeitung headingDeleteVaccinations = Impfungen entfernen - headingDocumentCreated = Dokument erstellt headingUsersEnabled = Benutzer aktiviert headingUsersDisabled = Benutzer deaktiviert - headingConfirmUnclearLabMessage=Unklar bestätigen headingConfirmManuallyForwardedLabMessage=Weitergeleitet bestätigen - headingUpdateCaseWithNewDiseaseVariant=Krankheitsvariante des Falls aktualisieren - headingRejectSormasToSormasShareRequest=Anfrage ablehnen headingShareRequestDetails=Details der Anfrage headingShareRequestCases=Fälle @@ -698,13 +695,10 @@ headingShareRequestContacts=Kontakte headingShareRequestEvents=Ereignisse headingShareRequestEventParticipants=Ereignisteilnehmer headingRevokeSormasToSormasShareRequest=Anfrage widerrufen - headingCaseResponsibleJurisidction=Zuständigkeitsbereich headingSeeAllPersons=Personen für alle Verbindungstypen anzeigen - headingPlaceOfStayInHospital = Aufenthaltsort im Krankenhaus headingCurrentHospitalization = Aktueller Krankenhausaufenthalt - headingCorrectPerson = Personendaten korrigieren headingPreviousPersonInformation = Vorherige Personeninformationen headingUpdatedPersonInformation = Aktualisierte Personeninformationen @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Erregertest-Daten korrigieren headingPreviousPathogenTestInformation = Vorherige Erregertestinformationen headingUpdatedPathogenTestInformation = Aktualisierte Erregertestinformationen headingLabMessageCorrectionThrough = Keine weiteren Änderungen gefunden +headingDeleteContacts = Kontakte löschen immunizationVaccinationHeading = Impfung immunizationRecoveryHeading = Genesung @@ -722,11 +717,11 @@ immunizationRecoveryHeading = Genesung # Info texts infoActivityAsCaseInvestigation = Bitte dokumentieren Sie ALLE relevanten Betreuungen, Unterbringungen und Tätigkeiten in Einrichtungen\: infoAddTestsToSample = Um ein Testergebnis zu dieser Probe hinzuzufügen, muss es zuerst als empfangen markiert werden. -infoArchivedCases = Fälle werden automatisch nach %d Tagen ohne Änderungen der Daten archiviert. -infoArchivedContacts = Kontakte werden nach %d Tagen automatisch ohne Änderungen der Daten archiviert. -infoArchivedEvents = Ereignisse werden automatisch nach %d Tagen ohne Änderungen der Daten archiviert. -infoArchivedEventParticipants = Ereignisteilnehmer werden nach %d Tagen automatisch ohne Änderungen der Daten archiviert. -infoArchivedTravelEntries = Einreisen werden nach %d Tagen automatisch ohne Änderungen der Daten archiviert. +infoArchivedCases = Fälle werden automatisch nach %d Tagen ohne Änderungen der Daten abgeschlossen. +infoArchivedContacts = Kontakte werden nach %d Tagen automatisch ohne Änderungen der Daten abgeschlossen. +infoArchivedEvents = Ereignisse werden automatisch nach %d Tagen ohne Änderungen der Daten abgeschlossen. +infoArchivedEventParticipants = Ereignisteilnehmer werden nach %d Tagen automatisch ohne Änderungen der Daten abgeschlossen. +infoArchivedTravelEntries = Einreisen werden nach %d Tagen automatisch ohne Änderungen der Daten abgeschlossen. infoAssigneeMissingEmail = Der dieser Aufgabe zugewiesene Benutzer hat keine E-Mail-Adresse angegeben und wird daher nicht benachrichtigt. infoObserverMissingEmail = Mindestens einer der Beobachter dieser Aufgabe hat keine E-Mail-Adresse angegeben und wird daher nicht benachrichtigt. infoAssigneeMissingEmailOrPhoneNumber = Der dieser Aufgabe zugewiesene Benutzer hat weder eine E-Mail-Adresse noch eine Telefonnummer angegeben und wird daher nicht benachrichtigt. @@ -906,16 +901,16 @@ messageAllContactsAlreadyInEvent = Alle Kontakte sind bereits mit dem ausgewähl messageAllContactsLinkedToEvent = Alle Kontakte wurden mit dem ausgewählten Ereignis verknüpft. messageAlreadyEventParticipant = Die Person, die Sie ausgewählt haben, ist bereits als Ereignisteilnehmer dieser Veranstaltung definiert. messageAnimalContactsHint = Bitte geben Sie eine Antwort in Bezug auf ALLE Tiere (lebendig oder tot) an, denen die Person während der Inkubationszeit direkt ausgesetzt war (z.B. Jagd, Berühren, Essen). -messageArchiveUndoneReasonMandatory = Bitte geben Sie einen Grund für die Dearchivierung an +messageArchiveUndoneReasonMandatory = Bitte geben Sie einen Grund für die Wiedereröffnung an messageCampaignArchived = Kampagne wurde archiviert messageCampaignCreated = Neue Kampagne erstellt messageCampaignDearchived = Kampagne wurde de-archiviert messageCampaignDeleted = Kampagne gelöscht messageCampaignSaved = Kampagne gespeichert messageCampaignFormSaved = %s gespeichert -messageCaseArchived = Fall wurde archiviert +messageCaseArchived = Fall wurde abgeschlossen messageCaseCreated = Neuer Fall erstellt -messageCaseDearchived = Fall wurde de-archiviert +messageCaseDearchived = Fall wurde wiedereröffnet messageCaseDuplicateDeleted = Der doppelte Fall wurde gelöscht. messageCaseIncidenceUnsupportedAgeGroup = Die Fall-Inzidenzanteile können nur für 5-Jahres-Intervalle erstellt werden. Bitte entfernen Sie alle anderen Altersschichtungsfilter und Visualisierungsgruppierungen. messageCaseReferredFromPoe = Fall wurde an die angegebene Einrichtung weitergeleitet @@ -923,11 +918,11 @@ messageCaseRelationToEventWithoutDisease=Es ist nicht möglich, einen Fall mit e messageCaseSaved = Fall gespeichert messageCaseSavedClassificationChanged = Fall gespeichert. Die Falldefinitionskategorie wurde automatisch auf %s geändert. messageCaseTransfered = Fall wurde an eine andere Einrichtung übertragen -messageCasesArchived = Alle ausgewählten Fälle wurden archiviert -messageCasesDearchived = Alle ausgewählten Fälle wurden de-archiviert +messageCasesArchived = Alle ausgewählten Fälle wurden abgeschlossen +messageCasesDearchived = Alle ausgewählten Fälle wurden wiedereröffnet messageCasesDeleted = Alle ausgewählten Fälle wurden gelöscht messageCasesEdited = Alle Fälle wurden bearbeitet -messageCasesEditedExceptArchived = %s Fälle wurden erfolgreich bearbeitet. Einige Fälle konnten nicht bearbeitet werden, da sie in einem anderen Zuständigkeitsbereich liegen oder bereits archiviert wurden. +messageCasesEditedExceptArchived = %s Fälle wurden erfolgreich bearbeitet. Einige Fälle konnten nicht bearbeitet werden, da sie in einem anderen Zuständigkeitsbereich liegen oder bereits abgeschlossen wurden. messageCasesMerged = Fälle wurden zusammengeführt und der doppelte Fall gelöscht. messageCasesSentToExternalSurveillanceTool = Alle ausgewählten Fälle wurden an die Meldesoftware gesendet messageCasesNotDeletedReasonExternalSurveillanceTool = Einige Fälle wurden nicht gelöscht, weil die Kommunikation mit der Meldesoftware fehlgeschlagen ist. @@ -947,12 +942,12 @@ messageConvertEventParticipantToCase=Sie haben gerade ein positives Laborergebni messageConvertEventParticipantToCaseDifferentDiseases=Sie haben gerade ein positives Laborergebnis für eine andere Krankheit gespeichert als die Ereigniskrankheit. Möchten Sie einen Fall mit dieser Krankheit für die Ereignisteilnehmer Person erstellen? Der Fall wird nicht mit dem Ereignisteilnehmer verknüpft. messageConvertEventParticipantToCaseNoDisease=Sie haben gerade ein positives Laborergebnis für ein Ereignis ohne Krankheit gespeichert. Möchten Sie einen Fall mit dieser Krankheit für die Ereignisteilnehmer Person erstellen? Das Endergebnis der Probe wird automatisch auf positiv gesetzt, aber der Fall wird nicht mit dem Ereignisteilnehmer verbunden. messageContactCreated=Neuer Kontakt angelegt -messageContactArchived = Kontakt wurde archiviert -messageContactDearchived = Kontakt wurde dearchiviert +messageContactArchived = Kontakt wurde abgeschlossen +messageContactDearchived = Kontakt wurde wiedereröffnet messageContactSaved = Kontaktdaten gespeichert messageContactsDeleted = Alle ausgewählten Kontakte wurden gelöscht messageContactsEdited = Alle Kontakte wurden bearbeitet -messageContactsEditedExceptArchived = %s Kontakte wurden erfolgreich bearbeitet. Einige Kontakte konnten nicht bearbeitet werden, da sie in einem anderen Zuständigkeitsbereich liegen oder bereits archiviert wurden. +messageContactsEditedExceptArchived = %s Kontakte wurden erfolgreich bearbeitet. Einige Kontakte konnten nicht bearbeitet werden, da sie in einem anderen Zuständigkeitsbereich liegen oder bereits abgeschlossen wurden. messageContactDuplicateDeleted = Der doppelte Kontakt wurde gelöscht. messageContactsMerged = Kontakte wurden zusammengeführt und der doppelte Kontakt gelöscht. messageCopyPassword = Bitte kopieren Sie dieses Passwort, es wird nur einmal angezeigt. @@ -970,7 +965,7 @@ messageContactExternalTokenWarning = Das eingegebene externe Aktenzeichen wird b messageEventExternalTokenWarning = Das eingegebene externe Aktenzeichen wird bereits von einem anderen Ereignis verwendet. Bitte weisen Sie diesem oder dem anderen Ereignis ein neues Aktenzeichen zu. messagePersonExternalTokenWarning = Das eingegebene externe Aktenzeichen wird bereits von einer anderen Person verwendet. Bitte weisen Sie dieser oder der anderen Person ein neues Aktenzeichen zu. messageErrorReportNotAvailable = Die Fehlerberichtsdatei ist nicht verfügbar. Bitte kontaktieren Sie einen Administrator und teilen Sie ihm dieses Problem mit. -messageEventArchived = Ereignis wurde archiviert +messageEventArchived = Ereignis wurde abgeschlossen messageEventGroupArchived = Ereignisgruppe wurde archiviert messageEventCreated = Neues Ereignis erstellt messageEventGroupCreated = Neue Ereignisgruppe erstellt @@ -981,10 +976,10 @@ messageEventSuperordinateEventUnlinked = Die Verbindung zwischen diesem Ereignis messageEventSubordinateEventUnlinked = Die Verbindung zwischen diesem Ereignis und seinem untergeordneten Ereignis wurde erfolgreich entfernt messageEventParticipationUnlinked = Die Verknüpfung zwischen diesem Fall und dem Ereignis wurde erfolgreich getrennt messageEventUnlinkedFromEventGroup = Die Verknüpfung zwischen diesem Ereignis und der Ereignisgruppe wurde erfolgreich getrennt -messageEventDearchived = Ereignis wurde de-archiviert +messageEventDearchived = Ereignis wurde wiedereröffnet messageEventGroupDearchived = Ereignisgruppe wurde de-archiviert -messageEventParticipantArchived = Ereignisteilnehmer wurde archiviert -messageEventParticipantDearchived = Ereignisteilnehmer wurde dearchiviert +messageEventParticipantArchived = Ereignisteilnehmer wurde abgeschlossen +messageEventParticipantDearchived = Ereignisteilnehmer wurde wiedereröffnet messageEventParticipantCreated = Neue Person erstellt messageEventParticipantSaved = Personendaten gespeichert messageEventParticipantsDeleted = Alle ausgewählten Ereignisteilnehmenden wurden gelöscht @@ -994,8 +989,8 @@ messageEventParticipantToContactWithoutEventDisease=Es ist nicht möglich, einen messageEventJurisdictionUpdated = Das Ändern oder Entfernen des Zuständigkeitsbereiches dieses Ereignisteilnehmers könnte dazu führen, dass Sie den Zugriff auf seine persönlichen Daten verlieren und/oder es Ihnen nicht erlaubt wird, diese in der Zukunft zu bearbeiten. Sind Sie sicher, dass Sie fortfahren möchten? messageEventSaved = Ereignisdaten gespeichert messageEventGroupSaved = Ereignisgruppendaten gespeichert -messageEventsArchived = Alle ausgewählten Ereignisse wurden archiviert -messageEventsDearchived = Alle ausgewählten Ereignisse wurden de-archiviert +messageEventsArchived = Alle ausgewählten Ereignisse wurden abgeschlossen +messageEventsDearchived = Alle ausgewählten Ereignisse wurden wiedereröffnet messageEventsDeleted = Alle ausgewählten Ereignisse wurden gelöscht messageEventsSentToExternalSurveillanceTool = Alle ausgewählten Ereignisse wurden an die Meldesoftware gesendet messageEventsSentToSurvnet = Alle ausgewählten Ereignisse wurden an SurvNet gesendet @@ -1005,7 +1000,7 @@ messageEventsNotDeletedReason = Keine Ereignisse, die verlinkte Teilnehmer entha messageCountEventsNotDeletedExternalSurveillanceTool=%s Ereignisse, die aufgrund der Kommunikation mit der Meldesoftware nicht gelöscht wurden. Nicht gelöschte Ereignis-Ids\: %s messageEventsNotDeletedReasonExternalSurveillanceTool=Einige Ereignisse wurden nicht gelöscht, weil die Kommunikation mit der Meldesoftware fehlgeschlagen ist. messageEventsEdited = Alle Ereignisse wurden bearbeitet -messageEventsEditedExceptArchived = %s Ereignisse wurden erfolgreich bearbeitet. Einige Ereignisse konnten nicht bearbeitet werden, da sie in einem anderen Zuständigkeitsbereich liegen oder bereits archiviert wurden. +messageEventsEditedExceptArchived = %s Ereignisse wurden erfolgreich bearbeitet. Einige Ereignisse konnten nicht bearbeitet werden, da sie in einem anderen Zuständigkeitsbereich liegen oder bereits abgeschlossen wurden. messageExportFailed = Es gab einen Fehler beim Export der Daten. Bitte kontaktieren Sie einen Administrator und informieren Sie ihn über dieses Problem. messageExportConfigurationDeleted = Exporteinstellung gelöscht messageExportConfigurationSaved = Exporteinstellung gespeichert @@ -1015,8 +1010,8 @@ messageFacilityChanged = Sie haben die Einrichtung dieses Falls geändert. Möch messageFacilityMulitChanged = Sie haben die Einrichtung mehrerer Fälle geändert. Möchten Sie den Fall an die neue Einrichtung übertragen (der Krankenhausaufenthalt wird möglicherweise aktualisiert) oder nur die Daten bearbeiten, um einen Fehler zu korrigieren? messageGdpr = Gemäß dem von der DSGVO vorgeschriebenen Prinzip der Datenminimierung müssen Sie sicherstellen, dass Sie hier nur objektive Daten eingeben, die für die Verarbeitung der Daten absolut notwendig sind. Insbesondere dürfen Sie weder biometrische, philosophische, politische oder religiöse Daten, noch gewerkschaftliche Meinungen, sexuelles Leben oder Orientierung, ethnische Herkunft, Straftaten, Verurteilungen, Sicherheitsmaßnahmen, Vorbestrafungen ... oder andere Daten, die nicht mit der Gesundheitsbefragung zusammenhängen eingeben. messageGdprCheck = Ich habe diese Informationen gelesen, bitte dieses Fenster nicht mehr anzeigen -messageImmunizationArchived = Immunisierung wurde archiviert -messageImmunizationDearchived = Immunisierung wurde dearchiviert +messageImmunizationArchived = Immunisierung wurde abgeschlossen +messageImmunizationDearchived = Immunisierung wurde wiedereröffnet messageImmunizationSaved = Immunisierungsdaten gespeichert messageImmunizationSavedVaccinationStatusUpdated = Immunisierungsdaten gespeichert. Der Impfstatus von passenden Fällen, Kontakten und Ereignisteilnehmern der Person wurde auf geimpft aktualisiert. messageImportCanceled = Import abgebrochen\!
Der Import wurde abgebrochen. Alle bereits verarbeiteten Zeilen wurden erfolgreich importiert. Sie können dieses Fenster nun schließen. @@ -1078,8 +1073,8 @@ messageTasksDearchived = Alle ausgewählten Aufgaben wurden de-archiviert messageTasksDeleted = Alle ausgewählten Aufgaben wurden gelöscht messageTemplateNotAvailable = Die Vorlagen-Datei ist nicht verfügbar. Bitte kontaktieren Sie einen Administrator und teilen Sie ihm dieses Problem mit. messageTravelEntrySaved = Einreisedaten gespeichert -messageTravelEntryArchived = Einreise wurde archiviert -messageTravelEntryDearchived = Einreise wurde dearchiviert +messageTravelEntryArchived = Einreise wurde abgeschlossen +messageTravelEntryDearchived = Einreise wurde wiedereröffnet messageTravelEntryPOEFilledBySystem = [System] Automatisch befüllter Einreiseort messageTravelEntriesDeleted = Alle ausgewählten Einreisen wurden gelöscht messageTreatmentCreated = Behandlung erstellt @@ -1163,23 +1158,25 @@ messageLaboratoriesArchived = Alle ausgewählten Labore wurden archiviert messageLaboratoriesDearchived = Alle ausgewählten Labore wurden de-archiviert messagePointsOfEntryArchived = Alle ausgewählten Einreiseorte wurden archiviert messagePointsOfEntryDearchived = Alle ausgewählten Einreiseorte wurden de-archiviert -messageFormHasErrorsPathogenTest = Bitte füllen Sie alle Pflichtfelder aus, bevor Sie Erregertests bearbeiten oder erstellen messageForwardedLabMessageFound = Es existiert mindestens eine andere Labormeldung mit der gleichen Meldungs-ID, die weitergeleitet wurde. Möchten Sie das Verarbeiten dieser Labormeldung fortsetzen? messageNoCaseFound = Es konnte kein Fall gefunden werden, der dem eingegebenen Suchbegriff entspricht. messageNoCaseFoundToLinkImmunization = Es gibt keinen Fall, der den Suchkriterien und Linkbedingungen entspricht. messageNoEventFound = Es konnte kein Ereignis gefunden werden, das mit dem eingegebenen Suchbegriff übereinstimmt. messageContactToCaseConfirmationRequired = Sie können nur bestätigte Kontakte in Fälle umwandeln. Bitte bestätigen Sie den Kontakt, bevor Sie einen Fall für seine Kontaktperson erstellen. +messageContactConversionFollowUpCommentLarge = Wenn diese Aktion ausgeführt wird, wird die Nachverfolgung automatisch abgebrochen und die folgende Nachricht an den Nachverfolgungs-Kommentar angehängt\:

%s

Die maximale Länge des Nachverfolgungs-Kommentar-Feldes würde durch Anhängen dieser Nachricht überschritten werden. Bitte wählen Sie aus, ob Sie die Aktion abbrechen, die Länge des Nachverfolgungs-Kommentars reduzieren und es erneut versuchen oder die oben angezeigte Nachricht weglassen möchten. +messageContactConversionFollowUpCommentLargeAdjustComment = Kommentar anpassen +messageContactConversionFollowUpCommentLargeOmitMessage = Nachricht weglassen messageContactCaseRemoved = Der Indexfall wurde von diesem Kontakt entfernt messageContactCaseChanged = Der Indexfall des Kontakts wurde geändert messageSampleOpened = Probe für Suchbegriff geöffnet -messageSystemFollowUpCanceled = [System] Die Nachverfolgung wurde automatisch abgebrochen, weil der Kontakt in einen Fall umgewandelt wurde +messageSystemFollowUpCanceled = [System] Die Nachverfolgung wurde automatisch abgebrochen, weil der Kontakt in einen Fall konvertiert wurde messageSystemFollowUpCanceledByDropping = [System] Nachverfolgung automatisch abgebrochen, weil der Kontaktstatus auf abgebrochen gesetzt wurde messageSetContactRegionAndDistrict = Bitte wählen Sie ein zuständiges Bundesland und zuständigen Landkreis aus und speichern Sie den Kontakt, bevor Sie den Indexfall entfernen. messageAllCampaignFormsValid = Alle Kampagnenformulare wurden erfolgreich validiert messageEnterSms = Bitte geben Sie hier Ihre SMS Nachricht ein\: messageSelectedPeriodTooLong = Sie haben einen Zeitraum ausgewählt, der die maximale Anzahl von Tagen überschreitet. Bitte stellen Sie sicher, dass der gewählte Zeitraum %d Tage nicht überschreitet. messagePersonAlreadyEventParticipant = Die Fall-Person ist bereits ein Ereignisteilnehmer in dem ausgewählten Ereignis. Dieser Fall wurde mit dem ausgewählten Ereignis verknüpft. -messagePersonAddedAsEventParticipant = Die Fall-Person wurde dem ausgewählten Ereignis als Ereignisteilnehmer hinzugefügt. +messagePersonAddedAsEventParticipant = Der neue Ereignisteilnehmer wurde erstellt. messagePersonAlreadyCaseInEvent = Dieser Fall ist bereits mit dem ausgewählten Ereignis verknüpft. messagePersonContactDetailsPrimaryDuplicate = Es gibt bereits primäre Kontaktdaten dieser Art für diese Person. Möchten Sie diese Kontaktdaten stattdessen als primäre Kontaktdaten festlegen? messageUserSyncCanceled = Synchronisation abgebrochen\!
Die Synchronisation wurde abgebrochen. Alle bereits verarbeiteten Benutzer wurden erfolgreich synchronisiert. Sie können dieses Fenster nun schließen. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Einreise von epi Woche... promptTravelEntryEpiWeekTo = ... bis Epi Woche # Unsaved changes -unsavedChanges.warningTitle = Änderungen bestätigen -unsavedChanges.warningMessage = Sie haben ungespeicherte Änderungen auf diesem Formular. +unsavedChanges.warningTitle = Ungespeicherte Änderungen +unsavedChanges.warningMessage = Dieses Formular enthält ungespeicherte Änderungen. Bitte entscheiden Sie, ob Sie die gerade ausgeführte Aktion abbrechen wollen, um sie zu überprüfen oder speichern bzw. verwerfen Sie die Änderungen und fahren fort. unsavedChanges.discard = Änderungen verwerfen unsavedChanges.save = Änderungen speichern -unsavedChanges.cancel = Navigation abbrechen +unsavedChanges.cancel = Aktion abbrechen headingNetworkDiagramTooManyContacts = Zu viele Kontakte warningNetworkDiagramTooManyContacts = Es gibt %d Kontakte und es ist möglich, dass Ihr Browser während der Anzeige des Diagramms einfriert.
Bitte wählen Sie ein kleineres Zeitfenster. diff --git a/sormas-api/src/main/resources/strings_en-AF.properties b/sormas-api/src/main/resources/strings_en-AF.properties index f815b34a235..0e220ca835e 100644 --- a/sormas-api/src/main/resources/strings_en-AF.properties +++ b/sormas-api/src/main/resources/strings_en-AF.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_en-GH.properties b/sormas-api/src/main/resources/strings_en-GH.properties index df4fbf7d5e5..09d3a8e5e29 100644 --- a/sormas-api/src/main/resources/strings_en-GH.properties +++ b/sormas-api/src/main/resources/strings_en-GH.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_en-NG.properties b/sormas-api/src/main/resources/strings_en-NG.properties index 3f1d9c6c9fa..b59031d9548 100644 --- a/sormas-api/src/main/resources/strings_en-NG.properties +++ b/sormas-api/src/main/resources/strings_en-NG.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_es-CU.properties b/sormas-api/src/main/resources/strings_es-CU.properties index 11764ad6ebc..60263e74d22 100644 --- a/sormas-api/src/main/resources/strings_es-CU.properties +++ b/sormas-api/src/main/resources/strings_es-CU.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = ¿Realmente cambiar la enfermedad del caso? confirmationDearchiveCampaign = ¿Está seguro de que desea desarchivar esta campaña? Esto hará que aparezca otra vez en el directorio normal de campañas. confirmationDearchiveCase = ¿Está seguro de que desea desarchivar este caso? Esto hará que aparezca otra vez en el directorio normal de casos. confirmationDearchiveCases = ¿Está seguro de que desea desarchivar todos los %d casos seleccionados? -confirmationDearchiveContact = ¿Está seguro de que desea desarchivar este caso? Esto hará que aparezca otra vez en el directorio normal de casos. +confirmationDearchiveContact = ¿Está seguro de que desea desarchivar este contacto? Esto hará que aparezca otra vez en el directorio normal de contactos. confirmationDearchiveEvent = ¿Está seguro de que desea desarchivar este evento? Esto hará que vuelva a aparecer en el directorio normal de eventos. confirmationDearchiveEvents = ¿Está seguro de que desea desarchivar todos los %d eventos seleccionados? confirmationDearchiveEventParticipant = ¿Está seguro de que desea desarchivar este participante de evento? Esto hará que vuelva a aparecer en lista normal de participantes de evento. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=¿Está seguro de que desea eliminar esta fila? confirmationRemoveGridRowConfirm=Sí confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=Esta acción rellenará las geo-coordenadas de cada persona que tenga una dirección especificada, pero carezca de geo-coordenadas. ¡Tenga en cuenta que esta acción afecta a todas las personas de su jurisdicción, con independencia de los filtros establecidos a continuación. Advertencia\: En dependencia del número de personas, este método puede tardar bastante tiempo. -confirmationSuperordinateEventDiscardUnsavedChanges = Vincular o desvincular un evento superior descartará todos los cambios no guardados que haya realizado en ese evento. ¿Está seguro de que desea continuar? confirmationLocationFacilityAddressOverride = La instalación seleccionada tiene detalles de ubicación que son diferentes de los que está editando actualmente. ¿Desea sobrescribirlos con los de la instalación? confirmationCancelExternalFollowUpPopup=¿Está seguro de que desea cancelar los seguimientos externos en el eDiary? confirmationUnlinkCaseFromEvent = ¿Está seguro de que desea desvincular este caso de este evento? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = Esta es la primera vez que se cargarán los mensa confirmationSeeAllPersons=¿Está seguro que desea buscar personas para todos los tipos de asociación? Esto podría resultar en una respuesta lenta. confirmationLabMessageCorrection = Este mensaje de laboratorio contiene correcciones a uno anterior.
¿Desea procesar esas correcciones desde este mensaje de laboratorio? confirmLabMessageCorrectionThrough = No se pudo determinar automáticamente ninguna otra información nueva o modificada a partir del mensaje de laboratorio. ¿Desea añadir o editar manualmente más información? +confirmationDeleteCaseContacts = ¿Desea también eliminar todos los contactos de este caso? # Entities entityAction=Acción @@ -302,7 +302,7 @@ entityVaccinations = Vacunaciones # Error Messages errorAccessDenied=No tiene los permisos necesarios para ver esta página. errorEntityOutdated=Los datos no se pudieron guardar porque fueron modificados en el ínterin. -errorFieldValidationFailed=Por favor revise los datos ingresados. Al menos un campo obligatorio está vacío. +errorFieldValidationFailed=Compruebe los datos introducidos. Al menos un campo tiene errores. errorIntegerFieldValidationFailed=Por favor revise los datos ingresados. Al menos uno de los campos donde se esperaba un número entero contiene otra cosa. errorLabResultsAdapterNotFound = No se pudo encontrar el adaptador de resultados de laboratorio externo. Por favor, asegúrese de que está instalado en su sistema y especificado correctamente en su sormas.properties. errorNoAccessToWeb=Su cuenta de usuario no tiene acceso a la aplicación web @@ -645,6 +645,7 @@ headingEventNotDeleted = Evento no eliminado headingSomeCasesNotDeleted = Algunos casos no fueron eliminados headingSomeEventsNotDeleted = Algunos eventos no fueron eliminados headingContactConfirmationRequired = Confirmación del contacto requerida +headingContactConversionFollowUpCommentLarge = El comentario de seguimiento excederá el máximo de caracteres permitidos headingSelectSourceCase = Seleccionar caso de origen headingRemoveCaseFromContact = Eliminar caso del contacto headingDiscardUnsavedChanges = Descartar los cambios no guardados @@ -681,16 +682,12 @@ headingFetchLabMessages = Obtener nuevos mensajes de laboratorio headingCaution = Alerta headingUnavailableTaskEdition = Edición de tareas no disponible headingDeleteVaccinations = Eliminar vacunaciones de inmunización - headingDocumentCreated = Documento creado headingUsersEnabled = Usuarios activados headingUsersDisabled = Usuarios desactivados - headingConfirmUnclearLabMessage=Confirmar poco claro headingConfirmManuallyForwardedLabMessage=Confirmar reenviado - headingUpdateCaseWithNewDiseaseVariant=Actualizar variante de enfermedad de caso - headingRejectSormasToSormasShareRequest=Rechazar solicitud de compartir headingShareRequestDetails=Detalles de la solicitud de compartir headingShareRequestCases=Casos @@ -698,13 +695,10 @@ headingShareRequestContacts=Contactos headingShareRequestEvents=Eventos headingShareRequestEventParticipants=Participantes de eventos headingRevokeSormasToSormasShareRequest=Revocar solicitud de compartir - headingCaseResponsibleJurisidction=Jurisdicción responsable headingSeeAllPersons=Ver personas para todos los tipos de asociación - headingPlaceOfStayInHospital = Lugar de estancia en el hospital headingCurrentHospitalization = Hospitalización actual - headingCorrectPerson = Corregir datos de persona headingPreviousPersonInformation = Información de persona anterior headingUpdatedPersonInformation = Información de persona actualizada @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Corregir datos de prueba de patógeno headingPreviousPathogenTestInformation = Información de prueba de patógeno anterior headingUpdatedPathogenTestInformation = Información de prueba de patógeno actualizada headingLabMessageCorrectionThrough = No se encontraron más cambios +headingDeleteContacts = Eliminar contactos immunizationVaccinationHeading = Vacunación immunizationRecoveryHeading = Recuperación @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Todos los laboratorios seleccionados fueron archiv messageLaboratoriesDearchived = Todos los laboratorios seleccionados fueron desarchivados messagePointsOfEntryArchived = Todos los puntos de entrada seleccionados fueron archivados messagePointsOfEntryDearchived = Todos los puntos de entrada seleccionados fueron desarchivados -messageFormHasErrorsPathogenTest = Por favor, llene todos los campos obligatorios antes de editar o crear pruebas de patógeno messageForwardedLabMessageFound = Existe al menos otro mensaje de laboratorio con el mismo id de informe que fue reenviado. ¿Desea continuar procesando este mensaje de laboratorio? messageNoCaseFound = No se encontró ningún caso que coincida con el término de búsqueda ingresado. messageNoCaseFoundToLinkImmunization = No hay ningún caso que coincida con los criterios de búsqueda y las condiciones de vínculo. messageNoEventFound = No se encontró ningún evento que coincida con el término de búsqueda ingresado. messageContactToCaseConfirmationRequired = Sólo puede convertir contactos en casos confirmados. Por favor, confirme este contacto antes de crear un caso para su persona de contacto. +messageContactConversionFollowUpCommentLarge = Ejecutar esta acción cancelará automáticamente el seguimiento y adjuntará el siguiente mensaje al comentario de seguimiento\:

%s

La longitud máxima del campo de comentario de seguimiento se excedería al adjuntar este mensaje. Por favor, elija si desea cancelar la acción, reducir la longitud del comentario de seguimiento y volver a intentarlo, u omitir el mensaje mostrado arriba. +messageContactConversionFollowUpCommentLargeAdjustComment = Ajustar comentario +messageContactConversionFollowUpCommentLargeOmitMessage = Omitir mensaje messageContactCaseRemoved = El caso de origen fue eliminado de este contacto messageContactCaseChanged = El caso de origen del contacto fue cambiado messageSampleOpened = Muestra abierta encontrada para la cadena de búsqueda @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = Todos los formularios de campaña se validaron ex messageEnterSms = Por favor escriba su mensaje SMS aquí\: messageSelectedPeriodTooLong = Ha seleccionado un período de tiempo que excede el número máximo de días. Por favor, asegure que el período de tiempo seleccionado no exceda los %d días. messagePersonAlreadyEventParticipant = La persona del caso ya es un participante de evento del evento seleccionado. Este caso ha sido vinculado al evento seleccionado. -messagePersonAddedAsEventParticipant = La persona del caso fue añadida como participante de evento al evento seleccionado. +messagePersonAddedAsEventParticipant = Se creó el nuevo participante de evento. messagePersonAlreadyCaseInEvent = Este caso ya está vinculado al evento seleccionado. messagePersonContactDetailsPrimaryDuplicate = Ya hay datos de contacto principales de este tipo registrados para esta persona. ¿Desea establecer estos datos de contacto como los datos de contacto principales? messageUserSyncCanceled = ¡Sincronización cancelada\!
La sincronización fue cancelada. Todos los usuarios ya procesados se sincronizaron correctamente. Ahora puede cerrar esta ventana. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Entrada de viaje desde la semana epi... promptTravelEntryEpiWeekTo = ... hasta la semana epi # Unsaved changes -unsavedChanges.warningTitle = Confirmar navegación -unsavedChanges.warningMessage = Tiene cambios sin guardar en este formulario. +unsavedChanges.warningTitle = Cambios sin guardar +unsavedChanges.warningMessage = Este formulario contiene cambios sin guardar. Por favor, decida si quiere cancelar la acción que acaba de realizar para revisarlos, o guardar o descartar los cambios y continuar. unsavedChanges.discard = Descartar cambios unsavedChanges.save = Guardar cambios -unsavedChanges.cancel = Cancelar navegación +unsavedChanges.cancel = Cancelar acción headingNetworkDiagramTooManyContacts = Demasiados contactos warningNetworkDiagramTooManyContacts = Hay %d contactos y es posible que su navegador se congele al mostrar el diagrama.
Por favor, elija un intervalo de tiempo más pequeño. diff --git a/sormas-api/src/main/resources/strings_es-EC.properties b/sormas-api/src/main/resources/strings_es-EC.properties index 8221bc5be34..e99d7404693 100644 --- a/sormas-api/src/main/resources/strings_es-EC.properties +++ b/sormas-api/src/main/resources/strings_es-EC.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = ¿Cambiar realmente la enfermedad del caso? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = ¿Está seguro de que desea desarchivar este caso? Esto hará que vuelva a aparecer en el directorio de casos. confirmationDearchiveCases = ¿Está seguro de que desea desarchivar todos los %d casos seleccionados? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = ¿Estás seguro de que deseas eliminar el archivo de este evento? Esto hará que vuelva a aparecer en el directorio de eventos. confirmationDearchiveEvents = ¿Está seguro de que desea desarchivar todos los %d eventos seleccionados? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=No tiene los privilegios necesarios para ver esta página. errorEntityOutdated=Los datos no se pudieron guardar porque han sido cambiados. -errorFieldValidationFailed=Por favor verifique los datos ingresados. Al menos un campo obligatorio está vacío. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Por favor verifique los datos ingresados. Al menos uno de los campos donde se esperaba un número entero contiene algo más. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Su cuenta de usuario no tiene acceso a la aplicación web. @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Se requiere confirmación de contacto +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Seleccionar caso de origen headingRemoveCaseFromContact = Eliminar caso del contacto headingDiscardUnsavedChanges = Descartar cambios no guardados @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Todos los laboratorios seleccionados han sido arch messageLaboratoriesDearchived = Todos los laboratorios seleccionados han sido desarchivados messagePointsOfEntryArchived = Todos los puntos de ingreso han sido archivados messagePointsOfEntryDearchived = Todos los puntos de ingreso han sido desarchivados -messageFormHasErrorsPathogenTest = Por favor llenar todos los campos obligatorios antes de editar o crear pruebas de patógenos messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No se encontró ningún caso que coincida con el criterio de búsqueda ingresado. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = Solo puede convertir contactos a casos que han sido confirmados. Confirme este contacto antes de crear un caso para su persona de contacto. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = El caso de origen ha sido eliminado de este contacto messageContactCaseChanged = El caso de origen del contacto ha sido cambiado messageSampleOpened = Se ha encontrado una muestra abierta para la cadena de búsqueda @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_es-ES.properties b/sormas-api/src/main/resources/strings_es-ES.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_es-ES.properties +++ b/sormas-api/src/main/resources/strings_es-ES.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_fa-AF.properties b/sormas-api/src/main/resources/strings_fa-AF.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_fa-AF.properties +++ b/sormas-api/src/main/resources/strings_fa-AF.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_fi-FI.properties b/sormas-api/src/main/resources/strings_fi-FI.properties index b83689d267f..ccafd4739e3 100644 --- a/sormas-api/src/main/resources/strings_fi-FI.properties +++ b/sormas-api/src/main/resources/strings_fi-FI.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Haluatko varmasti vaihtaa potilaan sairautta? confirmationDearchiveCampaign = Haluatko varmasti palauttaa tämän kampanjan tiedot arkistosta? Palauttaminen lisää kampanjan takaisin tavalliseen kampanjalistaan. confirmationDearchiveCase = Haluatko varmasti palauttaa tämän potilaan tiedot arkistosta? Palauttaminen lisää potilaan takaisin tavalliseen potilaslistaan. confirmationDearchiveCases = Haluatko varmasti palauttaa kaikkien %d potilaan tiedot arkistosta? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Haluatko varmasti palauttaa tämän tapahtuman arkistosta? Palauttaminen lisää tapahtuman takaisin tavalliseen tapahtumalistaan. confirmationDearchiveEvents = Haluatko varmasti palauttaa kaikki %d tapahtumaa arkistosta? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Kyllä confirmationRemoveGridRowCancel=Ei confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Toiminto @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=Sinulla ei ole riittäviä oikeuksia tarkastella tätä sivua. errorEntityOutdated=Tietoja ei voitu tallentaa, koska niitä on tällä välin muutettu. -errorFieldValidationFailed=Tarkista syöttämäsi tiedot. Ainakin yksi vaadittu tieto puuttuu. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Tarkista syöttämäsi tiedot. Ainakin yksi kokonaislukua vaativa tietokenttä sisältää jotain muuta. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Käyttäjätililläsi ei ole oikeuksia web-applikaatioon @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Kontaktin vahvistus vaaditaan +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Valitse tartuttanut potilas headingRemoveCaseFromContact = Poista potilas kontaktilta headingDiscardUnsavedChanges = Hylkää tallentamattomat muutokset @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Kaikki valitut laboratoriot on arkistoitu messageLaboratoriesDearchived = Kaikki valitut laboratoriot on palautettu arkistosta messagePointsOfEntryArchived = Kaikki valitut maahantulopaikat on arkistoitu messagePointsOfEntryDearchived = Kaikki valitut maahantulopaikat on palautettu arkistosta -messageFormHasErrorsPathogenTest = Täytä kaikki vaaditut kentät ennen kuin muokkaat tai luot patogeenitestejä messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = Hakuehdon mukaista potilasta ei löytynyt. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = Hakuehdon mukaista tapahtumaa ei löytynyt. messageContactToCaseConfirmationRequired = Voit muuttaa kontakteja potilaiksi vasta sitten, kun ne on vahvistettu. Vahvista tämä kontakti ennen kuin muutat sen potilaaksi. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = Tartuttanut potilas on poistettu tästä kontaktista messageContactCaseChanged = Kontaktin tartuttanut potilas on muutettu messageSampleOpened = Avattu näyte löytyi haettavalla merkkijonolla @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_fil-PH.properties b/sormas-api/src/main/resources/strings_fil-PH.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_fil-PH.properties +++ b/sormas-api/src/main/resources/strings_fil-PH.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_fj-FJ.properties b/sormas-api/src/main/resources/strings_fj-FJ.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_fj-FJ.properties +++ b/sormas-api/src/main/resources/strings_fj-FJ.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_fr-CH.properties b/sormas-api/src/main/resources/strings_fr-CH.properties index 19741f5e9f9..d0ce809a599 100644 --- a/sormas-api/src/main/resources/strings_fr-CH.properties +++ b/sormas-api/src/main/resources/strings_fr-CH.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Vraiment changer la maladie de cas? confirmationDearchiveCampaign = Voulez-vous vraiment désarchiver cette campagne? Elle figurera de nouveau dans la vue par défaut du répertoire des campagnes. confirmationDearchiveCase = Êtes-vous sûr de vouloir désarchiver ce cas ? Cela le fera apparaître dans le répertoire de cas normal à nouveau. confirmationDearchiveCases = Êtes-vous sûr de vouloir désarchiver tous les %d cas sélectionnés ? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Êtes-vous sûr de vouloir désarchiver cet événement? Cela le fera apparaître dans le répertoire de cas normal à nouveau. confirmationDearchiveEvents = Êtes-vous sûr de vouloir désarchiver tous les %d événéments sélectionnés? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Êtes-vous sûr de vouloir supprimer cette lign confirmationRemoveGridRowConfirm=Oui confirmationRemoveGridRowCancel=Non confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=Vous n'avez pas les droits pour voir cette page. errorEntityOutdated=Les données n'ont pas pu être enregistrées car elles ont été modifiées entre-temps. -errorFieldValidationFailed=Veuillez vérifier les données saisies. Au moins un champ qui doit être rempli est vide. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Veuillez vérifier les données saisies. Au moins un des champs où un nombre entier était attendu contient autre chose. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Votre compte utilisateur n'a pas accès à l'application web @@ -645,6 +645,7 @@ headingEventNotDeleted = Événement non supprimé headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Certains événements n'ont pas été supprimés headingContactConfirmationRequired = Confirmation du contact requise +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Sélectionner le cas source headingRemoveCaseFromContact = Retirer le cas du contact headingDiscardUnsavedChanges = Ignorer les modifications non enregistrées @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Tous les laboratoires sélectionnés ont été arc messageLaboratoriesDearchived = Tous les laboratoires sélectionnés ont été désarchivés messagePointsOfEntryArchived = Tous les points d'entrée sélectionnés ont été archivés messagePointsOfEntryDearchived = Tous les points d'entrée sélectionnés ont été désarchivés -messageFormHasErrorsPathogenTest = Veuillez remplir tous les champs obligatoires avant de modifier ou de créer des tests d'agent pathogène messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = Aucun cas ne correspond au terme de recherche saisi. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = Aucun événement ne correspond aux critères de recherche saisis. messageContactToCaseConfirmationRequired = Vous ne pouvez convertir les contacts que pour les cas qui ont été confirmés. Veuillez confirmer ce contact avant de créer un cas pour sa personne de contact. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = Le cas source a été retiré de ce contact messageContactCaseChanged = Le cas source du contact a été modifié messageSampleOpened = Échantillon ouvert trouvé pour la chaîne de recherche @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = Tous les formulaires de campagne ont été valid messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirmer la navigation -unsavedChanges.warningMessage = Vous avez des modifications non enregistrées sur ce formulaire. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Annuler les modifications unsavedChanges.save = Enregistrer les modifications -unsavedChanges.cancel = Annuler la navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Trop de contacts warningNetworkDiagramTooManyContacts = Il y a %d contacts et il est possible que votre navigateur ralentit lors de l'affichage du diagramme.
Veuillez choisir une durée plus courte. diff --git a/sormas-api/src/main/resources/strings_fr-FR.properties b/sormas-api/src/main/resources/strings_fr-FR.properties index 99dfe64a8d1..dc0d17333da 100644 --- a/sormas-api/src/main/resources/strings_fr-FR.properties +++ b/sormas-api/src/main/resources/strings_fr-FR.properties @@ -118,8 +118,8 @@ classificationLastVaccinationDateWithin = Dernière date de vaccination dans confirmationAlsoAdjustQuarantine = Vous avez prolongé le suivi, la fin de la quarantaine devrait-elle être ajustée en conséquence? confirmationArchiveCampaign = Voulez-vous vraiment archiver cette campagne? Elle ne sera supprimée ni du système ni des statistiques mais n'apparaîtra plus dans la vue par défaut du répertoire des campagnes. confirmationArchiveCase = Êtes-vous sûr de vouloir archiver ce cas ? Cela ne le supprimera ni du système ni des statistiques, mais le cachera seulement du répertoire des cas normaux. -confirmationArchiveCaseWithContacts = Archive related contacts along with the archived case -confirmationDearchiveCaseWithContacts = Dearchive related contacts along with the dearchived case +confirmationArchiveCaseWithContacts = Archiver les contacts liés avec le cas archivé +confirmationDearchiveCaseWithContacts = Désarchiver les contacts liés à un cas désarchivé confirmationArchiveCases = Êtes-vous sûr de vouloir archiver les %d cas sélectionnés ? confirmationArchiveContact = Are you sure you want to archive this contact? This will not remove it from the system or any statistics, but only hide it from the normal contact directory. confirmationArchiveEvent = Êtes-vous sûr de vouloir archiver cet événement? Cela ne le supprimera ni du système ni des statistiques, mais le cachera seulement du répertoire des cas normaux. @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Vraiment changer la maladie du cas? confirmationDearchiveCampaign = Voulez-vous vraiment désarchiver cette campagne? Elle figurera de nouveau dans la vue par défaut du répertoire des campagnes. confirmationDearchiveCase = Êtes-vous sûr de vouloir désarchiver ce cas ? Cela le fera apparaître dans le répertoire de cas normal à nouveau. confirmationDearchiveCases = Êtes-vous sûr de vouloir désarchiver les %d cas sélectionnés ? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Êtes-vous sûr de vouloir désarchiver ce contact ? Cela le fera apparaître dans le répertoire de contacts. confirmationDearchiveEvent = Êtes-vous sûr de vouloir désarchiver cet événement? Cela le fera apparaître dans le répertoire de cas normal à nouveau. confirmationDearchiveEvents = Êtes-vous sûr de vouloir désarchiver les %d événéments sélectionnés? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Êtes-vous sûr de vouloir supprimer cette lign confirmationRemoveGridRowConfirm=Oui confirmationRemoveGridRowCancel=Non confirmationSetMissingGeoCoordinates=Cette action remplira les coordonnées géographiques pour chaque personne qui a une adresse, mais aucune coordonnées géographiques n'a été saisie. Veuillez noter que cette action affecte toutes les personnes de votre juridiction, indépendamment des filtres définis ci-dessous. Attention \: Selon le nombre de personnes, cette méthode peut prendre assez de temps. -confirmationSuperordinateEventDiscardUnsavedChanges = Lier ou dissocier un événement superordonné supprimera toutes les modifications non enregistrées que vous avez apportées à cet événement. Êtes-vous sûr de vouloir continuer ? confirmationLocationFacilityAddressOverride = L'établissement sélectionné a des détails d'emplacement différents de ceux que vous modifiez actuellement. Voulez-vous les remplacer par ceux de l'établissement ? confirmationCancelExternalFollowUpPopup=Êtes-vous sûr de vouloir annuler les suivis externes dans l'eDiary ? confirmationUnlinkCaseFromEvent = Êtes-vous sûr de vouloir dissocier ce cas de cet événement ? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = C'est la première fois que les messages de labor confirmationSeeAllPersons=Êtes-vous sûr de vouloir rechercher des personnes pour tous les types d'association ? Cela peut entraîner une réponse lente. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Voulez-vous également supprimer tous les contacts de ce cas ? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=Vous n'avez pas les droits pour voir cette page. errorEntityOutdated=Les données n'ont pas pu être enregistrées car elles ont été modifiées entre-temps. -errorFieldValidationFailed=Veuillez vérifier les données saisies. Au moins un champ qui doit être rempli est vide. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Veuillez vérifier les données saisies. Au moins un des champs où un nombre entier était attendu contient autre chose. errorLabResultsAdapterNotFound = L'adaptateur de résultats de laboratoire externe n'a pas pu être trouvé. Veuillez vous assurer qu'il est installé dans votre système et spécifié correctement dans vos sormas.properties. errorNoAccessToWeb=Votre compte utilisateur n'a pas accès à l'application web @@ -645,6 +645,7 @@ headingEventNotDeleted = Événement non supprimé headingSomeCasesNotDeleted = Certains cas n'ont pas été supprimés headingSomeEventsNotDeleted = Certains événements n'ont pas été supprimés headingContactConfirmationRequired = Confirmation du contact requise +headingContactConversionFollowUpCommentLarge = Le commentaire de suivi dépasse le nombre maximum de caractères autorisés headingSelectSourceCase = Sélectionner le cas source headingRemoveCaseFromContact = Retirer le cas du contact headingDiscardUnsavedChanges = Ignorer les modifications non enregistrées @@ -681,16 +682,12 @@ headingFetchLabMessages = Récupérer les nouveaux messages de laboratoire headingCaution = Attention headingUnavailableTaskEdition = Édition de la tâche indisponible headingDeleteVaccinations = Enlever l'immunité par vaccination - headingDocumentCreated = Document créé headingUsersEnabled = Utilisateurs activés headingUsersDisabled = Utilisateurs désactivés - headingConfirmUnclearLabMessage=Confirmer la suppression headingConfirmManuallyForwardedLabMessage=Confirmation transmise - headingUpdateCaseWithNewDiseaseVariant=Mettre à jour la variante de la maladie du cas - headingRejectSormasToSormasShareRequest=Rejeter la demande de partage headingShareRequestDetails=Partager les détails de la demande headingShareRequestCases=Cas @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Évènements headingShareRequestEventParticipants=Participants à l'événement headingRevokeSormasToSormasShareRequest=Révoquer la demande de partage - headingCaseResponsibleJurisidction=Juridiction responsable headingSeeAllPersons=Voir les personnes pour tous les types d'association - headingPlaceOfStayInHospital = Lieu de séjour à l'hôpital headingCurrentHospitalization = Hospitalisation actuelle - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Supprimer les contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Récupération @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Tous les laboratoires sélectionnés ont été arc messageLaboratoriesDearchived = Tous les laboratoires sélectionnés ont été désarchivés messagePointsOfEntryArchived = Tous les points d'entrée sélectionnés ont été archivés messagePointsOfEntryDearchived = Tous les points d'entrée sélectionnés ont été désarchivés -messageFormHasErrorsPathogenTest = Veuillez remplir tous les champs obligatoires avant de modifier ou de créer des tests d'agent pathogène messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = Aucun cas ne correspond au terme de recherche saisi. messageNoCaseFoundToLinkImmunization = Il n'y a aucun cas qui corresponde aux critères de recherche et aux conditions de lien. messageNoEventFound = Aucun événement ne correspond aux critères de recherche saisis. messageContactToCaseConfirmationRequired = Vous ne pouvez convertir les contacts que pour les cas qui ont été confirmés. Veuillez confirmer ce contact avant de créer un cas pour sa personne de contact. +messageContactConversionFollowUpCommentLarge = L'exécution de cette action annulera automatiquement le suivi et ajoutera le message suivant au commentaire de suivi \:

%s

La longueur maximale du champ de commentaire de suivi serait dépassée en ajoutant ce message. Veuillez choisir si vous voulez annuler l'action, réduisez la longueur du commentaire de suivi et réessayez, ou omettez le message affiché ci-dessus. +messageContactConversionFollowUpCommentLargeAdjustComment = Ajuster le commentaire +messageContactConversionFollowUpCommentLargeOmitMessage = Omettre le message messageContactCaseRemoved = Le cas source a été retiré de ce contact messageContactCaseChanged = Le cas source du contact a été modifié messageSampleOpened = Échantillon ouvert trouvé pour la chaîne de recherche @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = Tous les formulaires de campagne ont été valid messageEnterSms = Veuillez entrer votre message ici. messageSelectedPeriodTooLong = Vous avez sélectionné une période de temps qui dépasse le nombre maximum de jours. Veuillez vous assurer que la période sélectionnée ne dépasse pas %d jours. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = Le nouveau participant a été créé. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Entrée de voyage depuis la semaine de l'Epi... promptTravelEntryEpiWeekTo = ... à la semaine épi # Unsaved changes -unsavedChanges.warningTitle = Confirmer la navigation -unsavedChanges.warningMessage = Vous avez des modifications non enregistrées sur ce formulaire. +unsavedChanges.warningTitle = Modifications non enregistrées +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Annuler les modifications unsavedChanges.save = Enregistrer les modifications -unsavedChanges.cancel = Annuler la navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Trop de contacts warningNetworkDiagramTooManyContacts = Il y a %d contacts et il est possible que votre navigateur bloque lors de l'affichage du diagramme.
Veuillez choisir une fenêtre de temps plus petite. diff --git a/sormas-api/src/main/resources/strings_hi-IN.properties b/sormas-api/src/main/resources/strings_hi-IN.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_hi-IN.properties +++ b/sormas-api/src/main/resources/strings_hi-IN.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_hr-HR.properties b/sormas-api/src/main/resources/strings_hr-HR.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_hr-HR.properties +++ b/sormas-api/src/main/resources/strings_hr-HR.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_it-CH.properties b/sormas-api/src/main/resources/strings_it-CH.properties index 027495c1a49..db51e59f742 100644 --- a/sormas-api/src/main/resources/strings_it-CH.properties +++ b/sormas-api/src/main/resources/strings_it-CH.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Vuoi veramente cambiare la malattia del caso? confirmationDearchiveCampaign = Sei sicuro di voler disarchiviare questa campagna? Apparirà nuovamente nel normale elenco delle campagne. confirmationDearchiveCase = Sei sicuro di voler disarchiviare questo caso? Apparirà nuovamente nel normale elenco dei casi. confirmationDearchiveCases = Sei sicuro di voler disarchiviare tutti i %d casi selezionati? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Sei sicuro di voler disarchiviare questo evento? Apparirà nuovamente nel normale elenco degli eventi. confirmationDearchiveEvents = Sei sicuro di voler disarchiviare tutti i %d eventi selezionati? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Azione @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=Non disponi dei diritti necessari per visualizzare questa pagina. errorEntityOutdated=I dati non hanno potuto essere salvati perché nel frattempo sono stati modificati. -errorFieldValidationFailed=Controllare i dati inseriti. Almeno uno dei campi obbligatori è vuoto. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Controllare i dati inseriti. Almeno uno dei campi in cui era previsto un numero intero contiene qualcos'altro. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Il tuo account utente non ha accesso all'applicazione web @@ -645,6 +645,7 @@ headingEventNotDeleted = Evento non eliminato headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Alcuni eventi non sono stati eliminati headingContactConfirmationRequired = Richiesta conferma contatto +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Seleziona caso indice headingRemoveCaseFromContact = Rimuovi caso dal contatto headingDiscardUnsavedChanges = Scarta modifiche non salvate @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Tutti i laboratori selezionati sono stati archivia messageLaboratoriesDearchived = Tutti i laboratori selezionati sono stati disarchiviati messagePointsOfEntryArchived = Tutti i punti di entrata selezionati sono stati archiviati messagePointsOfEntryDearchived = Tutti i punti di entrata selezionati sono stati disarchiviati -messageFormHasErrorsPathogenTest = Si prega di compilare tutti i campi obbligatori prima di modificare o creare test patogeni messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = Non è stato trovato nessun caso che corrisponda al termine di ricerca inserito. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = È possibile convertire in casi solo i contatti confermati. Conferma questo contatto prima di creare un caso per la persona di contatto. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = Il caso indice è stato rimosso da questo contatto messageContactCaseChanged = Il caso indice del contatto è stato modificato messageSampleOpened = Trovato un campione aperto per la stringa di ricerca @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = Tutti i moduli della campagna sono stati convalid messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Conferma navigazione -unsavedChanges.warningMessage = Sono state apportate modifiche non salvate in questo modulo. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Rifiuta modifiche unsavedChanges.save = Salva modifiche -unsavedChanges.cancel = Annulla navigazione +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Troppi contatti warningNetworkDiagramTooManyContacts = Ci sono %d contatti ed è possibile che il tuo browser si blocchi durante la visualizzazione del diagramma.
Scegli una finestra temporale più piccola. diff --git a/sormas-api/src/main/resources/strings_it-IT.properties b/sormas-api/src/main/resources/strings_it-IT.properties index acc95d8874e..5f908141e56 100644 --- a/sormas-api/src/main/resources/strings_it-IT.properties +++ b/sormas-api/src/main/resources/strings_it-IT.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Vuoi veramente cambiare la malattia del caso? confirmationDearchiveCampaign = Sei sicuro di voler disarchiviare questa campagna? Apparirà nuovamente nel normale elenco delle campagne. confirmationDearchiveCase = Sei sicuro di voler disarchiviare questo caso? Apparirà nuovamente nel normale elenco dei casi. confirmationDearchiveCases = Sei sicuro di voler disarchiviare tutti i %d casi selezionati? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Sei sicuro di voler disarchiviare questo evento? Apparirà nuovamente nel normale elenco degli eventi. confirmationDearchiveEvents = Sei sicuro di voler disarchiviare tutti i %d eventi selezionati? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=Non disponi dei diritti necessari per visualizzare questa pagina. errorEntityOutdated=I dati non hanno potuto essere salvati perché nel frattempo sono stati modificati. -errorFieldValidationFailed=Controllare i dati inseriti. Almeno uno dei campi obbligatori è vuoto. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Controllare i dati inseriti. Almeno uno dei campi in cui era previsto un numero intero contiene qualcos'altro. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Il tuo account utente non ha accesso all'applicazione web @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Richiesta conferma contatto +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Seleziona caso indice headingRemoveCaseFromContact = Rimuovi caso dal contatto headingDiscardUnsavedChanges = Scarta modifiche non salvate @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = Tutti i laboratori selezionati sono stati archivia messageLaboratoriesDearchived = Tutti i laboratori selezionati sono stati disarchiviati messagePointsOfEntryArchived = Tutti i punti di entrata selezionati sono stati archiviati messagePointsOfEntryDearchived = Tutti i punti di entrata selezionati sono stati disarchiviati -messageFormHasErrorsPathogenTest = Si prega di compilare tutti i campi obbligatori prima di modificare o creare test patogeni messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = Non è stato trovato nessun caso che corrisponda al termine di ricerca inserito. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = Non è stato trovato alcun evento che corrisponda al termine di ricerca inserito. messageContactToCaseConfirmationRequired = È possibile convertire in casi solo i contatti confermati. Conferma questo contatto prima di creare un caso per la persona di contatto. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = Il caso indice è stato rimosso da questo contatto messageContactCaseChanged = Il caso indice del contatto è stato modificato messageSampleOpened = Trovato un campione aperto per la stringa di ricerca @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_ja-JP.properties b/sormas-api/src/main/resources/strings_ja-JP.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_ja-JP.properties +++ b/sormas-api/src/main/resources/strings_ja-JP.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_nl-NL.properties b/sormas-api/src/main/resources/strings_nl-NL.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_nl-NL.properties +++ b/sormas-api/src/main/resources/strings_nl-NL.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_no-NO.properties b/sormas-api/src/main/resources/strings_no-NO.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_no-NO.properties +++ b/sormas-api/src/main/resources/strings_no-NO.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_pl-PL.properties b/sormas-api/src/main/resources/strings_pl-PL.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_pl-PL.properties +++ b/sormas-api/src/main/resources/strings_pl-PL.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_ps-AF.properties b/sormas-api/src/main/resources/strings_ps-AF.properties index 3f85173fd37..97de06688e9 100644 --- a/sormas-api/src/main/resources/strings_ps-AF.properties +++ b/sormas-api/src/main/resources/strings_ps-AF.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_pt-PT.properties b/sormas-api/src/main/resources/strings_pt-PT.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_pt-PT.properties +++ b/sormas-api/src/main/resources/strings_pt-PT.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_ro-RO.properties b/sormas-api/src/main/resources/strings_ro-RO.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_ro-RO.properties +++ b/sormas-api/src/main/resources/strings_ro-RO.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_ru-RU.properties b/sormas-api/src/main/resources/strings_ru-RU.properties index 18ddfd5cbd7..d2779cb85a6 100644 --- a/sormas-api/src/main/resources/strings_ru-RU.properties +++ b/sormas-api/src/main/resources/strings_ru-RU.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Да confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_sv-SE.properties b/sormas-api/src/main/resources/strings_sv-SE.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_sv-SE.properties +++ b/sormas-api/src/main/resources/strings_sv-SE.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_sw-KE.properties b/sormas-api/src/main/resources/strings_sw-KE.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_sw-KE.properties +++ b/sormas-api/src/main/resources/strings_sw-KE.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_tr-TR.properties b/sormas-api/src/main/resources/strings_tr-TR.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_tr-TR.properties +++ b/sormas-api/src/main/resources/strings_tr-TR.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_uk-UA.properties b/sormas-api/src/main/resources/strings_uk-UA.properties index 011d16b0e18..113487e1e71 100644 --- a/sormas-api/src/main/resources/strings_uk-UA.properties +++ b/sormas-api/src/main/resources/strings_uk-UA.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = Really change case disease? confirmationDearchiveCampaign = Are you sure you want to de-archive this campaign? This will make it appear in the normal campaign directory again. confirmationDearchiveCase = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. confirmationDearchiveCases = Are you sure you want to de-archive all %d selected cases? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = Are you sure you want to de-archive this event? This will make it appear in the normal event directory again. confirmationDearchiveEvents = Are you sure you want to de-archive all %d selected events? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = Place of stay in hospital headingCurrentHospitalization = Current hospitalization - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/strings_ur-PK.properties b/sormas-api/src/main/resources/strings_ur-PK.properties index 18ff326d5be..1603b4027c7 100644 --- a/sormas-api/src/main/resources/strings_ur-PK.properties +++ b/sormas-api/src/main/resources/strings_ur-PK.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = واقعی کیس کی بیماری کو تبد confirmationDearchiveCampaign = کیا آپ واقعی اس مہم کو ڈی آرکائیو کرنا چاہتے ہیں؟ اس سے یہ نارمل مہم کی ڈائریکٹری میں دوبارہ ظاہر ہو جائے گی۔ confirmationDearchiveCase = کیا آپ واقعی اس کیس کو ڈی آرکائیو کرنا چاہتے ہیں؟ اس سے یہ نارمل کیس کی ڈائریکٹری میں دوبارہ ظاہر ہو جائے گا۔ confirmationDearchiveCases = کیا آپ واقعی تمام %d منتخب کیسز کو ڈی آرکائیو کرنا چاہتے ہیں؟ -confirmationDearchiveContact = کیا آپ واقعی اس کیس کو ڈی آرکائیو کرنا چاہتے ہیں؟ اس سے یہ نارمل کیس کی ڈائریکٹری میں دوبارہ ظاہر ہو جائے گا۔ +confirmationDearchiveContact = کیا آپ واقعی اس رابطے کو ڈی آرکائیو کرنا چاہتے ہیں؟ اس سے یہ نارمل رابطے کی ڈائریکٹری میں دوبارہ ظاہر ہو جائے گا۔ confirmationDearchiveEvent = کیا آپ واقعی اس تقریب کو ڈی آرکائیو کرنا چاہتے ہیں؟ اس سے یہ نارمل تقریب کی ڈائریکٹری میں دوبارہ ظاہر ہو جائے گا۔ confirmationDearchiveEvents = کیا آپ واقعی تمام %d منتخب تقریبات کو ڈی آرکائیو کرنا چاہتے ہیں؟ confirmationDearchiveEventParticipant = کیا آپ واقعی اس تقریب کے شریک کو ڈی آرکائیو کرنا چاہتے ہیں؟ یہ اسے عام تقریب کے شرکاء کی فہرست میں دوبارہ ظاہر کرے گا۔ @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=کیا آپ واقعی اس قطار کو مٹ confirmationRemoveGridRowConfirm=جی ہاں confirmationRemoveGridRowCancel=نہیں confirmationSetMissingGeoCoordinates=یہ کارروائی ہر اس شخص کے لیے جیو کوآرڈینیٹس کو بھر دے گی جس کے پاس ایک پتہ دیا گیا ہے، لیکن کوئی جیو کوآرڈینیٹ داخل نہیں ہوا ہے۔ براہ کرم آگاہ رہیں کہ یہ عمل آپ کے دائرہ اختیار میں تمام افراد کو متاثر کرتا ہے، قطع نظر ذیل میں سیٹ کیے گئے فلٹرز۔ انتباہ\: افراد کی تعداد پر منحصر کرتے ہوے، اس طریقہ کار میں کافی وقت لگ سکتا ہے۔ -confirmationSuperordinateEventDiscardUnsavedChanges = کسی اعلیٰ ترین تقریب کو لنک یا ان لنک کرنے سے آپ کی اس تقریب میں کی گئی تمام غیر محفوظ شدہ تبدیلیاں رد ہو جائیں گی۔ کیا آپ واقعی جاری رکھنا چاہتے ہیں؟ confirmationLocationFacilityAddressOverride = منتخب کردہ سہولت گاہ میں پتہ کی تفصیلات موجود ہیں جو اس سے مختلف ہیں جن میں آپ فی الحال ترمیم کر رہے ہیں۔ کیا آپ انہیں اس سہولت گاہ کے ساتھ اوور رائٹ کرنا چاہتے ہیں؟ confirmationCancelExternalFollowUpPopup=کیا آپ واقعی eDiary میں بیرونی فالو اپس کو منسوخ کرنا چاہتے ہیں؟ confirmationUnlinkCaseFromEvent = کیا آپ واقعی اس تقریب سے اس کیس کا لنک ختم کرنا چاہتے ہیں؟ @@ -232,6 +231,7 @@ confirmationSinceLabMessages = یہ پہلی بار ہے جب لیب کے پیغ confirmationSeeAllPersons=کیا آپ واقعی تمام ایسوسی ایشن کی اقسام کے افراد کو تلاش کرنا چاہتے ہیں؟ اس کے نتیجے میں سست ردعمل ہو سکتا ہے۔ confirmationLabMessageCorrection = اس لیب میسج میں پچھلی ایک اصلاحات شامل ہیں۔
کیا آپ اس لیب میسج سے ان اصلاحات پر کارروائی کرنا چاہتے ہیں؟ confirmLabMessageCorrectionThrough = لیب کے پیغام سے کوئی دوسری نئی یا تبدیل شدہ معلومات کا خود بخود تعین نہیں کیا جا سکتا ہے۔ کیا آپ دستی طور پر مزید معلومات شامل کرنا یا ترمیم کرنا چاہتے ہیں؟ +confirmationDeleteCaseContacts = کیا آپ اس کیس کے تمام رابطوں کو بھی مٹانا چاہتے ہیں؟ # Entities entityAction=عمل @@ -302,7 +302,7 @@ entityVaccinations = ویکسینیشنز # Error Messages errorAccessDenied=آپ کے پاس اس صفحہ کو دیکھنے کے لیے مطلوبہ حقوق نہیں ہیں۔ errorEntityOutdated=ڈیٹا کو محفوظ نہیں کیا جا سکا کیونکہ اس دوران اسے تبدیل کر دیا گیا ہے۔ -errorFieldValidationFailed=براہ کرم درج کردہ ڈیٹا کو چیک کریں۔ کم از کم ایک فیلڈ جسے بھرنا ضروری ہے خالی ہے۔ +errorFieldValidationFailed=براہ کرم درج کردہ ڈیٹا کو چیک کریں۔ کم از کم ایک فیلڈ میں خرابیاں ہیں۔ errorIntegerFieldValidationFailed=براہ کرم درج کردہ ڈیٹا کو چیک کریں۔ کم از کم ایک فیلڈ میں جہاں ایک عدد کی توقع تھی کچھ اور پر مشتمل ہے۔ errorLabResultsAdapterNotFound = بیرونی لیب کے نتائج کا اڈاپٹر نہیں مل سکا۔ براہ کرم یقینی بنائیں کہ یہ آپ کے سسٹم میں انسٹال ہے اور آپ کے sormas.properties میں مناسب طریقے سے بیان کیا گیا ہے۔ errorNoAccessToWeb=آپ کے صارف اکاؤنٹ کو ویب ایپلیکیشن تک رسائی حاصل نہیں ہے۔ @@ -645,6 +645,7 @@ headingEventNotDeleted = تقریب مٹی نہیں headingSomeCasesNotDeleted = کچھ کیسز کو مٹایا نہیں گیا تھا headingSomeEventsNotDeleted = کچھ تقریبات کو مٹایا نہیں گیا تھا headingContactConfirmationRequired = رابطہ کی تصدیق درکار ہے +headingContactConversionFollowUpCommentLarge = فالو اپ کمنٹ کی اجازت زیادہ سے زیادہ حروف سے تجاوز کر جائے گے headingSelectSourceCase = سورس کیس کو منتخب کریں headingRemoveCaseFromContact = رابطہ سے کیس کو نکال دیں headingDiscardUnsavedChanges = غیر محفوظ شدہ تبدیلیاں رد کریں @@ -681,16 +682,12 @@ headingFetchLabMessages = لیب کے نئے پیغامات حاصل کریں headingCaution = انتباہ headingUnavailableTaskEdition = غیر دستیاب ٹاسک ایڈیشن headingDeleteVaccinations = امیونائزیشن کی ویکسین کو مٹا دیں - headingDocumentCreated = دستاویز بنائی گئی headingUsersEnabled = صارفین فعال ہیں headingUsersDisabled = صارفین کو غیر فعال کر دیا گیا - headingConfirmUnclearLabMessage=غیر واضح کی تصدیق کریں headingConfirmManuallyForwardedLabMessage=آگے بھیجنے کی تصدیق کریں - headingUpdateCaseWithNewDiseaseVariant=کیس کی بیماری کے مختلف قسم کو اپ ڈیٹ کریں - headingRejectSormasToSormasShareRequest=شیئر کرنے کی درخواست کو مسترد کریں headingShareRequestDetails=درخواست کی تفصیلات شیئر کریں headingShareRequestCases=کیسز @@ -698,13 +695,10 @@ headingShareRequestContacts=روابط headingShareRequestEvents=تقریبات headingShareRequestEventParticipants=تقریب کے شرکاہ headingRevokeSormasToSormasShareRequest=شیئر کرنے کی درخواست کو منسوخ کریں - headingCaseResponsibleJurisidction=ذمہ دار دائرہ اختیار headingSeeAllPersons=تمام ایسوسی ایشن کی اقسام کے لیے افراد دیکھیں - headingPlaceOfStayInHospital = ہسپتال میں قیام کی جگہ headingCurrentHospitalization = موجودہ ہسپتال میں داخلہ - headingCorrectPerson = درست شخص کا ڈیٹا headingPreviousPersonInformation = سابقہ شخص کی معلومات headingUpdatedPersonInformation = اپڈیٹڈ شخص کی معلومات @@ -715,6 +709,7 @@ headingCorrectPathogenTest = پیتھوجنٹ ٹیسٹ کا درست ڈیٹا headingPreviousPathogenTestInformation = پچھلے پیتھوجین ٹیسٹ کی معلومات headingUpdatedPathogenTestInformation = اپ ڈیٹڈ پیتھوجین ٹیسٹ کی معلومات headingLabMessageCorrectionThrough = مزید کوئی تبدیلیاں نہیں ملی +headingDeleteContacts = رابطے مٹا دیں immunizationVaccinationHeading = ویکسینیشن immunizationRecoveryHeading = بازیابی @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = تمام منتخب لیبارٹریز کو آرک messageLaboratoriesDearchived = تمام منتخب لیبارٹریز کو ڈی آرکائیو کر دیا گیا ہے messagePointsOfEntryArchived = تمام منتخب داخلے کی جگاہوں کو آرکائیو کر دیا گیا ہے messagePointsOfEntryDearchived = تمام منتخب داخلے کی جگاہوں کو ڈی آرکائیو کر دیا گیا ہے -messageFormHasErrorsPathogenTest = براہ کرم پیتھوجین ٹیسٹ میں ترمیم کرنے یا بنانے سے پہلے تمام مطلوبہ فیلڈز کو پُر کریں messageForwardedLabMessageFound = اسی رپورٹ آئی ڈی کے ساتھ کم از کم ایک اور لیب میسج موجود ہے جسے فارورڈ کیا گیا تھا۔ کیا آپ اس لیب پیغام پر کارروائی جاری رکھنا چاہتے ہیں؟ messageNoCaseFound = کوئی ایسا کیس نہیں مل سکا جو درج کردہ تلاش کی اصطلاح سے میل کھاتا ہو۔ messageNoCaseFoundToLinkImmunization = ایسا کوئی معاملہ نہیں ہے جو تلاش کے معیار اور لنک کی شرائط سے میل کھاتا ہو۔ messageNoEventFound = کوئی ایسی تقریب نہیں مل سکی جو درج کردہ تلاش کی اصطلاح سے میل کھاتی ہو۔ messageContactToCaseConfirmationRequired = آپ رابطوں کو صرف ان کیسز میں تبدیل کر سکتے ہیں جن کی تصدیق ہو چکی ہے۔ براہ کرم اس رابطہ شخص کے لیے کیس بنانے سے پہلے اس رابطے کی تصدیق کریں۔ +messageContactConversionFollowUpCommentLarge = اس عمل کو انجام دینے سے فالو اپ خود بخود منسوخ ہو جائے گا اور مندرجہ ذیل پیغام کو فالو اپ کمنٹ میں شامل کر دیا جائے گا\:


%s
فالو اپ کمنٹ فیلڈ کی زیادہ سے زیادہ لمبائی شامل کرنے سے بڑھ جائے گی۔ یہ پیغام. براہ کرم منتخب کریں کہ آیا آپ کارروائی کو منسوخ کرنا چاہتے ہیں، فالو اپ کمنٹ کی لمبائی کو کم کریں اور دوبارہ کوشش کریں، یا اوپر دکھائے گئے پیغام کو چھوڑ دیں۔ +messageContactConversionFollowUpCommentLargeAdjustComment = کمنٹ کو ایڈجسٹ کریں +messageContactConversionFollowUpCommentLargeOmitMessage = پیغام چھوڑ دیں messageContactCaseRemoved = سورس کیس کو اس رابطے سے ہٹا دیا گیا ہے messageContactCaseChanged = رابطے کا سورس کیس تبدیل کر دیا گیا ہے messageSampleOpened = تلاش کی لفظ کے لیے کھولا ہوا نمونہ ملا @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = مہم کے تمام فارمز کی کامیاب messageEnterSms = براہ کرم اپنا SMS پیغام یہاں درج کریں\: messageSelectedPeriodTooLong = آپ نے ایک مدت کا انتخاب کیا ہے جو دنوں کی زیادہ سے زیادہ تعداد سے زیادہ ہے۔ براہ کرم یقینی بنائیں کہ منتخب کردہ مدت %d دنوں سے زیادہ نہ ہو۔ messagePersonAlreadyEventParticipant = کیس پرسن پہلے سے ہی منتخب تقریب میں تقریب کا شریک ہے۔ اس کیس کو منتخب تقریب سے جوڑ دیا گیا ہے۔ -messagePersonAddedAsEventParticipant = کیس پرسن کو منتخب تقریب میں تقریب کے شریک کے طور پر شامل کیا گیا تھا۔ +messagePersonAddedAsEventParticipant = تقریب کا نیا شرکت کنندہ بنا دیا گیا۔ messagePersonAlreadyCaseInEvent = یہ کیس پہلے ہی منتخب تقریب سے منسلک ہے۔ messagePersonContactDetailsPrimaryDuplicate = اس شخص کے لیے اس قسم کی ابتدائی رابطے کی تفصیلات پہلے سے ہی ریکارڈ کی گئی ہیں۔ کیا آپ اس کے بجائے رابطے کی ان تفصیلات کو بنیادی رابطے کی تفصیلات کے طور پر سیٹ کرنا چاہتے ہیں؟ messageUserSyncCanceled = مطابقت پذیری منسوخ ہوگئی\!
مطابقت پذیری منسوخ کردی گئی ہے۔ تمام پہلے سے پروسیس شدہ صارفین کو کامیابی سے ہم آہنگ کر دیا گیا ہے۔ اب آپ اس ونڈو کو بند کر سکتے ہیں۔ @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = EPI ہفتہ سے سفری داخلہ... promptTravelEntryEpiWeekTo = ... EPI ہفتہ تک # Unsaved changes -unsavedChanges.warningTitle = نیویگیشن کی تصدیق کریں -unsavedChanges.warningMessage = آپ کے پاس اس فارم میں غیر محفوظ شدہ تبدیلیاں ہیں۔ +unsavedChanges.warningTitle = غیر محفوظ تبدیلیاں +unsavedChanges.warningMessage = یہ فارم غیر محفوظ شدہ تبدیلیوں پر مشتمل ہے۔ براہ کرم فیصلہ کریں کہ آیا آپ ان کا جائزہ لینے کے لیے جو کارروائی آپ نے ابھی کی ہے اسے منسوخ کرنا چاہتے ہیں، یا تبدیلیوں کو محفوظ یا رد کرنا اور جاری رکھنا چاہتے ہیں۔ unsavedChanges.discard = تبدیلیاں مسترد کریں unsavedChanges.save = تبدیلیاں محفوظ کریں -unsavedChanges.cancel = نیویگیشن منسوخ کریں +unsavedChanges.cancel = کارروائی منسوخ کریں headingNetworkDiagramTooManyContacts = بہت زیادہ رابطے warningNetworkDiagramTooManyContacts = %d رابطے ہیں اور یہ ممکن ہے کہ آپ کا براؤزر خاکہ دکھاتے وقت منجمد ہوجائے۔
براہ کرم ایک چھوٹی ٹائم ونڈو کا انتخاب کریں۔ diff --git a/sormas-api/src/main/resources/strings_zh-CN.properties b/sormas-api/src/main/resources/strings_zh-CN.properties index d2ca41729aa..8ab1d3761ba 100644 --- a/sormas-api/src/main/resources/strings_zh-CN.properties +++ b/sormas-api/src/main/resources/strings_zh-CN.properties @@ -135,7 +135,7 @@ confirmationChangeCaseDisease = 真的要改变病例疾病吗? confirmationDearchiveCampaign = 您确定要取消对此活动的归档吗?这将使它再次出现在正常的活动目录中。 confirmationDearchiveCase = 您确定要取消存档此案例吗?这将使其再次出现在正常的案例目录中。 confirmationDearchiveCases = 您确定要取消所有选定的 %d 个案件的归档吗? -confirmationDearchiveContact = Are you sure you want to de-archive this case? This will make it appear in the normal case directory again. +confirmationDearchiveContact = Are you sure you want to de-archive this contact? This will make it appear in the normal contact directory again. confirmationDearchiveEvent = 您确定要取消归档此事件吗?这将使它再次出现在正常事件目录中。 confirmationDearchiveEvents = 您确定要取消所有选定的 %d 个事件的归档吗? confirmationDearchiveEventParticipant = Are you sure you want to de-archive this event participant? This will make it appear in the normal event participant list again. @@ -216,7 +216,6 @@ confirmationRemoveGridRowMessage=Are you sure you want to remove this row? confirmationRemoveGridRowConfirm=Yes confirmationRemoveGridRowCancel=No confirmationSetMissingGeoCoordinates=This action will fill in geo coordinates for every person which has an address given, but no geo coordinates entered. Please be aware that this action affects all persons in your jurisdiction, regardless of the filters set below. Warning\: Depending on the number of persons, this method might take quite long. -confirmationSuperordinateEventDiscardUnsavedChanges = Linking or unlinking a superordinate event will discard all unsaved changes you have made to this event. Are you sure you want to continue? confirmationLocationFacilityAddressOverride = The selected facility has location details that are different from the ones you are currently editing. Do you want to overwrite them with those from the facility? confirmationCancelExternalFollowUpPopup=Are you sure you want to cancel external follow-ups in the eDiary? confirmationUnlinkCaseFromEvent = Are you sure you want to unlink this case from this event? @@ -232,6 +231,7 @@ confirmationSinceLabMessages = This is the first time lab messages will be fetch confirmationSeeAllPersons=Are you sure you want to search persons for all association types? This could result in a slow response. confirmationLabMessageCorrection = This lab message contains corrections to a previous one.
Do you want process those corrections from this lab message? confirmLabMessageCorrectionThrough = No other new or changed information could automatically be determined from the lab message. Do you want to manually add or edit more information? +confirmationDeleteCaseContacts = Do you also want to delete all contacts of this case? # Entities entityAction=Action @@ -302,7 +302,7 @@ entityVaccinations = Vaccinations # Error Messages errorAccessDenied=You do not have the required rights to view this page. errorEntityOutdated=The data could not be saved because it has been changed in the meantime. -errorFieldValidationFailed=Please check the entered data. At least one field that must be filled in is empty. +errorFieldValidationFailed=Please check the entered data. At least one field has errors. errorIntegerFieldValidationFailed=Please check the entered data. At least one of the fields where an integer was expected contains something else. errorLabResultsAdapterNotFound = The external lab results adapter could not be found. Please make sure it is installed in your system and specified properly in your sormas.properties. errorNoAccessToWeb=Your user account does not have access to the web application @@ -645,6 +645,7 @@ headingEventNotDeleted = Event not deleted headingSomeCasesNotDeleted = Some cases were not deleted headingSomeEventsNotDeleted = Some events were not deleted headingContactConfirmationRequired = Contact confirmation required +headingContactConversionFollowUpCommentLarge = Follow up comment will exceed the max characters allowed headingSelectSourceCase = Select Source Case headingRemoveCaseFromContact = Remove Case from Contact headingDiscardUnsavedChanges = Discard Unsaved Changes @@ -681,16 +682,12 @@ headingFetchLabMessages = Fetch new lab messages headingCaution = Caution headingUnavailableTaskEdition = Unavailable task edition headingDeleteVaccinations = Remove immunization vaccinations - headingDocumentCreated = Document created headingUsersEnabled = Users enabled headingUsersDisabled = Users disabled - headingConfirmUnclearLabMessage=Confirm unclear headingConfirmManuallyForwardedLabMessage=Confirm forwarded - headingUpdateCaseWithNewDiseaseVariant=Update case disease variant - headingRejectSormasToSormasShareRequest=Reject share request headingShareRequestDetails=Share request details headingShareRequestCases=Cases @@ -698,13 +695,10 @@ headingShareRequestContacts=Contacts headingShareRequestEvents=Events headingShareRequestEventParticipants=Event participants headingRevokeSormasToSormasShareRequest=Revoke share request - headingCaseResponsibleJurisidction=Responsible jurisdiction headingSeeAllPersons=See persons for all association types - headingPlaceOfStayInHospital = 住院地点 headingCurrentHospitalization = 目前住院情况 - headingCorrectPerson = Correct person data headingPreviousPersonInformation = Previous person information headingUpdatedPersonInformation = Updated person information @@ -715,6 +709,7 @@ headingCorrectPathogenTest = Correct pathogent test data headingPreviousPathogenTestInformation = Previous pathogen test information headingUpdatedPathogenTestInformation = Updated pathogen test information headingLabMessageCorrectionThrough = No more changes found +headingDeleteContacts = Delete contacts immunizationVaccinationHeading = Vaccination immunizationRecoveryHeading = Recovery @@ -1163,12 +1158,14 @@ messageLaboratoriesArchived = All selected laboratories have been archived messageLaboratoriesDearchived = All selected laboratories have been de-archived messagePointsOfEntryArchived = All selected points of entry have been archived messagePointsOfEntryDearchived = All selected points of entry have been de-archived -messageFormHasErrorsPathogenTest = Please fill in all required fields before editing or creating pathogen tests messageForwardedLabMessageFound = There exists at least one other lab message with the same report id that was forwarded. Do you want continue processing this lab message? messageNoCaseFound = No case could be found that matches the entered search term. messageNoCaseFoundToLinkImmunization = There is no case that matches the search criteria and link conditions. messageNoEventFound = No event could be found that matches the entered search term. messageContactToCaseConfirmationRequired = You can only convert contacts to cases that have been confirmed. Please confirm this contact before creating a case for its contact person. +messageContactConversionFollowUpCommentLarge = Performing this action will automatically cancel follow-up and append the following message to the follow-up comment\:

%s

The maximum length of the follow-up comment field would be exceeded by appending this message. Please choose whether you want to cancel the action, reduce the length of the follow-up comment and try it again, or omit the message displayed above. +messageContactConversionFollowUpCommentLargeAdjustComment = Adjust comment +messageContactConversionFollowUpCommentLargeOmitMessage = Omit message messageContactCaseRemoved = The source case has been removed from this contact messageContactCaseChanged = The source case of the contact has been changed messageSampleOpened = Opened sample found for search string @@ -1179,7 +1176,7 @@ messageAllCampaignFormsValid = All campaign forms have been successfully validat messageEnterSms = Please enter your SMS message here\: messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days. messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event. -messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event. +messagePersonAddedAsEventParticipant = The new event participant was created. messagePersonAlreadyCaseInEvent = This case is already linked to the selected event. messagePersonContactDetailsPrimaryDuplicate = There already are primary contact details of this type recorded for this person. Do you want to set these contact details as the primary contact details instead? messageUserSyncCanceled = Sync canceled\!
The sync has been canceled. All already processed users have been successfully synced. You can now close this window. @@ -1383,11 +1380,11 @@ promptTravelEntryEpiWeekFrom = Travel entry from epi week... promptTravelEntryEpiWeekTo = ... to epi week # Unsaved changes -unsavedChanges.warningTitle = Confirm navigation -unsavedChanges.warningMessage = You have unsaved changes on this form. +unsavedChanges.warningTitle = Unsaved changes +unsavedChanges.warningMessage = This form contains unsaved changes. Please decide whether you want to cancel the action you have just taken in order to review them, or save or discard the changes and continue. unsavedChanges.discard = Discard changes unsavedChanges.save = Save changes -unsavedChanges.cancel = Cancel navigation +unsavedChanges.cancel = Cancel action headingNetworkDiagramTooManyContacts = Too many contacts warningNetworkDiagramTooManyContacts = There are %d contacts and it is possible that your browser will freeze while displaying the diagram.
Please choose a smaller time window. diff --git a/sormas-api/src/main/resources/subcontinents_ar-SA.properties b/sormas-api/src/main/resources/subcontinents_ar-SA.properties new file mode 100644 index 00000000000..d67d2bb1d0b --- /dev/null +++ b/sormas-api/src/main/resources/subcontinents_ar-SA.properties @@ -0,0 +1,49 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2020 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 . +############################################################################### + +subcontinent.NORTHERN_AFRICA.name = Northern Africa +subcontinent.NORTHEAST_AFRICA.name = Northeast Africa +subcontinent.NORTHWEST_AFRICA.name = Northwest Africa +subcontinent.EASTERN_AFRICA.name = Eastern Africa +subcontinent.SOUTHERN_AFRICA.name = Southern Africa +subcontinent.SOUTHEAST_AFRICA.name = Southeast Africa +subcontinent.SOUTHWEST_AFRICA.name = Southwest Africa +subcontinent.WESTERN_AFRICA.name = Western Africa +subcontinent.CENTRAL_AFRICA.name = Central Africa + +subcontinent.CENTRAL_AMERICA.name = Central America +subcontinent.NORTH_AMERICA.name = North America +subcontinent.SOUTH_AMERICA.name = South America + +subcontinent.EASTERN_ASIA.name = Eastern Asia +subcontinent.SOUTHERN_ASIA.name = Southern Asia +subcontinent.SOUTHEAST_ASIA.name = Southeast Asia +subcontinent.SOUTHWEST_ASIA.name = Southwest Asia +subcontinent.MIDDLE_EAST.name = Middle East +subcontinent.CENTRAL_ASIA.name = Central Asia + +subcontinent.AUSTRALIA.name = Australia (Subcontinent) +subcontinent.OCEANIA.name = Oceania + +subcontinent.CENTRAL_EUROPE.name = Central Europe +subcontinent.NORTHERN_EUROPE.name = Northern Europe +subcontinent.NORTHEAST_EUROPE.name = Northeast Europe +subcontinent.EASTERN_EUROPE.name = Eastern Europe +subcontinent.SOUTHERN_EUROPE.name = Southern Europe +subcontinent.SOUTHEAST_EUROPE.name = Southeast Europe +subcontinent.WESTERN_EUROPE.name = Western Europe \ 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 new file mode 100644 index 00000000000..5dd7073b89d --- /dev/null +++ b/sormas-api/src/main/resources/validations_ar-SA.properties @@ -0,0 +1,241 @@ +############################################################################### +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2021 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 . +############################################################################### + +afterDate = %s has to be after or on the same day as %s +afterDateSoft = %s should normally not be before %s. You are still allowed to save. +afterDateWithDate = %s has to be after or on the same day as %s (%s) +beforeDate = %s has to be before or on the same day as %s +beforeDateSoft = %s should normally not be after %s. You are still allowed to save. +duplicateEpidNumber = This EPID number already exists. +duplicateExternalToken = This external token already exists. +futureDate = %s cannot be more than %s days in the future +futureDateStrict = %s cannot be in the future +importCasesPropertyTypeNotAllowed = Property type %s not allowed when importing cases +importEventParticipantsPropertyTypeNotAllowed = Property type %s not allowed when importing event participants +importEventsPropertyTypeNotAllowed = Property type %s not allowed when importing events +importPropertyTypeNotAllowed = Property type %s not allowed +importCasesUnexpectedError = Unexpected error when trying to import this case. Please send your error report file to an administrator and remove this case from your import file. +importUnexpectedError = Unexpected error when trying to import this row. Please send your error report file to an administrator and remove this row from your import file. +importWrongDataTypeError = Value %s in column %s does not match expected data type. +importCommunityNotUnique = Invalid value %s in column %s; Community name is not unique in the chosen district, make sure there is only one community with this name belonging to the chosen district in the database +importDiseaseVariantNotExistOrDisease = Invalid value %s in column %s; Disease variant does not exist in the database or for the specified disease +importDiseaseVariantNotUniqueForDisease = Invalid value %s in column %s; Disease variant name is not unique for the chosen disease, make sure there is only one disease variant with this name belonging to the chosen disease in the database +importDistrictNotUnique = Invalid value %s in column %s; District name is not unique in the chosen region, make sure there is only one district with this name belonging to the chosen region in the database +importEntryDoesNotExist = Invalid value %s in column %s; Entry does not exist in the database or is archived +importEntryDoesNotExistDbOrCommunity = Invalid value %s in column %s; Entry does not exist in the database or in the specified community or is archived (Or maybe a wrong facility type was specified) +importEntryDoesNotExistDbOrDistrict = Invalid value %s in column %s; Entry does not exist in the database or in the specified district or is archived (Or maybe a wrong facility type was specified) +importEntryDoesNotExistDbOrRegion = Invalid value %s in column %s; Entry does not exist in the database or in the specified region or is archived +importEntryRegionNotInUsersJurisdiction = Invalid value %s in column %s; Specified region is not within your jurisdiction +importEntryDistrictNotInUsersJurisdiction = Invalid value %s in column %s; Specified district is not within your jurisdiction +importEntryCommunityNotInUsersJurisdiction = Invalid value %s in column %s; Specified community is not within your jurisdiction +importErrorInColumn = The import failed because of an error in column %s +importFacilityNotUniqueInCommunity = Invalid value %s in column %s; Facility name is not unique in the chosen community, make sure there is only one facility with this name belonging to the chosen community in the database +importFacilityNotUniqueInDistrict = Invalid value %s in column %s; Facility name is not unique in the chosen district, make sure there is only one facility with this name belonging to the chosen district in the database or specify a community +importPointOfEntryNotUniqueInDistrict = Invalid value %s in column %s; Point of entry name is not unique in the chosen district, make sure there is only one point of entry with this name belonging to the chosen district in the database +importLabNotUnique = Invalid value %s in column %s; Lab name is not unique in the database +importInvalidDate = Invalid date in column %s; Allowed date formats are %s +importLineTooLong = This line is longer than the header line +importAreaNotUnique = Invalid value %s in column %s; Area name is not unique, make sure there is only one area with this name in the database +importRegionNotUnique = Invalid value %s in column %s; Region name is not unique, make sure there is only one region with this name in the database +importRegionNotInServerCountry = Invalid value %s in column %s; Region is not in server country +importCountryNotUnique = Invalid value %s in column %s; Country name is not unique, make sure there is only one country with this name in the database +importCountryEmptyIso = The ISO code is empty. +importContinentAlreadyExists = The database already contains a continent with this name. +importContinentNotUnique = Invalid value %s in column %s; Continent name is not unique, make sure there is only one continent with this name in the database +importSubcontinentAlreadyExists = The database already contains a subcontinent with this name. +importSubcontinentNotUnique = Invalid value %s in column %s; Subcontinent name is not unique, make sure there is only one subcontinent with this name in the database +importCountryAlreadyExists = The database already contains a country with this ISO code or this UNO code. +importRegionAlreadyExists = The database already contains a region with this name. +importDistrictAlreadyExists = The database already contains a district with this name in the specified region. +importCommunityAlreadyExists = The database already contains a community with this name in the specified district. +importFacilityAlreadyExists = The database already contains a facility with this name in the specified community. +importLaboratoryAlreadyExists = The database already contains a laboratory with this name. +importPointOfEntryAlreadyExists = The database already contains a point of entry with this name in the specified district. +importAreaAlreadyExists = The database already contains an area with this name. +importErrorCustomizableEnumValue = Error when trying to import value %s in column %s +importPersonContactDetailsWithoutFacilityType = You have to specify at least a facility type for the address that you have specified person contact details for. +importProbablyInvalidSeparator=The uploaded csv file probably uses a different separator than the default separator. Please select the correct separator before importing. +importIncompleteContent=The content of the file is incomplete. Header(s) are missing or there is no data to import. Please check the import instructions to create a valid import file. +investigationStatusUnclassifiedCase = It's not allowed to set investigation status to done for an unclassified case. +caseClassificationInvalid = Case classification does not correspond to lab results and symptoms of the case. +noCommunityInDistrict = Could not find a database entry for the specified community in the specified district +noAddressCommunityInAddressDistrict = Could not find a database entry for the specified address community in the specified address district +noResponsibleCommunityInResponsibleDistrict = Could not find a database entry for the specified responsible community in the specified responsible district +noDistrictInRegion = Could not find a database entry for the specified district in the specified region +noAddressDistrictInAddressRegion = Could not find a database entry for the specified address district in the specified address region +noResponsibleDistrictInResponsibleRegion = Could not find a database entry for the specified responsible district in the specified responsible region +noFacilityInCommunity = Could not find a database entry for the specified facility in the specified community +noAddressFacilityInAddressCommunity = Could not find a database entry for the specified address facility in the specified address community +noFacilityInResponsibleCommunity = Could not find a database entry for the specified facility in the specified responsible community +noFacilityInDistrict = Could not find a database entry for the specified facility in the specified district +noAddressFacilityInAddressDistrict = Could not find a database entry for the specified address facility in the specified address district +noFacilityInResponsibleDistrict = Could not find a database entry for the specified facility in the specified responsible district +noFacilityInRegion = Could not find a database entry for the specified facility in the specified region +noAddressFacilityInAddressRegion = Could not find a database entry for the specified address facility in the specified address region +noFacilityInResponsibleRegion = Could not find a database entry for the specified facility in the specified responsible region +noFacilityType = The facility type has to be specified if a facility is specified +onlyDecimalNumbersAllowed = Only numbers (with decimal places) are allowed for %s +onlyGeoCoordinatesAllowed = Only geo coordinate values are allowed for %s +onlyNumbersAllowed = Only numbers are allowed for %s +onlyIntegerNumbersAllowed = Only integer numbers up to 9 digits are allowed for %s +patchWrongUuid = The value of the UUID in the json payload\: %s is not the same as the value of path variable uuid\: %s +patchUnsupportedCollectionFieldType = The field %s that represents a collection of objects must have a type that inherits from Collection class or to be an array but it is %s +patchNoSuchFieldException = No field %s in the class %s +phoneNumberValidation = Phone numbers have to start with a "+" followed by the country code. Using a different format will prevent the user from receiving SMS notifications. +required = %s is required +requiredField = This field is required +softAddEntryToList = Please add an entry to the list below if there is any data available to you. +specifyFirstName = You have to specify a first name +specifyLastName = You have to specify a last name +specifySex = You have to specify the sex +userNameNotUnique = User name is not unique\! +validCaseContactOrEventParticipant=You have to specify a valid case or contact from the SORMAS database +validCommunity = You have to specify a valid community +validDateRange = Please specify a valid date range +validDisease = You have to specify a valid disease +validDistrict = You have to specify a valid district +validResponsibleDistrict = You have to specify a valid responsible district +validEventInvestigationStatus = You have to specify a valid event investigation status +validEventStatus = You have to specify a valid event status +validEventTitle = You have to specify a valid event title +validFacility = You have to specify a valid health facility +validLocation = You have to specify a valid location +validPerson = You have to specify a valid person from the SORMAS database +validRegion = You have to specify a valid region +validResponsibleRegion = You have to specify a valid responsible region +validReportDateTime = You have to specify a valid report date +validSample = You have to specify a valid sample from the SORMAS database +validFacilityType = You have to specify a valid facility type +validHealthConditions = You have to link valid health conditions +validImmunization = You have to link a valid immunization +validReportingUser = You have to specify a valid user from the SORMAS database +validDateOfArrival = Please specify a valid date of arrival +visitAfterFollowUp = The visit cannot be more than %d days after the end of the follow-up duration. +visitBeforeCaseReport=The visit cannot be more than %d days before the case report date. +visitBeforeContactReport=The visit cannot be more than %d days before the contact report date. +visitBeforeLastContactDate=The visit cannot be more than %d days before the last contact date. +visitBeforeSymptomsOnSet=The visit cannot be more than %d days before the symptoms onset. +visitDate = You have to specify a visit date. +visitSymptoms = You have to specify symptoms for a visit. +visitStatus = You have to specify the status for a visit. +softApproximateAgeTooHigh = Please make sure that this approximate age value is correct; If applicable, change it to a value lower than 150. +validPointOfEntry = You have to specify a valid point of entry +exportNoNameSpecified = Please type in a name for your export configuration +caseMultipleInfectionEnvironments = This case already contains an exposure that has been marked as the probable infection environment. Setting this exposure as the probable infection environment will remove that mark from the other exposure. Do you want to set this exposure as the probable infection environment of this case? +statisticsIncidenceOnlyNumbersAllowed = The incidence divisor must be a number. It has been reset to the previous value. +noPastDateAllowed = You need to enter a date in the present or future +contactFollowUpUntilDate = The follow-up until date must at least be on the day the standard follow-up duration for the disease would end. +contactFollowUpUntilDateSoftValidation = The follow-up until date should at least be on the day the standard follow-up duration for the disease would end. +emptyOverwrittenFollowUpUntilDate = The follow-up until date cannot be overwritten with an empty value. +eventSuperordinateEventToDateFilterValidation = The End Date of the Filter Range selected is later than the event date of the current event +eventSubordinateEventFromDateFilterValidation = The Start Date of the Filter Range selected is earlier than the event date of the current event +textTooLong = The text you entered is too long. Maximum allowed length is {max} +textSizeNotInRange = The text you entered is not valid. It''s length must be between {min} and {max} +numberTooSmall = The number you entered is too small. The minimum allowed is {value} +numberTooBig = The number you entered is too big. The maximum allowed is {value} +numberNotInRange = The number you entered is not valid. It should be between {min} and {max} +uuidPatternNotMatching = The UUID you entered is not valid. Only numbers, letters and "-"(dash) is allowed +patternNotMatching = The text you entered is not valid. It must match "{regexp}" +contactWithoutInfrastructureData = A contact needs either a source case or a responsible region and district. +campaignFormElementNotExisting = Column %s does not exist in form meta definition. +campaignFormUnsupportedType = The type %s of element %s is not supported in campaign forms. +campaignFormUnsupportedStyle = The style %s of element %s is not supported in campaign forms. +campaignFormDependingOnNotFound = The campaign form does not contain a field with the ID %s that was specified in the dependingOn attribute of element %s. +campaignFormUnsupportedDependingOnValue = The value %s specified in the dependingOnValue attribute of element %s is not supported by type %s of element %s. +campaignFormElementTypeRequired = Campaign form element %s does not have a type. +campaignFormElementIdRequired = All campaign form elements must have a unique ID. +campaignFormDependingOnValuesMissing = No dependingOnValues have been specified for element %s that depends on another element. +campaignFormTranslationIdRequired = All translation elements must specify a valid element ID. +campaignFormTranslationCaptionRequired = Translation element %s for language code %s does not specify a caption. +campaignFormTranslationIdInvalid = The element ID %s in language code %s does not exist in the campaign form. +campaignFormTranslationLanguageCodeRequired = All translations must specify a language code. +campaignFormElementDuplicateId = Field IDs need to be unique, but the campaign form contains at least two fields with ID %s. +errorsInForm = There are errors in the form you tried to save. Please check the fields highlighted in red and make sure to only enter valid values. +campaignFormInvalidIdInListElements = The ID %s in the campaign form list definition is not associated to any element of the form. +campaignDashboardDataFormValueNull = Campaign dashboard data form element is missing\! +campaignDashboardDataFormValueDuplicate = Campaign dashboard data form element must be unique\! +campaignDashboardChartPercentage = Value must be a number that is multiple of 5\! +campaignDashboardChartValueNull = Campaign dashboard elements %s of campaign %s are missing\! +campaignDashboardChartIdDoesNotExist = Diagram %s from campaign %s does not exist\! +sormasToSormasCaseExists=This case already exists +sormasToSormasContactExists=This contact already exists +sormasToSormasEventExists=This event already exists +sormasToSormasEventParticipantExists=This event participant already exists +sormasToSormasLabMessageExists=This lab message already exists +sormasToSormasContactCaseNotExists=The linked case does not exist +sormasToSormasShareInfoMissing = Sender information is missing +sormasToSormasOrganizationIdMissing = Sender organization is is missing +sormasToSormasSenderNameMissing = Sender name is missing +sormasToSormasSampleExists = This sample already exists +sormasToSormasImmunizationExists = This immunization already exists +sormasToSormasReturnEntityNotExists = Object does not exist +sormasToSormasSaveException = %s could not be saved\: %s +sormasToSormasContinent = Unmatched continent\: %s +sormasToSormasSubcontinent = Unmatched subcontinent\: %s +sormasToSormasCountry = Unmatched country\: %s +sormasToSormasRegion = Unmatched region\: %s +sormasToSormasDistrict = Unmatched district\: %s +sormasToSormasCommunity = Unmatched community\: %s +sormasToSormasFacility = Unmatched facility\: %s +sormasToSormasPointOfEntry = Unmatched point of entry\: %s +sormasToSormasResponsibleRegion = Unmatched responsible regions\: %s +sormasToSormasResponsibleDistrict = Unmatched responsible district\: %s +sormasToSormasResponsibleCommunity = Unmatched responsible community\: %s +sormasToSormasInfrastructure = Infrastructure data does not match. Unmatched values\: %s +sormasToSormasNotEditable = Readonly data can not be shared. +sormasToSormasPersonEnrolled = The person is under external follow up. +sormasToSormasOwnershipAlreadyHandedOver = The ownership is already handed over, please revoke the request then try again. +validPhoneNumber = %s must be a valid phone number +validEmailAddress = %s must be a valid email address +externalJournalPersonSynchronizationFailure = The relevant changes could not be synchronized to the external journal. Please take care of the following error(s), otherwise the external journal will have different data than SORMAS\: %s +externalJournalPersonSynchronizationPartial = The relevant changes were partially synchronized to the external journal. Please take care of the following error(s), otherwise the external journal will have different data than SORMAS\: %s +externalJournalPersonSynchronizationSuccess = The relevant changes were successfully synchronized to the external journal. +externalJournalPersonValidationBirthdate = Invalid birthdate. +externalJournalPersonValidationEmail = Invalid email address. +externalJournalPersonValidationError = Invalid data provided for person exported to external journal\: +externalJournalPersonValidationPhone = Invalid phone number. +externalJournalPersonValidationPhoneTaken = A person with the same first name is already using the phone number in the external journal. +externalJournalPersonValidationEmailTaken = A person with the same first name is already using the email address in the external journal. +externalJournalPersonValidationNoEmail = Please provide an email address. +externalJournalPersonValidationNoEmailOrPhone = Please provide an email address or a phone number. +externalJournalPersonValidationSeveralEmails = This person has several email addresses, none of which is marked as primary. It is not clear which contact detail is supposed to be used by the external journal. +externalJournalPersonValidationSeveralPhonesOrEmails = This person has several email addresses and/or phone numbers, none of which is marked as primary. It is not clear which contact detail is supposed to be used by the external journal. +campaignFormMetaValidationUnexpectedError = There was an unexpected error while trying to validate this form. Please forward the following error message to a system administrator\: %s +vaccineDosesFormat=Vaccine dose should be a number between 1 and 10 +labMessageAlreadyProcessedError = The lab message was processed by another user in the meantime. +labMessageCorrectionsMade = The changes you have previously saved while processing this lab message will remain in the system. +labMessagePdfConversionError = The lab messages could not be converted to PDF. +taskMissingCaseLink = Tasks with case context have to be linked to an existing case +taskMissingContactLink = Tasks with contact context have to be linked to an existing contact +taskMissingEventLink = Tasks with event context have to be linked to an existing event +externalMessageConversionError = The external messages could not be converted. +externalMessageDisplayError = The external message could not be converted to a graphical representation. +externalMessageFetchError = The external messages could not be fetched from the external system. +externalMessageInitError = The external message adapter could not be initialised. +externalMessageDecryptError = The external messages could not be decrypted. +externalMessageConfigError = The external message adapter is not configured properly. +personMultiplePrimaryPhoneNumbers = The person has multiple primary phone numbers. Only one primary phone number is allowed. +personMultiplePrimaryEmailAddresses = The person has multiple primary email addresses. Only one primary email address is allowed. +birthDateInFuture = Birth date must not be in the future +birthDateInvalid = The specified birth date is not a valid date +nameOrAnyOtherFieldShouldBeFilled=At least one name field or an other field should be filled +notAccomodationFacilityType = Facility type %s can not be used for place of stay +fileTooBig = File too big. The maximum file size allowed is %dMB +infrastructureDataLocked = Infrastructure data is locked and cannot be updated +feverTemperatureAboveThreshold = A body temperature of at least 38 °C has been specified. It is recommended to also set %s to "Yes". +feverTemperatureBelowThreshold = A body temperature of less than 38 °C has been specified. It is recommended to also set %s to "No". \ 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 0f5d14fbc20..854b56df8b6 100644 --- a/sormas-api/src/main/resources/validations_de-DE.properties +++ b/sormas-api/src/main/resources/validations_de-DE.properties @@ -228,7 +228,7 @@ externalMessageDisplayError = Die externe Meldung konnte nicht in eine grafische externalMessageFetchError = Die externen Meldungen konnten nicht vom externen System abgerufen werden. externalMessageInitError = Der externe Meldungen-Adapter konnte nicht initialisiert werden. externalMessageDecryptError = Die externen Meldungen konnten nicht entschlüsselt werden. -externalMessageConfigError = Der externe Labormeldungen-Adapter ist nicht richtig konfiguriert. +externalMessageConfigError = Der externe Meldungen-Adapter ist nicht richtig konfiguriert. personMultiplePrimaryPhoneNumbers = Die Person hat mehrere primäre Telefonnummern. Es ist nur eine primäre Telefonnummer erlaubt. personMultiplePrimaryEmailAddresses = Die Person hat mehrere primäre E-Mail-Adressen. Es ist nur eine primäre E-Mail-Adresse erlaubt. birthDateInFuture = Geburtsdatum darf nicht in der Zukunft liegen diff --git a/sormas-api/src/test/java/de/symeda/sormas/api/ArchitectureTest.java b/sormas-api/src/test/java/de/symeda/sormas/api/ArchitectureTest.java index 840bd084f44..1dc14391476 100644 --- a/sormas-api/src/test/java/de/symeda/sormas/api/ArchitectureTest.java +++ b/sormas-api/src/test/java/de/symeda/sormas/api/ArchitectureTest.java @@ -53,7 +53,7 @@ public class ArchitectureTest { @ArchTest public static final ArchRule testCorrectNamedMethods = classes().that().resideInAPackage("de.symeda.sormas.api.(*).."). - should(new ArchCondition("Methods should have proper prefixes") { + should(new ArchCondition("have proper method prefixes") { @Override public void check(JavaClass javaClass, ConditionEvents events) { diff --git a/sormas-api/src/test/java/de/symeda/sormas/api/i18n/I18nConstantGenerator.java b/sormas-api/src/test/java/de/symeda/sormas/api/i18n/I18nConstantGenerator.java index fbc8bb38462..87b29880c55 100644 --- a/sormas-api/src/test/java/de/symeda/sormas/api/i18n/I18nConstantGenerator.java +++ b/sormas-api/src/test/java/de/symeda/sormas/api/i18n/I18nConstantGenerator.java @@ -105,7 +105,7 @@ private static String determineLineSeparator(Path path) { /** * @param propertiesFileName - * The properties file to read the contant keys from. + * The properties file to read the constant keys from. * @param outputClassName * Name of the constants class. * @param ignoreChildren 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 a97228504c3..39ea5c16de2 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 @@ -17,6 +17,19 @@ import static android.content.Context.NOTIFICATION_SERVICE; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; + +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.stmt.QueryBuilder; +import com.j256.ormlite.stmt.Where; + import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; @@ -28,19 +41,6 @@ import androidx.core.app.NotificationCompat; -import com.j256.ormlite.dao.Dao; -import com.j256.ormlite.stmt.QueryBuilder; -import com.j256.ormlite.stmt.Where; - -import org.apache.commons.lang3.StringUtils; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.Set; - import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.caze.CaseOrigin; @@ -50,6 +50,7 @@ import de.symeda.sormas.api.feature.FeatureTypeProperty; import de.symeda.sormas.api.infrastructure.facility.FacilityType; import de.symeda.sormas.api.task.TaskStatus; +import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; @@ -222,11 +223,9 @@ public Case build(Person person) { User user = ConfigProvider.getUser(); caze.setReportingUser(user); - if (user.hasUserRole(UserRole.SURVEILLANCE_OFFICER)) { + if (ConfigProvider.hasUserRight(UserRight.CASE_RESPONSIBLE)) { caze.setSurveillanceOfficer(user); - } else if (user.hasUserRole(UserRole.HOSPITAL_INFORMANT) - || user.hasUserRole(UserRole.COMMUNITY_INFORMANT) - || user.hasUserRole(UserRole.POE_INFORMANT)) { + } else if (user.hasJurisdictionLevel(JurisdictionLevel.HEALTH_FACILITY, JurisdictionLevel.COMMUNITY, JurisdictionLevel.POINT_OF_ENTRY)) { caze.setSurveillanceOfficer(user.getAssociatedOfficer()); } @@ -254,7 +253,7 @@ public Case build(Person person) { // Port Health Info caze.setPortHealthInfo(DatabaseHelper.getPortHealthInfoDao().build()); - + // health conditions caze.setHealthConditions(DatabaseHelper.getHealthConditionsDao().build()); @@ -487,8 +486,10 @@ private void onCaseChanged(Case existingCase, Case changedCase) { boolean facilityChanged = !DataHelper.isSame(changedCase.getHealthFacility(), existingCase.getHealthFacility()); // If the case is moved from the surveillance officer's jurisdiction, assign a new surveillance officer - if (DatabaseHelper.getFeatureConfigurationDao().isPropertyValueTrue(FeatureType.CASE_SURVEILANCE, FeatureTypeProperty.AUTOMATIC_RESPONSIBILITY_ASSIGNMENT) - && changedCase.getSurveillanceOfficer() == null || ((responsibleDistrictChanged || districtChanged) + if (DatabaseHelper.getFeatureConfigurationDao() + .isPropertyValueTrue(FeatureType.CASE_SURVEILANCE, FeatureTypeProperty.AUTOMATIC_RESPONSIBILITY_ASSIGNMENT) + && changedCase.getSurveillanceOfficer() == null + || ((responsibleDistrictChanged || districtChanged) && !DataHelper.isSame(changedCase.getResponsibleDistrict(), changedCase.getSurveillanceOfficer().getDistrict()) && !DataHelper.isSame(changedCase.getDistrict(), changedCase.getSurveillanceOfficer().getDistrict()))) { List districtOfficers = @@ -543,44 +544,26 @@ private void assignOfficerOrSupervisorToTask(Case changedCase, Task task) { // 1) The surveillance officer that is responsible for the case assignee = changedCase.getSurveillanceOfficer(); } else { - // 2) A random surveillance officer from the case responsible district - List survOffsResponsibleDistrict = - DatabaseHelper.getUserDao().getByDistrictAndRole(changedCase.getResponsibleDistrict(), UserRole.SURVEILLANCE_OFFICER); - assignee = DataUtils.getRandomCandidate(survOffsResponsibleDistrict); + // 2) A random user with UserRight.CASE_RESPONSIBLE from the case responsible district + assignee = getRandomDistrictCaseResponsible(changedCase.getResponsibleDistrict()); } if (assignee == null && changedCase.getDistrict() != null) { // 3) A random surveillance officer from the case district - List survOffsDistrict = DatabaseHelper.getUserDao().getByDistrictAndRole(changedCase.getDistrict(), UserRole.SURVEILLANCE_OFFICER); - assignee = DataUtils.getRandomCandidate(survOffsDistrict); + assignee = getRandomDistrictCaseResponsible(changedCase.getDistrict()); } if (assignee == null) { - if (changedCase.getReportingUser() != null - && (changedCase.getReportingUser().getUserRoles().contains(UserRole.SURVEILLANCE_SUPERVISOR) - || changedCase.getReportingUser().getUserRoles().contains(UserRole.ADMIN_SUPERVISOR))) { + if (changedCase.getReportingUser() != null && (ConfigProvider.hasUserRight(UserRight.TASK_ASSIGN))) { // 4) If the case was created by a surveillance supervisor, assign them assignee = changedCase.getReportingUser(); } else { // 5) Assign a random surveillance supervisor from the case responsible region - List survSupsResponsibleRegion = - DatabaseHelper.getUserDao().getByRegionAndRole(changedCase.getResponsibleRegion(), UserRole.SURVEILLANCE_SUPERVISOR); - assignee = DataUtils.getRandomCandidate(survSupsResponsibleRegion); - - if (assignee == null) { - List adminSupsResponsibleRegion = - DatabaseHelper.getUserDao().getByRegionAndRole(changedCase.getResponsibleRegion(), UserRole.ADMIN_SUPERVISOR); - assignee = DataUtils.getRandomCandidate(adminSupsResponsibleRegion); - } + assignee = getRandomRegionCaseResponsible(changedCase.getResponsibleRegion()); } if (assignee == null && changedCase.getRegion() != null) { // 6) Assign a random surveillance supervisor from the case region - List survSupsRegion = DatabaseHelper.getUserDao().getByRegionAndRole(changedCase.getRegion(), UserRole.SURVEILLANCE_SUPERVISOR); - assignee = DataUtils.getRandomCandidate(survSupsRegion); - if (assignee == null) { - List adminSupsRegion = DatabaseHelper.getUserDao().getByRegionAndRole(changedCase.getRegion(), UserRole.ADMIN_SUPERVISOR); - assignee = DataUtils.getRandomCandidate(adminSupsRegion); - } + assignee = getRandomRegionCaseResponsible(changedCase.getRegion()); } } @@ -590,6 +573,16 @@ private void assignOfficerOrSupervisorToTask(Case changedCase, Task task) { } } + private User getRandomDistrictCaseResponsible(District district) { + + return DatabaseHelper.getUserDao().getRandomDistrictUser(district, UserRight.CASE_RESPONSIBLE); + } + + private User getRandomRegionCaseResponsible(Region region) { + + return DatabaseHelper.getUserDao().getRandomRegionUser(region, UserRight.CASE_RESPONSIBLE); + } + private Float calculateCompleteness(Case caze) { Set rights = ConfigProvider.getUserRights(); diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/AdoDtoHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/AdoDtoHelper.java index 1629e1cf453..ee2fd5ba83c 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/AdoDtoHelper.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/AdoDtoHelper.java @@ -32,6 +32,7 @@ import de.symeda.sormas.api.EntityDto; import de.symeda.sormas.api.PushResult; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.app.rest.NoConnectionException; import de.symeda.sormas.app.rest.RetroProvider; import de.symeda.sormas.app.rest.ServerCommunicationException; @@ -72,6 +73,17 @@ protected void preparePulledResult(List result) protected abstract long getApproximateJsonSizeInBytes(); + /** + * Override if access to viewing /editing is restricted + */ + protected UserRight getUserRightView() { + return null; + } + + protected UserRight getUserRightEdit() { + return null; + } + /** * @return another pull needed? * @param context @@ -86,6 +98,11 @@ public boolean pullAndPushEntities(Context context) public void pullEntities(final boolean markAsRead, Context context) throws DaoException, ServerCommunicationException, ServerConnectionException, NoConnectionException { + + if (!isViewAllowed()) { + return; + } + try { final AbstractAdoDao dao = DatabaseHelper.getAdoDao(getAdoClass()); @@ -124,6 +141,11 @@ public void pullEntities(final boolean markAsRead, Context context) } public void repullEntities(Context context) throws DaoException, ServerCommunicationException, ServerConnectionException, NoConnectionException { + + if (!isViewAllowed()) { + return; + } + try { final AbstractAdoDao dao = DatabaseHelper.getAdoDao(getAdoClass()); @@ -224,6 +246,11 @@ protected ADO handlePulledDto(AbstractAdoDao dao, DTO dto) throws DaoExcept */ public boolean pushEntities(boolean onlyNewEntities) throws DaoException, ServerConnectionException, ServerCommunicationException, NoConnectionException { + + if (!isEditAllowed()) { + return false; + } + final AbstractAdoDao dao = DatabaseHelper.getAdoDao(getAdoClass()); final List modifiedAdos = onlyNewEntities ? dao.queryForNew() : dao.queryForModified(); @@ -364,4 +391,20 @@ public static void fillDto(EntityDto dto, AbstractDomainObject ado) { dto.setCreationDate(ado.getCreationDate()); dto.setUuid(ado.getUuid()); } + + public boolean isViewAllowed() { + try { + return DtoUserRightsHelper.isViewAllowed(getDtoClass()); + } catch (UnsupportedOperationException e) { + return true; + } + } + + public boolean isEditAllowed() { + try { + return DtoUserRightsHelper.isEditAllowed(getDtoClass()); + } catch (UnsupportedOperationException e) { + return true; + } + } } 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 00e9560432c..7399dcb6f06 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 @@ -15,26 +15,12 @@ package de.symeda.sormas.app.backend.common; -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.text.TextUtils; -import android.util.Log; - -import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; -import com.j256.ormlite.dao.Dao; -import com.j256.ormlite.dao.GenericRawResults; -import com.j256.ormlite.field.DataType; -import com.j256.ormlite.support.ConnectionSource; -import com.j256.ormlite.table.TableUtils; - -import org.apache.commons.lang3.StringUtils; - import java.lang.reflect.Array; import java.math.BigInteger; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -45,6 +31,21 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.commons.lang3.StringUtils; + +import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.dao.GenericRawResults; +import com.j256.ormlite.field.DataType; +import com.j256.ormlite.support.ConnectionSource; +import com.j256.ormlite.table.TableUtils; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.text.TextUtils; +import android.util.Log; + import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.caze.Vaccine; @@ -58,6 +59,8 @@ import de.symeda.sormas.api.immunization.ImmunizationStatus; import de.symeda.sormas.api.immunization.MeansOfImmunization; import de.symeda.sormas.api.person.PersonContactDetailType; +import de.symeda.sormas.api.user.JurisdictionLevel; +import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.YesNoUnknown; import de.symeda.sormas.app.backend.activityascase.ActivityAsCase; @@ -183,7 +186,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 = 333; + public static final int DATABASE_VERSION = 335; private static DatabaseHelper instance = null; @@ -1766,12 +1769,13 @@ public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int doNullCheckOnString(result, 4); - String query = - "INSERT INTO location " + String query = "INSERT INTO location " + "(uuid, changeDate, localChangeDate, creationDate, region_id, district_id, community_id, facility_id, facilityDetails, facilityType, addressType, person_id, pseudonymized, modified, snapshot) " + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Location.class, query, + executeRaw( + Location.class, + query, DataHelper.createUuid(), 0, result[0], @@ -1784,8 +1788,7 @@ public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int result[6], 0, 0, - 0 - ); + 0); } Cursor personDbCursor = db.query(Person.TABLE_NAME, null, null, null, null, null, null); @@ -2946,22 +2949,34 @@ public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int case 331: currentVersion = 331; getDao(Case.class).executeRaw("ALTER TABLE cases ADD COLUMN healthConditions_id BIGINT REFERENCES healthConditions(id);"); - getDao(Case.class).executeRaw("UPDATE cases SET healthConditions_id = (SELECT healthConditions_id from clinicalCourse where clinicalCourse.id = cases.clinicalCourse_id);"); + getDao(Case.class).executeRaw( + "UPDATE cases SET healthConditions_id = (SELECT healthConditions_id from clinicalCourse where clinicalCourse.id = cases.clinicalCourse_id);"); + case 332: currentVersion = 332; getDao(ClinicalCourse.class).executeRaw("ALTER TABLE clinicalCourse RENAME TO tmp_clinicalCourse"); getDao(ClinicalCourse.class).executeRaw( - "CREATE TABLE clinicalCourse(" + "id integer primary key autoincrement," + "uuid varchar(36) not null," - + "changeDate timestamp not null," + "creationDate timestamp not null," + "lastOpenedDate timestamp," - + "localChangeDate timestamp not null," + "modified SMALLINT DEFAULT 0," + "snapshot SMALLINT DEFAULT 0," + "UNIQUE(snapshot, uuid));"); + "CREATE TABLE clinicalCourse(" + "id integer primary key autoincrement," + "uuid varchar(36) not null," + + "changeDate timestamp not null," + "creationDate timestamp not null," + "lastOpenedDate timestamp," + + "localChangeDate timestamp not null," + "modified SMALLINT DEFAULT 0," + "snapshot SMALLINT DEFAULT 0," + + "UNIQUE(snapshot, uuid));"); getDao(ClinicalCourse.class).executeRaw( - "INSERT INTO clinicalCourse(id, uuid, changeDate, creationDate, lastOpenedDate, " - + "localChangeDate, modified, snapshot) " - + "SELECT id, uuid, changeDate, creationDate, lastOpenedDate, localChangeDate, modified, snapshot FROM tmp_clinicalCourse"); + "INSERT INTO clinicalCourse(id, uuid, changeDate, creationDate, lastOpenedDate, " + "localChangeDate, modified, snapshot) " + + "SELECT id, uuid, changeDate, creationDate, lastOpenedDate, localChangeDate, modified, snapshot FROM tmp_clinicalCourse"); getDao(ClinicalCourse.class).executeRaw("DROP TABLE tmp_clinicalCourse;"); - // ATTENTION: break should only be done after last version - break; + case 333: + currentVersion = 333; + getDao(User.class).executeRaw("ALTER TABLE users ADD COLUMN jurisdictionLevel varchar(255);"); + fillJurisdictionLevels(); + + case 334: + currentVersion = 334; + getDao(FeatureConfiguration.class).executeRaw("DELETE from featureConfiguration WHERE featureType = 'DELETE_PERMANENT';"); + fillJurisdictionLevels(); + + // ATTENTION: break should only be done after last version + break; default: throw new IllegalStateException("onUpgrade() with unknown oldVersion " + oldVersion); @@ -2973,6 +2988,37 @@ public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int } } + private void fillJurisdictionLevels() throws SQLException { + getDao(User.class).queryForAll().forEach(user -> { + try { + getDao(User.class).executeRaw( + "UPDATE users SET jurisdictionLevel = '" + getJurisdictionLevel(user.getUserRoles()).name() + "' WHERE id = " + user.getId() + + ";"); + } catch (SQLException e) { + throw new RuntimeException(e); + } + }); + } + + /** + * Returns the jurisdiction level of a user based on its user roles; has to be replicated here + * because UserDao can't be properly accessed while setting up the database. + */ + private JurisdictionLevel getJurisdictionLevel(Collection roles) { + + boolean laboratoryJurisdictionPresent = false; + for (UserRole role : roles) { + final JurisdictionLevel jurisdictionLevel = role.getJurisdictionLevel(); + if (roles.size() == 1 || (jurisdictionLevel != JurisdictionLevel.NONE && jurisdictionLevel != JurisdictionLevel.LABORATORY)) { + return jurisdictionLevel; + } else if (jurisdictionLevel == JurisdictionLevel.LABORATORY) { + laboratoryJurisdictionPresent = true; + } + } + + return laboratoryJurisdictionPresent ? JurisdictionLevel.LABORATORY : JurisdictionLevel.NONE; + } + private boolean columnDoesNotExist(String tableName, String columnName) throws SQLException { GenericRawResults tableColumns = getDao(User.class).queryRaw("pragma table_info(" + tableName + ")"); int nameColumnIndex = Arrays.asList(tableColumns.getColumnNames()).indexOf("name"); @@ -3000,10 +3046,8 @@ private String generateDateNowSQL() { return "CAST(ROUND((julianday('now') - 2440587.5)*86400000) As INTEGER)"; } - private int executeRaw (Class clazz, String statement, Object... parameters) throws SQLException { - String[] parametersStringed = Arrays.stream(parameters) - .map(parameter -> Objects.toString(parameter, null)) - .toArray(String[]::new); + private int executeRaw(Class clazz, String statement, Object... parameters) throws SQLException { + String[] parametersStringed = Arrays.stream(parameters).map(parameter -> Objects.toString(parameter, null)).toArray(String[]::new); return getDao(clazz).executeRaw(statement, parametersStringed); } @@ -3162,17 +3206,15 @@ private void migrateVaccinationInfo() throws SQLException { // Create immunizations and vaccinations for each case for (Object[] caseInfo : filteredCaseInfo) { // Create immunization - String immunizationInsertQuery = - "INSERT INTO immunization " - + "(" - + " uuid, changeDate, localChangeDate, creationDate, person_id," + String immunizationInsertQuery = "INSERT INTO immunization " + "(" + " uuid, changeDate, localChangeDate, creationDate, person_id," + " disease, diseaseDetails, reportDate, reportingUser_id, immunizationStatus, meansOfImmunization, immunizationManagementStatus," + " responsibleRegion_id, responsibleDistrict_id, responsibleCommunity_id, startDate, endDate, numberOfDoses, pseudonymized," - + " modified, snapshot" - + ")" - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + " modified, snapshot" + ")" + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Immunization.class, immunizationInsertQuery, + executeRaw( + Immunization.class, + immunizationInsertQuery, DataHelper.createUuid(), 0, caseInfo[1], @@ -3191,8 +3233,7 @@ private void migrateVaccinationInfo() throws SQLException { caseInfo[12], 0, 1, - 0 - ); + 0); if (caseInfo[12] == null) { // No vaccination doses specified @@ -3275,16 +3316,15 @@ private void insertVaccination( String vaccineNameString = vaccineName != null ? vaccineName.name() : null; String vaccineManufacturerString = vaccineManufacturer != null ? vaccineManufacturer.name() : null; String vaccinationInsertQuery = - "INSERT INTO vaccination" - + "(" - + " uuid, changeDate, localChangeDate, creationDate, immunization_id, healthConditions_id, " - + " reportDate, reportingUser_id, vaccinationDate, vaccineName, otherVaccineName, vaccineManufacturer, otherVaccineManufacturer, " - + " vaccinationInfoSource, vaccineInn, vaccineBatchNumber, vaccineUniiCode, vaccineAtcCode, pregnant, trimester, pseudonymized, " - + " modified, snapshot" - + ")" - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - - executeRaw(Vaccination.class, vaccinationInsertQuery, + "INSERT INTO vaccination" + "(" + " uuid, changeDate, localChangeDate, creationDate, immunization_id, healthConditions_id, " + + " reportDate, reportingUser_id, vaccinationDate, vaccineName, otherVaccineName, vaccineManufacturer, otherVaccineManufacturer, " + + " vaccinationInfoSource, vaccineInn, vaccineBatchNumber, vaccineUniiCode, vaccineAtcCode, pregnant, trimester, pseudonymized, " + + " modified, snapshot" + ")" + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + executeRaw( + Vaccination.class, + vaccinationInsertQuery, DataHelper.createUuid(), 0, immunizationId, @@ -3305,8 +3345,7 @@ private void insertVaccination( caseInfo[24], 0, 1, - 0 - ); + 0); } private void migrateEpiData() throws SQLException { @@ -3382,15 +3421,14 @@ private void migrateEpiData() throws SQLException { Long locationId = insertLocation((String) result[2]); VaccinationStatus vaccinationStatus = result[4] != null ? VaccinationStatus.valueOf((String) result[4]) : null; - String exposureQuery = - "INSERT INTO exposures" - + "(" + String exposureQuery = "INSERT INTO exposures" + "(" + " uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, exposureType, " + " startDate, endDate, animalCondition, animalVaccinated, prophylaxis, prophylaxisDate, description, pseudonymized, modified, snapshot" - + ")" - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + ")" + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Exposure.class, exposureQuery, + executeRaw( + Exposure.class, + exposureQuery, DataHelper.createUuid(), 0, result[0], @@ -3403,16 +3441,13 @@ private void migrateEpiData() throws SQLException { ? YesNoUnknown.YES.name() : vaccinationStatus == VaccinationStatus.UNVACCINATED ? YesNoUnknown.NO.name() - : vaccinationStatus == VaccinationStatus.UNKNOWN - ? YesNoUnknown.UNKNOWN.name() - : null), + : vaccinationStatus == VaccinationStatus.UNKNOWN ? YesNoUnknown.UNKNOWN.name() : null), result[5], result[6], "Automatic epi data migration based on last exposure details; this exposure may be merged with another exposure with animal contact", 0, 0, - 0 - ); + 0); } getDao(Exposure.class).executeRaw( @@ -3468,13 +3503,13 @@ private void migrateEpiDataField( Long locationId = insertLocation((String) result[4]); String exposureQuery = - "INSERT INTO exposures" - + "(" - + " uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, exposureType, " - + exposuresFieldName + ", " + "startDate, endDate, description, pseudonymized, modified, snapshot" - + ") VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + "INSERT INTO exposures" + "(" + " uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, exposureType, " + + exposuresFieldName + ", " + "startDate, endDate, description, pseudonymized, modified, snapshot" + ") VALUES (?, ?, " + + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Exposure.class, exposureQuery, + executeRaw( + Exposure.class, + exposureQuery, DataHelper.createUuid(), 0, result[0], @@ -3486,16 +3521,14 @@ private void migrateEpiDataField( result[3], 0, 0, - 0 - ); + 0); } } private long insertLocation(String locationDetails) throws SQLException { String locationQuery = - "INSERT INTO location " - + "(uuid, changeDate, localChangeDate, creationDate, details, pseudonymized, modified, snapshot) " - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?);"; + "INSERT INTO location " + "(uuid, changeDate, localChangeDate, creationDate, details, pseudonymized, modified, snapshot) " + + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?);"; executeRaw(Location.class, locationQuery, DataHelper.createUuid(), 0, locationDetails, 0, 0, 0); @@ -3515,13 +3548,10 @@ private void migratePersonContactDetails() throws SQLException { for (Object[] pcd : newPersons) { final String insertQuery = - "INSERT INTO personContactDetail " - + "(" - + " uuid, changeDate, localChangeDate, creationDate, person_id, primaryContact, " - + " personContactDetailType, phoneNumberType, contactInformation, additionalInformation, " - + " thirdParty, thirdPartyRole, thirdPartyName, snapshot" - + ") " - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; + "INSERT INTO personContactDetail " + "(" + " uuid, changeDate, localChangeDate, creationDate, person_id, primaryContact, " + + " personContactDetailType, phoneNumberType, contactInformation, additionalInformation, " + + " thirdParty, thirdPartyRole, thirdPartyName, snapshot" + ") " + "VALUES (?, ?, " + generateDateNowSQL() + ", " + + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; BigInteger personId = (BigInteger) pcd[0]; String phone = (String) pcd[1]; @@ -3531,7 +3561,9 @@ private void migratePersonContactDetails() throws SQLException { if (StringUtils.isNotEmpty(phone)) { boolean phoneOwnerEmpty = StringUtils.isEmpty(phoneOwner); - executeRaw(PersonContactDetail.class, insertQuery, + executeRaw( + PersonContactDetail.class, + insertQuery, DataHelper.createUuid(), 0, personId, @@ -3543,12 +3575,13 @@ private void migratePersonContactDetails() throws SQLException { (phoneOwnerEmpty ? 0 : 1), null, (phoneOwnerEmpty ? null : phoneOwner), - 0 - ); + 0); } if (StringUtils.isNotEmpty(emailAddress)) { - executeRaw(PersonContactDetail.class, insertQuery, + executeRaw( + PersonContactDetail.class, + insertQuery, DataHelper.createUuid(), 0, personId, @@ -3560,12 +3593,13 @@ private void migratePersonContactDetails() throws SQLException { 0, null, null, - 0 - ); + 0); } if (StringUtils.isNotEmpty(generalPractitionerDetails)) { - executeRaw(PersonContactDetail.class, insertQuery, + executeRaw( + PersonContactDetail.class, + insertQuery, DataHelper.createUuid(), 0, personId, @@ -3577,8 +3611,7 @@ private void migratePersonContactDetails() throws SQLException { 1, "General practitioner", generalPractitionerDetails, - 0 - ); + 0); } } } @@ -3603,15 +3636,14 @@ private void migrateEmbeddedEpiDataToExposures() throws SQLException { formatRawResultDate(burial, 6); formatRawResultDate(burial, 7); - String burialQuery = - "INSERT INTO exposures" - + "(" + String burialQuery = "INSERT INTO exposures" + "(" + " uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, deceasedPersonName, deceasedPersonRelation, " - + " physicalContactWithBody, deceasedPersonIll, startDate, endDate, exposureType, pseudonymized, modified, snapshot" - + ")" + + " physicalContactWithBody, deceasedPersonIll, startDate, endDate, exposureType, pseudonymized, modified, snapshot" + ")" + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Exposure.class, burialQuery, + executeRaw( + Exposure.class, + burialQuery, DataHelper.createUuid(), 0, burial[0], @@ -3625,8 +3657,7 @@ private void migrateEmbeddedEpiDataToExposures() throws SQLException { "BURIAL", 0, 0, - 0 - ); + 0); } GenericRawResults newGatherings = getDao(EpiData.class).queryRaw( @@ -3642,13 +3673,13 @@ private void migrateEmbeddedEpiDataToExposures() throws SQLException { formatRawResultDate(gathering, 2); String gatheringQuery = - "INSERT INTO exposures" - + "(uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, startDate, endDate, " - + " description, exposureType, pseudonymized, modified, snapshot" - + ")" - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + "INSERT INTO exposures" + "(uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, startDate, endDate, " + + " description, exposureType, pseudonymized, modified, snapshot" + ")" + "VALUES (?, ?, " + generateDateNowSQL() + ", " + + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Exposure.class, gatheringQuery, + executeRaw( + Exposure.class, + gatheringQuery, DataHelper.createUuid(), 0, gathering[0], @@ -3659,8 +3690,7 @@ private void migrateEmbeddedEpiDataToExposures() throws SQLException { "GATHERING", 0, 0, - 0 - ); + 0); } GenericRawResults newTravels = getDao(EpiData.class).queryRaw( @@ -3681,41 +3711,19 @@ private void migrateEmbeddedEpiDataToExposures() throws SQLException { .collect(Collectors.joining(", ")); String locationQuery = - "INSERT INTO location" - + "(uuid, changeDate, localChangeDate, creationDate, details, pseudonymized, modified, snapshot)" - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?)"; + "INSERT INTO location" + "(uuid, changeDate, localChangeDate, creationDate, details, pseudonymized, modified, snapshot)" + + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?)"; - executeRaw(Location.class, locationQuery, - DataHelper.createUuid(), - 0, - detailsString, - 0, - 0, - 0 - ); + executeRaw(Location.class, locationQuery, DataHelper.createUuid(), 0, detailsString, 0, 0, 0); Long locationId = getDao(Location.class).queryRawValue("SELECT MAX(id) FROM location;"); - String travelQuery = - "INSERT INTO exposures" - + "(" + String travelQuery = "INSERT INTO exposures" + "(" + " uuid, changeDate, localChangeDate, creationDate, epiData_id, location_id, startDate, endDate, exposureType, " - + " pseudonymized, modified, snapshot" - + ")" - + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + ", ?, ?, ?, ?, ?, ?, ?, ?)"; + + " pseudonymized, modified, snapshot" + ")" + "VALUES (?, ?, " + generateDateNowSQL() + ", " + generateDateNowSQL() + + ", ?, ?, ?, ?, ?, ?, ?, ?)"; - executeRaw(Exposure.class, travelQuery, - DataHelper.createUuid(), - 0, - travel[0], - locationId, - travel[1], - travel[2], - "TRAVEL", - 0, - 0, - 0 - ); + executeRaw(Exposure.class, travelQuery, DataHelper.createUuid(), 0, travel[0], locationId, travel[1], travel[2], "TRAVEL", 0, 0, 0); } } diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DtoUserRightsHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DtoUserRightsHelper.java new file mode 100644 index 00000000000..bc6e22185bc --- /dev/null +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DtoUserRightsHelper.java @@ -0,0 +1,37 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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.common; + +import de.symeda.sormas.api.user.DtoViewAndEditRights; +import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.app.backend.config.ConfigProvider; + +public class DtoUserRightsHelper { + + public static boolean isViewAllowed(Class clazz) { + UserRight userRightView = DtoViewAndEditRights.getUserRightView(clazz); + return userRightView == null || ConfigProvider.hasUserRight(userRightView); + } + + public static boolean isEditAllowed(Class clazz) { + UserRight userRightEdit = DtoViewAndEditRights.getUserRightEdit(clazz); + return userRightEdit == null || ConfigProvider.hasUserRight(userRightEdit); + } +} diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/infrastructure/InfrastructureHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/infrastructure/InfrastructureHelper.java index db406161224..867df03a71e 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/infrastructure/InfrastructureHelper.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/infrastructure/InfrastructureHelper.java @@ -42,8 +42,6 @@ public static InfrastructureChangeDatesDto getInfrastructureChangeDates() { changeDates.setDiseaseConfigurationChangeDate(DatabaseHelper.getDiseaseConfigurationDao().getLatestChangeDate()); changeDates.setUserRoleConfigurationChangeDate(DatabaseHelper.getUserRoleConfigDao().getLatestChangeDate()); changeDates.setFeatureConfigurationChangeDate(DatabaseHelper.getFeatureConfigurationDao().getLatestChangeDate()); - changeDates.setCampaignChangeDate(DatabaseHelper.getCampaignDao().getLatestChangeDate()); - changeDates.setCampaignFormMetaChangeDate(DatabaseHelper.getCampaignFormMetaDao().getLatestChangeDate()); changeDates.setAreaChangeDate(DatabaseHelper.getAreaDao().getLatestChangeDate()); return changeDates; @@ -73,9 +71,5 @@ public static void handlePulledInfrastructureData(InfrastructureSyncDto infrastr DatabaseHelper.getFeatureConfigurationDao().delete(infrastructureData.getDeletedFeatureConfigurationUuids()); new FeatureConfigurationDtoHelper() .handlePulledList(DatabaseHelper.getFeatureConfigurationDao(), infrastructureData.getFeatureConfigurations()); - if (!DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS)) { - new CampaignDtoHelper().handlePulledList(DatabaseHelper.getCampaignDao(), infrastructureData.getCampaigns()); - new CampaignFormMetaDtoHelper().handlePulledList(DatabaseHelper.getCampaignFormMetaDao(), infrastructureData.getCampaignFormMetas()); - } } } diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/outbreak/OutbreakDtoHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/outbreak/OutbreakDtoHelper.java index 1068b2ea7fb..52a1d9a5a9a 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/outbreak/OutbreakDtoHelper.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/outbreak/OutbreakDtoHelper.java @@ -34,11 +34,11 @@ protected Class getAdoClass() { @Override protected Class getDtoClass() { - throw new UnsupportedOperationException(); + return OutbreakDto.class; } @Override - protected Call> pullAllSince(long since, Integer size, String lastSynchronizedUuid) throws NoConnectionException { + protected Call> pullAllSince(long since, Integer size, String lastSynchronizedUuid) throws NoConnectionException { return RetroProvider.getOutbreakFacade().pullActiveSince(since); } @@ -67,8 +67,8 @@ public void fillInnerFromAdo(OutbreakDto target, Outbreak source) { throw new UnsupportedOperationException("Entity is read-only"); } - @Override - protected long getApproximateJsonSizeInBytes() { - return 0; - } + @Override + protected long getApproximateJsonSizeInBytes() { + return 0; + } } diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/User.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/User.java index 628d2a03738..0370db5d87d 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/User.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/User.java @@ -16,6 +16,7 @@ package de.symeda.sormas.app.backend.user; import java.lang.reflect.Type; +import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -23,7 +24,6 @@ import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; -import javax.persistence.ManyToOne; import javax.persistence.Transient; import com.google.gson.Gson; @@ -33,6 +33,7 @@ import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.Language; +import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.app.backend.common.AbstractDomainObject; import de.symeda.sormas.app.backend.facility.Facility; @@ -66,6 +67,7 @@ public class User extends AbstractDomainObject { public static final String ASSOCIATED_OFFICER = "associatedOfficer"; public static final String USER_ROLES_JSON = "userRole"; public static final String LANGUAGE = "language"; + public static final String JURISDICTION_LEVEL = "jurisdictionLevel"; @Column(nullable = false) private String userName; @@ -108,6 +110,9 @@ public class User extends AbstractDomainObject { // initialized from userRolesJson private Set userRoles = null; + @Enumerated(EnumType.STRING) + private JurisdictionLevel jurisdictionLevel; + public String getUserName() { return userName; } @@ -273,6 +278,19 @@ public String getUserRolesString() { return result.toString(); } + public JurisdictionLevel getJurisdictionLevel() { + return jurisdictionLevel; + } + + public void setJurisdictionLevel(JurisdictionLevel jurisdictionLevel) { + this.jurisdictionLevel = jurisdictionLevel; + } + + public boolean hasJurisdictionLevel(JurisdictionLevel... jurisdictionLevels) { + JurisdictionLevel userJurisdictionLevel = getJurisdictionLevel(); + return Arrays.asList(jurisdictionLevels).contains(userJurisdictionLevel); + } + @Override public String toString() { diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDao.java index 949f42afe40..7d536ca345f 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDao.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDao.java @@ -16,7 +16,13 @@ package de.symeda.sormas.app.backend.user; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.List; +import java.util.Random; + +import org.apache.commons.collections4.CollectionUtils; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.QueryBuilder; @@ -25,6 +31,7 @@ import android.util.Log; import de.symeda.sormas.api.user.JurisdictionLevel; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.app.backend.common.AbstractAdoDao; import de.symeda.sormas.app.backend.common.AbstractDomainObject; @@ -146,21 +153,90 @@ public List getAllInJurisdiction() { } } - public List getInformantsByAssociatedOfficer(User officer) { + public List getUsersByAssociatedOfficer(User officer, UserRight userRight) { try { - QueryBuilder builder = queryBuilder(); - Where where = builder.where(); - where.and( - where.eq(User.ASSOCIATED_OFFICER + "_id", officer), - where.or(createRoleFilter(UserRole.HOSPITAL_INFORMANT, where), createRoleFilter(UserRole.COMMUNITY_INFORMANT, where))); + QueryBuilder builder = queryBuilder(); + Where where = builder.where(); + where.eq(User.ASSOCIATED_OFFICER + "_id", officer); + addUserRightFilters(where, userRight); + return builder.query(); + } catch (SQLException e) { + Log.e(getTableName(), "Could not perform getUsersByAssociatedOfficer"); + throw new RuntimeException(e); + } + } - return (List) builder.query(); + // TODO: Potentially replace this with an API method in #4461 + public JurisdictionLevel getJurisdictionLevel(Collection roles) { + + boolean laboratoryJurisdictionPresent = false; + for (UserRole role : roles) { + final JurisdictionLevel jurisdictionLevel = role.getJurisdictionLevel(); + if (roles.size() == 1 || (jurisdictionLevel != JurisdictionLevel.NONE && jurisdictionLevel != JurisdictionLevel.LABORATORY)) { + return jurisdictionLevel; + } else if (jurisdictionLevel == JurisdictionLevel.LABORATORY) { + laboratoryJurisdictionPresent = true; + } + } + + return laboratoryJurisdictionPresent ? JurisdictionLevel.LABORATORY : JurisdictionLevel.NONE; + } + + public User getRandomRegionUser(Region region, UserRight... userRights) { + + return getRandomUser(getUsersWithJurisdictionLevel(JurisdictionLevel.REGION, Arrays.asList(userRights))); + } + + public User getRandomDistrictUser(District district, UserRight... userRights) { + + return getRandomUser(getUsersWithJurisdictionLevel(JurisdictionLevel.DISTRICT, Arrays.asList(userRights))); + } + + private List getUsersWithJurisdictionLevel(JurisdictionLevel jurisdictionLevel, Collection userRights) { + + try { + QueryBuilder builder = queryBuilder(); + Where where = builder.where(); + where.eq(User.JURISDICTION_LEVEL, jurisdictionLevel); + addUserRightFilters(where, (UserRight[]) userRights.toArray()); + return builder.query(); } catch (SQLException e) { Log.e(getTableName(), "Could not perform getInformantsByAssociatedOfficer"); throw new RuntimeException(e); } } + private User getRandomUser(List candidates) { + + if (CollectionUtils.isEmpty(candidates)) { + return null; + } + + return candidates.get(new Random().nextInt(candidates.size())); + } + + private void addUserRightFilters(Where where, UserRight... userRights) throws SQLException { + List userRoles = new ArrayList<>(); + if (userRights != null) { + Arrays.asList(userRights).forEach(right -> userRoles.addAll(right.getDefaultUserRoles())); + } + + if (userRoles.size() == 1) { + where.and(); + createRoleFilter(userRoles.get(0), where); + } else if (userRoles.size() > 1) { + where.and(); + userRoles.forEach(role -> { + try { + createRoleFilter(role, where); + } catch (SQLException e) { + throw new RuntimeException(e); + } + }); + where.or(userRoles.size()); + } + } + private Where createRoleFilter(UserRole role, Where where) throws SQLException { return where.like(User.USER_ROLES_JSON, "%\"" + role.name() + "\"%"); } 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 a61d87c19a1..376f10dc8e2 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 @@ -105,6 +105,8 @@ protected void fillInnerFromDto(User target, UserDto source) { target.setAddress(locationHelper.fillOrCreateFromDto(target.getAddress(), source.getAddress())); target.setPhone(source.getPhone()); target.setLanguage(source.getLanguage()); + + target.setJurisdictionLevel(DatabaseHelper.getUserDao().getJurisdictionLevel(target.getUserRoles())); } @Override 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 6db77f650fb..58bcabba9d8 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,12 +21,13 @@ import static de.symeda.sormas.api.caze.CaseConfirmationBasis.EPIDEMIOLOGICAL_CONFIRMATION; import static de.symeda.sormas.api.caze.CaseConfirmationBasis.LABORATORY_DIAGNOSTIC_CONFIRMATION; -import java.util.Arrays; import java.util.Date; import java.util.List; import android.webkit.WebView; + import androidx.fragment.app.FragmentActivity; + import de.symeda.sormas.api.CountryHelper; import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.CaseClassification; @@ -52,7 +53,7 @@ import de.symeda.sormas.api.event.TypeOfPlace; import de.symeda.sormas.api.infrastructure.facility.FacilityDto; import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup; -import de.symeda.sormas.api.person.Sex; +import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.YesNoUnknown; @@ -201,7 +202,7 @@ private void setUpFieldVisibilities(final FragmentCaseEditLayoutBinding contentB contentBinding.caseDataQuarantineReduced.setVisibility(record.isQuarantineReduced() ? VISIBLE : GONE); User user = ConfigProvider.getUser(); - if (user.hasUserRole(UserRole.HOSPITAL_INFORMANT)) { + if (user.hasJurisdictionLevel(JurisdictionLevel.HEALTH_FACILITY)) { // Hospital Informants are not allowed to change place of stay contentBinding.caseDataDifferentPlaceOfStayJurisdiction.setEnabled(false); contentBinding.caseDataDifferentPlaceOfStayJurisdiction.setVisibility(GONE); 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 7c90321de9c..b8589de17a4 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 @@ -15,6 +15,14 @@ package de.symeda.sormas.app.caze.edit; +import static de.symeda.sormas.app.core.notification.NotificationType.ERROR; +import static de.symeda.sormas.app.core.notification.NotificationType.WARNING; + +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; @@ -22,11 +30,6 @@ import androidx.annotation.NonNull; -import org.apache.commons.lang3.StringUtils; - -import java.util.Calendar; -import java.util.List; - import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.contact.ContactStatus; @@ -51,13 +54,11 @@ import de.symeda.sormas.app.core.async.SavingAsyncTask; import de.symeda.sormas.app.core.async.TaskResultHolder; import de.symeda.sormas.app.core.notification.NotificationHelper; +import de.symeda.sormas.app.core.notification.NotificationType; import de.symeda.sormas.app.person.SelectOrCreatePersonDialog; import de.symeda.sormas.app.util.Bundler; import de.symeda.sormas.app.util.DateFormatHelper; -import static de.symeda.sormas.app.core.notification.NotificationType.ERROR; -import static de.symeda.sormas.app.core.notification.NotificationType.WARNING; - public class CaseNewActivity extends BaseEditActivity { public static final String TAG = CaseNewActivity.class.getSimpleName(); @@ -83,8 +84,15 @@ public static void startActivityFromContact(Context fromActivity, String contact BaseEditActivity.startActivity(fromActivity, CaseNewActivity.class, buildBundleWithContact(contactUuid)); } - public static void startActivityFromEventPerson(Context fromActivity, String eventParticipantUuid) { - BaseEditActivity.startActivity(fromActivity, CaseNewActivity.class, buildBundleWithEventParticipant(eventParticipantUuid)); + public static void startActivityFromEventPerson(Context fromActivity, EventParticipant eventParticipant) { + if (eventParticipant.getEvent().getDisease() == null) { + NotificationHelper.showNotification( + getActiveActivity(), + NotificationType.WARNING, + getActiveActivity().getResources().getString(R.string.message_EventParticipant_to_Case_Without_Event_Disease)); + return; + } + BaseEditActivity.startActivity(fromActivity, CaseNewActivity.class, buildBundleWithEventParticipant(eventParticipant.getUuid())); } public static Bundler buildBundle() { @@ -205,8 +213,8 @@ public void saveData() { return; } - // Person selection can be skipped if the case was created from a contact - if (contactUuid == null) { + // 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 -> { if (person != null) { caze.setPerson(person); diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewFragment.java index 12d6206e3dd..6a068bb1c71 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewFragment.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewFragment.java @@ -248,9 +248,7 @@ public void onLayoutBinding(FragmentCaseNewLayoutBinding contentBinding) { contentBinding.facilityTypeGroup.setValue(FacilityTypeGroup.MEDICAL_FACILITY); contentBinding.caseDataFacilityType.setValue(FacilityType.HOSPITAL); User user = ConfigProvider.getUser(); - boolean userHasFacilityJurisdictionLevel = - user.getUserRoles().stream().anyMatch(userRole -> userRole.getJurisdictionLevel().equals(JurisdictionLevel.HEALTH_FACILITY)); - if (!userHasFacilityJurisdictionLevel) { + if (!user.hasJurisdictionLevel(JurisdictionLevel.HEALTH_FACILITY)) { contentBinding.caseDataHealthFacility.setValue(null); } } @@ -289,7 +287,7 @@ public void onAfterLayoutBinding(final FragmentCaseNewLayoutBinding contentBindi contentBinding.facilityOrHome.setValue(TypeOfPlace.FACILITY); } - if (user.hasUserRole(UserRole.HOSPITAL_INFORMANT) && user.getHealthFacility() != null) { + if (user.hasJurisdictionLevel(JurisdictionLevel.HEALTH_FACILITY)) { // Hospital Informants are not allowed to create cases in another health facility contentBinding.caseDataCommunity.setEnabled(false); contentBinding.caseDataCommunity.setRequired(false); @@ -302,12 +300,12 @@ public void onAfterLayoutBinding(final FragmentCaseNewLayoutBinding contentBindi contentBinding.caseDataDifferentPlaceOfStayJurisdiction.setVisibility(GONE); } - if (user.hasUserRole(UserRole.POE_INFORMANT) && user.getPointOfEntry() != null) { + if (user.getPointOfEntry() != null) { contentBinding.caseDataPointOfEntry.setEnabled(false); contentBinding.caseDataPointOfEntry.setRequired(false); } - if (user.hasUserRole(UserRole.COMMUNITY_INFORMANT) && user.getCommunity() != null) { + if (user.hasJurisdictionLevel(JurisdictionLevel.COMMUNITY)) { // Community Informants are not allowed to create cases in another community contentBinding.caseDataCommunity.setEnabled(false); contentBinding.caseDataCommunity.setRequired(false); diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/read/CaseReadFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/read/CaseReadFragment.java index d69dd09e8b3..d547412e7d8 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/read/CaseReadFragment.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/read/CaseReadFragment.java @@ -18,8 +18,6 @@ import static android.view.View.GONE; import static android.view.View.VISIBLE; -import java.util.Arrays; - import android.os.Bundle; import android.view.View; import android.webkit.WebView; @@ -32,7 +30,6 @@ import de.symeda.sormas.api.caze.CaseOrigin; import de.symeda.sormas.api.event.TypeOfPlace; import de.symeda.sormas.api.infrastructure.facility.FacilityDto; -import de.symeda.sormas.api.person.Sex; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.YesNoUnknown; import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers; diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantEditFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantEditFragment.java index 378f38618da..f0f1e6cd3d6 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantEditFragment.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantEditFragment.java @@ -82,7 +82,7 @@ public void onClick(View v) { @Override public void onClick(View v) { - CaseNewActivity.startActivityFromEventPerson(getContext(), record.getUuid()); + CaseNewActivity.startActivityFromEventPerson(getContext(), record); } }); } diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/login/LoginActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/login/LoginActivity.java index 60271493d2f..d29797cc8e8 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/login/LoginActivity.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/login/LoginActivity.java @@ -31,8 +31,8 @@ import de.symeda.sormas.api.Language; import de.symeda.sormas.api.feature.FeatureType; import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRight; -import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.app.BaseLocalizedActivity; import de.symeda.sormas.app.LocaleManager; @@ -277,13 +277,10 @@ private void openLandingActivity() { if (caseSuveillance) { if (ConfigProvider.hasUserRight(UserRight.CASE_VIEW) - && (user.hasUserRole(UserRole.SURVEILLANCE_OFFICER) - || user.hasUserRole(UserRole.CASE_OFFICER) - || user.hasUserRole(UserRole.POE_INFORMANT) - || user.hasUserRole(UserRole.COMMUNITY_INFORMANT) - || user.hasUserRole(UserRole.HOSPITAL_INFORMANT))) { + && (ConfigProvider.hasUserRight(UserRight.CASE_RESPONSIBLE) + || user.hasJurisdictionLevel(JurisdictionLevel.HEALTH_FACILITY, JurisdictionLevel.COMMUNITY, JurisdictionLevel.POINT_OF_ENTRY))) { NavigationHelper.goToCases(LoginActivity.this); - } else if (ConfigProvider.hasUserRight(UserRight.CONTACT_VIEW) && user.hasUserRole(UserRole.CONTACT_OFFICER)) { + } else if (ConfigProvider.hasUserRight(UserRight.CONTACT_VIEW) && ConfigProvider.hasUserRight(UserRight.CONTACT_RESPONSIBLE)) { NavigationHelper.goToContacts(LoginActivity.this); } else if (ConfigProvider.hasUserRight(UserRight.CASE_VIEW)) { NavigationHelper.goToCases(LoginActivity.this); diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportActivity.java index 3f86a44b37b..a82105f9baa 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportActivity.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportActivity.java @@ -19,7 +19,8 @@ import android.content.Context; -import de.symeda.sormas.api.user.UserRole; +import de.symeda.sormas.api.user.JurisdictionLevel; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.EpiWeek; import de.symeda.sormas.app.BaseActivity; @@ -42,7 +43,8 @@ public static void startActivity(Context context) { @Override public List getPageMenuData() { List menuItems = PageMenuItem.fromEnum(ReportSection.values(), getContext()); - if (!(ConfigProvider.getUser().hasUserRole(UserRole.SURVEILLANCE_OFFICER))) { + if (!(ConfigProvider.hasUserRight(UserRight.WEEKLYREPORT_CREATE) + && ConfigProvider.getUser().hasJurisdictionLevel(JurisdictionLevel.DISTRICT))) { menuItems.set(ReportSection.INFORMANT_REPORTS.ordinal(), null); setPageMenuVisibility(false); } diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportFragment.java index 69a61e84f28..3a4e297bf37 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportFragment.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportFragment.java @@ -31,8 +31,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRight; -import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.api.utils.EpiWeek; @@ -84,8 +84,8 @@ public static ReportFragment newInstance() { protected String getSubHeadingTitle() { Resources r = getResources(); String defaultValue = r.getString(R.string.hint_report_not_submitted); - boolean isInformant = - ConfigProvider.getUser().hasUserRole(UserRole.HOSPITAL_INFORMANT) || ConfigProvider.getUser().hasUserRole(UserRole.COMMUNITY_INFORMANT); + boolean isInformant = ConfigProvider.hasUserRight(UserRight.WEEKLYREPORT_CREATE) + && ConfigProvider.getUser().hasJurisdictionLevel(JurisdictionLevel.HEALTH_FACILITY, JurisdictionLevel.COMMUNITY); if (DataHelper.isNullOrEmpty(reportDate)) { if (isInformant) { return defaultValue; diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportOverviewFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportOverviewFragment.java index ad85b335533..ecec3bf0d49 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportOverviewFragment.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/report/ReportOverviewFragment.java @@ -25,7 +25,8 @@ import android.view.View; import de.symeda.sormas.api.Disease; -import de.symeda.sormas.api.user.UserRole; +import de.symeda.sormas.api.user.JurisdictionLevel; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.api.utils.EpiWeek; import de.symeda.sormas.app.R; @@ -81,7 +82,8 @@ protected void showReportData() { EpiWeek epiWeek = getEpiWeek(); if (epiWeek == null || DateHelper.isEpiWeekAfter(DateHelper.getEpiWeek(new Date()), epiWeek) - || !ConfigProvider.getUser().hasUserRole(UserRole.SURVEILLANCE_OFFICER)) { + || !(ConfigProvider.hasUserRight(UserRight.WEEKLYREPORT_CREATE) + && ConfigProvider.getUser().hasJurisdictionLevel(JurisdictionLevel.DISTRICT))) { setVisibilityForNoData(); } else { showWeeklyReportOverview(); @@ -96,7 +98,8 @@ private void showWeeklyReportOverview() { return; } - if (!ConfigProvider.getUser().hasUserRole(UserRole.SURVEILLANCE_OFFICER)) { + if (!(ConfigProvider.hasUserRight(UserRight.WEEKLYREPORT_CREATE) + && ConfigProvider.getUser().hasJurisdictionLevel(JurisdictionLevel.DISTRICT))) { return; } @@ -116,7 +119,8 @@ public void doInBackground(TaskResultHolder resultHolder) { Disease disease = (Disease) getContentBinding().weeklyReportEntryDisease.getValue(); // confirmed reports - List informants = DatabaseHelper.getUserDao().getInformantsByAssociatedOfficer(ConfigProvider.getUser()); + List informants = + DatabaseHelper.getUserDao().getUsersByAssociatedOfficer(ConfigProvider.getUser(), UserRight.WEEKLYREPORT_CREATE); for (User informant : informants) { WeeklyReport report = DatabaseHelper.getWeeklyReportDao().queryByEpiWeekAndUser(getEpiWeek(), informant); if (report != null) { diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/rest/SynchronizeDataAsync.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/rest/SynchronizeDataAsync.java index 4b6c1f370ea..fba930c2af5 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/rest/SynchronizeDataAsync.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/rest/SynchronizeDataAsync.java @@ -17,6 +17,7 @@ import java.io.IOException; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -28,10 +29,30 @@ import android.os.AsyncTask; import android.util.Log; +import de.symeda.sormas.api.campaign.CampaignDto; +import de.symeda.sormas.api.campaign.data.CampaignFormDataDto; +import de.symeda.sormas.api.campaign.form.CampaignFormMetaDto; +import de.symeda.sormas.api.caze.CaseDataDto; +import de.symeda.sormas.api.clinicalcourse.ClinicalVisitDto; +import de.symeda.sormas.api.contact.ContactDto; +import de.symeda.sormas.api.event.EventDto; +import de.symeda.sormas.api.event.EventParticipantDto; import de.symeda.sormas.api.feature.FeatureType; +import de.symeda.sormas.api.immunization.ImmunizationDto; import de.symeda.sormas.api.infrastructure.InfrastructureChangeDatesDto; import de.symeda.sormas.api.infrastructure.InfrastructureSyncDto; +import de.symeda.sormas.api.outbreak.OutbreakDto; +import de.symeda.sormas.api.person.PersonDto; +import de.symeda.sormas.api.report.AggregateReportDto; +import de.symeda.sormas.api.report.WeeklyReportDto; +import de.symeda.sormas.api.sample.AdditionalTestDto; +import de.symeda.sormas.api.sample.PathogenTestDto; +import de.symeda.sormas.api.sample.SampleDto; +import de.symeda.sormas.api.task.TaskDto; +import de.symeda.sormas.api.therapy.PrescriptionDto; +import de.symeda.sormas.api.therapy.TreatmentDto; import de.symeda.sormas.api.utils.DateHelper; +import de.symeda.sormas.api.visit.VisitDto; import de.symeda.sormas.app.R; import de.symeda.sormas.app.backend.campaign.CampaignDtoHelper; import de.symeda.sormas.app.backend.campaign.data.CampaignFormDataDtoHelper; @@ -41,8 +62,8 @@ import de.symeda.sormas.app.backend.clinicalcourse.ClinicalVisitDtoHelper; import de.symeda.sormas.app.backend.common.DaoException; import de.symeda.sormas.app.backend.common.DatabaseHelper; +import de.symeda.sormas.app.backend.common.DtoUserRightsHelper; import de.symeda.sormas.app.backend.config.ConfigProvider; -import de.symeda.sormas.app.backend.contact.Contact; import de.symeda.sormas.app.backend.contact.ContactDtoHelper; import de.symeda.sormas.app.backend.customizableenum.CustomizableEnumValueDtoHelper; import de.symeda.sormas.app.backend.disease.DiseaseConfigurationDtoHelper; @@ -226,7 +247,10 @@ protected Void doInBackground(Void... params) { public static boolean hasAnyUnsynchronizedData() { final boolean hasUnsynchronizedCampaignData = !DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS) - && (DatabaseHelper.getCampaignFormDataDao().isAnyModified()); + && (DatabaseHelper.getCampaignDao().isAnyModified() + || DatabaseHelper.getCampaignFormMetaDao().isAnyModified() + || DatabaseHelper.getCampaignFormDataDao().isAnyModified()); + return DatabaseHelper.getCaseDao().isAnyModified() || DatabaseHelper.getImmunizationDao().isAnyModified() || DatabaseHelper.getContactDao().isAnyModified() @@ -346,6 +370,16 @@ private void synchronizeChangedData() throws DaoException, NoConnectionException // Campaigns if (!DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS)) { + + // meta first + final CampaignFormMetaDtoHelper campaignFormMetaDtoHelper = new CampaignFormMetaDtoHelper(); + // no meta editing in mobile app - if (campaignFormMetaDtoHelper.pullAndPushEntities(context)) + campaignFormMetaDtoHelper.pullEntities(true, context); + + final CampaignDtoHelper campaignDtoHelper = new CampaignDtoHelper(); + // no campaign editing yet - if (campaignDtoHelper.pullAndPushEntities(context)) + campaignDtoHelper.pullEntities(true, context); + final CampaignFormDataDtoHelper campaignFormDataDtoHelper = new CampaignFormDataDtoHelper(); if (campaignFormDataDtoHelper.pullAndPushEntities(context)) campaignFormDataDtoHelper.pullEntities(true, context); @@ -399,6 +433,13 @@ private void repullData() throws DaoException, NoConnectionException, ServerConn // Campaigns if (!DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS)) { + // meta first + final CampaignFormMetaDtoHelper campaignFormMetaDtoHelper = new CampaignFormMetaDtoHelper(); + campaignFormMetaDtoHelper.repullEntities(context); + + final CampaignDtoHelper campaignDtoHelper = new CampaignDtoHelper(); + campaignDtoHelper.repullEntities(context); + final CampaignFormDataDtoHelper campaignFormDataDtoHelper = new CampaignFormDataDtoHelper(); campaignFormDataDtoHelper.repullEntities(context); } @@ -468,11 +509,6 @@ private void pullInitialInfrastructure() throws DaoException, ServerCommunicatio new FeatureConfigurationDtoHelper().pullEntities(false, context); - if (!DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS)) { - new CampaignFormMetaDtoHelper().pullEntities(false, context); - new CampaignDtoHelper().pullEntities(false, context); - } - ConfigProvider.setInitialSyncRequired(false); } @@ -482,41 +518,54 @@ private void pullAndRemoveArchivedUuidsSince(Date since) throws NoConnectionExce try { // Cases - List caseUuids = executeUuidCall(RetroProvider.getCaseFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); - for (String caseUuid : caseUuids) { - DatabaseHelper.getCaseDao().deleteCaseAndAllDependingEntities(caseUuid); + if (DtoUserRightsHelper.isViewAllowed(CaseDataDto.class)) { + List caseUuids = executeUuidCall(RetroProvider.getCaseFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); + for (String caseUuid : caseUuids) { + DatabaseHelper.getCaseDao().deleteCaseAndAllDependingEntities(caseUuid); + } } // Contacts - List contactUuids = executeUuidCall(RetroProvider.getContactFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); - for (String contactUuid : contactUuids) { - DatabaseHelper.getContactDao().deleteContactAndAllDependingEntities(contactUuid); + if (DtoUserRightsHelper.isViewAllowed(ContactDto.class)) { + List contactUuids = + executeUuidCall(RetroProvider.getContactFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); + for (String contactUuid : contactUuids) { + DatabaseHelper.getContactDao().deleteContactAndAllDependingEntities(contactUuid); + } } // Events - List eventUuids = executeUuidCall(RetroProvider.getEventFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); - for (String eventUuid : eventUuids) { - DatabaseHelper.getEventDao().deleteEventAndAllDependingEntities(eventUuid); + if (DtoUserRightsHelper.isViewAllowed(EventDto.class)) { + List eventUuids = executeUuidCall(RetroProvider.getEventFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); + for (String eventUuid : eventUuids) { + DatabaseHelper.getEventDao().deleteEventAndAllDependingEntities(eventUuid); + } } // EventParticipant - List eventParticipantUuids = - executeUuidCall(RetroProvider.getEventParticipantFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); - for (String eventParticipantUuid : eventParticipantUuids) { - DatabaseHelper.getEventParticipantDao().deleteEventParticipantAndAllDependingEntities(eventParticipantUuid); + if (DtoUserRightsHelper.isViewAllowed(EventParticipantDto.class)) { + List eventParticipantUuids = + executeUuidCall(RetroProvider.getEventParticipantFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); + for (String eventParticipantUuid : eventParticipantUuids) { + DatabaseHelper.getEventParticipantDao().deleteEventParticipantAndAllDependingEntities(eventParticipantUuid); + } } // Tasks - List taskUuids = executeUuidCall(RetroProvider.getTaskFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); - for (String taskUuid : taskUuids) { - DatabaseHelper.getTaskDao().deleteTaskAndAllDependingEntities(taskUuid); + if (DtoUserRightsHelper.isViewAllowed(TaskDto.class)) { + List taskUuids = executeUuidCall(RetroProvider.getTaskFacade().pullArchivedUuidsSince(since != null ? since.getTime() : 0)); + for (String taskUuid : taskUuids) { + DatabaseHelper.getTaskDao().deleteTaskAndAllDependingEntities(taskUuid); + } } // Inactive outbreaks - List outbreakUuids = - executeUuidCall(RetroProvider.getOutbreakFacade().pullInactiveUuidsSince(since != null ? since.getTime() : 0)); - for (String outbreakUuid : outbreakUuids) { - DatabaseHelper.getOutbreakDao().deleteOutbreakAndAllDependingEntities(outbreakUuid); + if (DtoUserRightsHelper.isViewAllowed(OutbreakDto.class)) { + List outbreakUuids = + executeUuidCall(RetroProvider.getOutbreakFacade().pullInactiveUuidsSince(since != null ? since.getTime() : 0)); + for (String outbreakUuid : outbreakUuids) { + DatabaseHelper.getOutbreakDao().deleteOutbreakAndAllDependingEntities(outbreakUuid); + } } ConfigProvider.setLastArchivedSyncDate(new Date()); @@ -531,41 +580,55 @@ private void pullAndRemoveDeletedUuidsSince(Date since) throws NoConnectionExcep try { // Cases - List caseUuids = executeUuidCall(RetroProvider.getCaseFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); - for (String caseUuid : caseUuids) { - DatabaseHelper.getCaseDao().deleteCaseAndAllDependingEntities(caseUuid); + if (DtoUserRightsHelper.isViewAllowed(CaseDataDto.class)) { + List caseUuids = executeUuidCall(RetroProvider.getCaseFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); + for (String caseUuid : caseUuids) { + DatabaseHelper.getCaseDao().deleteCaseAndAllDependingEntities(caseUuid); + } } // Immunization - List immunizationUuids = - executeUuidCall(RetroProvider.getImmunizationFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); - for (String immunizationUuid : immunizationUuids) { - DatabaseHelper.getImmunizationDao().deleteImmunizationAndAllDependingEntities(immunizationUuid); + if (DtoUserRightsHelper.isViewAllowed(ImmunizationDto.class)) { + List immunizationUuids = + executeUuidCall(RetroProvider.getImmunizationFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); + for (String immunizationUuid : immunizationUuids) { + DatabaseHelper.getImmunizationDao().deleteImmunizationAndAllDependingEntities(immunizationUuid); + } } // Events - List eventUuids = executeUuidCall(RetroProvider.getEventFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); - for (String eventUuid : eventUuids) { - DatabaseHelper.getEventDao().deleteEventAndAllDependingEntities(eventUuid); + if (DtoUserRightsHelper.isViewAllowed(EventDto.class)) { + List eventUuids = executeUuidCall(RetroProvider.getEventFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); + for (String eventUuid : eventUuids) { + DatabaseHelper.getEventDao().deleteEventAndAllDependingEntities(eventUuid); + } } //Event participants - List eventParticipantUuids = - executeUuidCall(RetroProvider.getEventParticipantFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); - for (String eventParticipantUuid : eventParticipantUuids) { - DatabaseHelper.getEventParticipantDao().deleteEventParticipant(eventParticipantUuid); + if (DtoUserRightsHelper.isViewAllowed(EventParticipantDto.class)) { + List eventParticipantUuids = + executeUuidCall(RetroProvider.getEventParticipantFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); + for (String eventParticipantUuid : eventParticipantUuids) { + DatabaseHelper.getEventParticipantDao().deleteEventParticipant(eventParticipantUuid); + } } // Contacts - List contactUuids = executeUuidCall(RetroProvider.getContactFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); - for (String contactUuid : contactUuids) { - DatabaseHelper.getContactDao().deleteContactAndAllDependingEntities(contactUuid); + if (DtoUserRightsHelper.isViewAllowed(ContactDto.class)) { + List contactUuids = + executeUuidCall(RetroProvider.getContactFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); + for (String contactUuid : contactUuids) { + DatabaseHelper.getContactDao().deleteContactAndAllDependingEntities(contactUuid); + } } // Samples - List sampleUuids = executeUuidCall(RetroProvider.getSampleFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); - for (String sampleUuid : sampleUuids) { - DatabaseHelper.getSampleDao().deleteSampleAndAllDependingEntities(sampleUuid); + if (DtoUserRightsHelper.isViewAllowed(SampleDto.class)) { + List sampleUuids = + executeUuidCall(RetroProvider.getSampleFacade().pullDeletedUuidsSince(since != null ? since.getTime() : 0)); + for (String sampleUuid : sampleUuids) { + DatabaseHelper.getSampleDao().deleteSampleAndAllDependingEntities(sampleUuid); + } } ConfigProvider.setLastDeletedSyncDate(new Date()); @@ -587,56 +650,75 @@ private void pushNewPullMissingAndDeleteInvalidData() // Example: Case is created using an existing person, meanwhile user loses access to the person pushNewData(); + boolean viewAllowed; + // weekly reports and entries - List weeklyReportUuids = executeUuidCall(RetroProvider.getWeeklyReportFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(WeeklyReportDto.class); + List weeklyReportUuids = viewAllowed ? executeUuidCall(RetroProvider.getWeeklyReportFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getWeeklyReportDao().deleteInvalid(weeklyReportUuids); // aggregate reports - List aggregateReportUuids = executeUuidCall(RetroProvider.getAggregateReportFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(AggregateReportDto.class); + List aggregateReportUuids = viewAllowed ? executeUuidCall(RetroProvider.getAggregateReportFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getAggregateReportDao().deleteInvalid(aggregateReportUuids); // tasks - List taskUuids = executeUuidCall(RetroProvider.getTaskFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(TaskDto.class); + List taskUuids = viewAllowed ? executeUuidCall(RetroProvider.getTaskFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getTaskDao().deleteInvalid(taskUuids); // visits - List visitUuids = executeUuidCall(RetroProvider.getVisitFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(VisitDto.class); + List visitUuids = viewAllowed ? executeUuidCall(RetroProvider.getVisitFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getVisitDao().deleteInvalid(visitUuids); // contacts - List contactUuids = executeUuidCall(RetroProvider.getContactFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(ContactDto.class); + List contactUuids = viewAllowed ? executeUuidCall(RetroProvider.getContactFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getContactDao().deleteInvalid(contactUuids); // sample tests - List sampleTestUuids = executeUuidCall(RetroProvider.getSampleTestFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(PathogenTestDto.class); + List sampleTestUuids = viewAllowed ? executeUuidCall(RetroProvider.getSampleTestFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getSampleTestDao().deleteInvalid(sampleTestUuids); // additional tests - List additionalTestUuids = executeUuidCall(RetroProvider.getAdditionalTestFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(AdditionalTestDto.class); + List additionalTestUuids = viewAllowed ? executeUuidCall(RetroProvider.getAdditionalTestFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getAdditionalTestDao().deleteInvalid(additionalTestUuids); // samples - List sampleUuids = executeUuidCall(RetroProvider.getSampleFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(SampleDto.class); + List sampleUuids = viewAllowed ? executeUuidCall(RetroProvider.getSampleFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getSampleDao().deleteInvalid(sampleUuids); // event participants - List eventParticipantUuids = executeUuidCall(RetroProvider.getEventParticipantFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(EventParticipantDto.class); + List eventParticipantUuids = viewAllowed ? executeUuidCall(RetroProvider.getEventParticipantFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getEventParticipantDao().deleteInvalid(eventParticipantUuids); // events - List eventUuids = executeUuidCall(RetroProvider.getEventFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(EventDto.class); + List eventUuids = viewAllowed ? executeUuidCall(RetroProvider.getEventFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getEventDao().deleteInvalid(eventUuids); // treatments - List treatmentUuids = executeUuidCall(RetroProvider.getTreatmentFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(TreatmentDto.class); + List treatmentUuids = viewAllowed ? executeUuidCall(RetroProvider.getTreatmentFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getTreatmentDao().deleteInvalid(treatmentUuids); // prescriptions - List prescriptionUuids = executeUuidCall(RetroProvider.getPrescriptionFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(PrescriptionDto.class); + List prescriptionUuids = viewAllowed ? executeUuidCall(RetroProvider.getPrescriptionFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getPrescriptionDao().deleteInvalid(prescriptionUuids); // clinical visits - List clinicalVisitUuids = executeUuidCall(RetroProvider.getClinicalVisitFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(ClinicalVisitDto.class); + List clinicalVisitUuids = viewAllowed ? executeUuidCall(RetroProvider.getClinicalVisitFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getClinicalVisitDao().deleteInvalid(clinicalVisitUuids); // immunizations - List immunizationUuids = executeUuidCall(RetroProvider.getImmunizationFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(ImmunizationDto.class); + List immunizationUuids = viewAllowed ? executeUuidCall(RetroProvider.getImmunizationFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getImmunizationDao().deleteInvalid(immunizationUuids); // cases - List caseUuids = executeUuidCall(RetroProvider.getCaseFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(CaseDataDto.class); + List caseUuids = viewAllowed ? executeUuidCall(RetroProvider.getCaseFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getCaseDao().deleteInvalid(caseUuids); // persons - List personUuids = executeUuidCall(RetroProvider.getPersonFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(PersonDto.class); + List personUuids = viewAllowed ? executeUuidCall(RetroProvider.getPersonFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getPersonDao().deleteInvalid(personUuids); // outbreak - List outbreakUuids = executeUuidCall(RetroProvider.getOutbreakFacade().pullActiveUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(OutbreakDto.class); + List outbreakUuids = viewAllowed ? executeUuidCall(RetroProvider.getOutbreakFacade().pullActiveUuids()) : new ArrayList<>(); DatabaseHelper.getOutbreakDao().deleteInvalid(outbreakUuids); // order is important, due to dependencies (e.g. case & person) @@ -662,9 +744,27 @@ private void pushNewPullMissingAndDeleteInvalidData() // CampaignData if (!DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS)) { + // meta first + final CampaignFormMetaDtoHelper campaignFormMetaDtoHelper = new CampaignFormMetaDtoHelper(); + // no editing of meta - campaignFormMetaDtoHelper.pushEntities(true); + viewAllowed = DtoUserRightsHelper.isViewAllowed(CampaignFormMetaDto.class); + final List campaignFormMetaUuids = + viewAllowed ? executeUuidCall(RetroProvider.getCampaignFormMetaFacade().pullUuids()) : new ArrayList<>(); + DatabaseHelper.getCampaignFormMetaDao().deleteInvalid(campaignFormMetaUuids); + campaignFormMetaDtoHelper.pullMissing(campaignFormMetaUuids); + + final CampaignDtoHelper campaignDtoHelper = new CampaignDtoHelper(); + // no editing of campaigns yet - campaignDtoHelper.pushEntities(true); + viewAllowed = DtoUserRightsHelper.isViewAllowed(CampaignDto.class); + final List campaignUuids = viewAllowed ? executeUuidCall(RetroProvider.getCampaignFacade().pullUuids()) : new ArrayList<>(); + DatabaseHelper.getCampaignDao().deleteInvalid(campaignUuids); + campaignDtoHelper.pullMissing(campaignUuids); + final CampaignFormDataDtoHelper campaignFormDataDtoHelper = new CampaignFormDataDtoHelper(); campaignFormDataDtoHelper.pushEntities(true); - final List campaignFormDataUuids = executeUuidCall(RetroProvider.getCampaignFormDataFacade().pullUuids()); + viewAllowed = DtoUserRightsHelper.isViewAllowed(CampaignFormDataDto.class); + final List campaignFormDataUuids = + viewAllowed ? executeUuidCall(RetroProvider.getCampaignFormDataFacade().pullUuids()) : new ArrayList<>(); DatabaseHelper.getCampaignFormDataDao().deleteInvalid(campaignFormDataUuids); campaignFormDataDtoHelper.pullMissing(campaignFormDataUuids); } @@ -742,18 +842,6 @@ private void pullMissingAndDeleteInvalidInfrastructure() new DiseaseConfigurationDtoHelper().pullMissing(diseaseConfigurationUuids); new CustomizableEnumValueDtoHelper().pullMissing(customizableEnumValueUuids); new FeatureConfigurationDtoHelper().pullMissing(featureConfigurationUuids); - - if (!DatabaseHelper.getFeatureConfigurationDao().isFeatureDisabled(FeatureType.CAMPAIGNS)) { - // campaigns - List campaignUuids = executeUuidCall(RetroProvider.getCampaignFacade().pullUuids()); - DatabaseHelper.getCampaignDao().deleteInvalid(campaignUuids); - // campaignFormMetas - List campaignFormMetaUuids = executeUuidCall(RetroProvider.getCampaignFormMetaFacade().pullUuids()); - DatabaseHelper.getCampaignFormMetaDao().deleteInvalid(campaignFormMetaUuids); - - new CampaignFormMetaDtoHelper().pullMissing(campaignFormMetaUuids); - new CampaignDtoHelper().pullMissing(campaignUuids); - } } private List executeUuidCall(Call> call) throws ServerConnectionException, ServerCommunicationException { diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskEditFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskEditFragment.java index 75dfeaa4577..6d95da99c64 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskEditFragment.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskEditFragment.java @@ -21,6 +21,10 @@ import android.view.View; +import org.joda.time.DateTimeComparator; + +import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.i18n.Validations; import de.symeda.sormas.api.task.TaskPriority; import de.symeda.sormas.api.task.TaskStatus; import de.symeda.sormas.api.task.TaskType; @@ -119,6 +123,8 @@ record = getActivityRootData(); public void onLayoutBinding(final FragmentTaskEditLayoutBinding contentBinding) { setUpControlListeners(contentBinding); + TaskValidator.initializeTaskValidation(contentBinding, record); + // Initialize ControlSpinnerFields contentBinding.taskTaskType.initializeSpinner(taskTypeList); contentBinding.taskPriority.initializeSpinner(priorityList); diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskValidator.java new file mode 100644 index 00000000000..942744065e9 --- /dev/null +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/task/edit/TaskValidator.java @@ -0,0 +1,50 @@ +package de.symeda.sormas.app.task.edit; + +import org.joda.time.DateTimeComparator; + +import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.i18n.Validations; +import de.symeda.sormas.app.backend.task.Task; +import de.symeda.sormas.app.databinding.FragmentTaskEditLayoutBinding; +import de.symeda.sormas.app.util.ResultCallback; + +public class TaskValidator { + + static void initializeTaskValidation(final FragmentTaskEditLayoutBinding contentBinding, final Task task) { + + ResultCallback taskSuggestedStartCallback = () -> { + if (contentBinding.taskSuggestedStart.getValue() != null && contentBinding.taskDueDate.getValue() != null) { + if (DateTimeComparator.getDateOnlyInstance() + .compare(contentBinding.taskDueDate.getValue(), contentBinding.taskSuggestedStart.getValue()) + < 0) { + contentBinding.taskSuggestedStart.enableErrorState( + I18nProperties.getValidationError( + Validations.beforeDate, + contentBinding.taskSuggestedStart.getCaption(), + contentBinding.taskDueDate.getCaption())); + return true; + } + } + return false; + }; + + ResultCallback taskDueDateCallback = () -> { + if (contentBinding.taskSuggestedStart.getValue() != null && contentBinding.taskDueDate.getValue() != null) { + if (DateTimeComparator.getDateOnlyInstance() + .compare(contentBinding.taskDueDate.getValue(), contentBinding.taskSuggestedStart.getValue()) + < 0) { + contentBinding.taskDueDate.enableErrorState( + I18nProperties.getValidationError( + Validations.afterDate, + contentBinding.taskDueDate.getCaption(), + contentBinding.taskSuggestedStart.getCaption())); + return true; + } + } + return false; + }; + + contentBinding.taskSuggestedStart.setValidationCallback(taskSuggestedStartCallback); + contentBinding.taskDueDate.setValidationCallback(taskDueDateCallback); + }; +} diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/util/FormBindingAdapters.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/util/FormBindingAdapters.java index 05095f65257..1587d116dc3 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/util/FormBindingAdapters.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/util/FormBindingAdapters.java @@ -139,13 +139,14 @@ public static void setUserViewRight(View view, UserRight viewRight) { @BindingAdapter("goneIfEmpty") public static void setGoneIfEmpty(View view, Object o) { - if (o == null) { - view.setVisibility(GONE); - } else if (o instanceof String && DataHelper.isNullOrEmpty((String) o)) { - view.setVisibility(GONE); - } else if (o instanceof YesNoUnknown && YesNoUnknown.NO.equals(o)) { - view.setVisibility(GONE); - } else if (o instanceof SymptomState && SymptomState.NO.equals(o)) { + view.setVisibility(isEmptyObject(o) ? GONE : View.VISIBLE); + } + + @BindingAdapter(value = { + "userViewRight", + "goneIfEmpty" }) + public static void setGoneIfEmptyAndNoUserRight(View view, UserRight viewRight, Object o) { + if (!ConfigProvider.hasUserRight(viewRight) || isEmptyObject(o)) { view.setVisibility(GONE); } else { view.setVisibility(View.VISIBLE); @@ -219,4 +220,18 @@ public static void setLocationValue(ControlLinkField textField, Location locatio } } } + + private static boolean isEmptyObject(Object o) { + if (o == null) { + return true; + } else if (o instanceof String && DataHelper.isNullOrEmpty((String) o)) { + return true; + } else if (o instanceof YesNoUnknown && YesNoUnknown.NO.equals(o)) { + return true; + } else if (o instanceof SymptomState && SymptomState.NO.equals(o)) { + return true; + } + + return false; + } } diff --git a/sormas-app/app/src/main/res/layout/fragment_person_edit_layout.xml b/sormas-app/app/src/main/res/layout/fragment_person_edit_layout.xml index de0967d1237..352b928649d 100644 --- a/sormas-app/app/src/main/res/layout/fragment_person_edit_layout.xml +++ b/sormas-app/app/src/main/res/layout/fragment_person_edit_layout.xml @@ -308,12 +308,16 @@ android:id="@+id/person_burialDate" app:value="@={data.burialDate}" app:softRequired="true" + app:dependencyParentField="@{personPresentCondition}" + app:dependencyParentValue="@{PresentCondition.BURIED}" style="@style/ControlFirstOfTwoColumnsStyle" /> @@ -322,6 +326,8 @@ android:id="@+id/person_burialPlaceDescription" app:value="@={data.burialPlaceDescription}" app:softRequired="true" + app:dependencyParentField="@{personPresentCondition}" + app:dependencyParentValue="@{PresentCondition.BURIED}" style="@style/ControlSingleColumnStyle" /> diff --git a/sormas-app/app/src/main/res/values-ar-rSA/strings.xml b/sormas-app/app/src/main/res/values-ar-rSA/strings.xml new file mode 100644 index 00000000000..61f582cad54 --- /dev/null +++ b/sormas-app/app/src/main/res/values-ar-rSA/strings.xml @@ -0,0 +1,652 @@ + + + + + SORMAS + and + No + Not answered + System + Yes + All + completed + Add Missing Case + Allow GPS Access + Apply filters + Back to settings + Cancel + Change PIN + Change Settings + Clear + Clear All + Close SORMAS + Confirm + Create + Create a case for this contact person + Create a case for this event person + Create treatment + Edit data + Delete + Dismiss + Done + Download + Download in background + Later + Edit + Edit Case + Edit Contact + Edit Event + Edit Sample + Forgot PIN? + Help + Install + Install later + Load more + Sign in + Sign in as demo user + Logout + Logout anyway + Mark all as read + New + New Case + New Immunization + New Campaign Form Data + New Contact + New Event + New Sample + New Task + Not Executable + OK + Open Case of Event Person + Open Prescription + Open Resulting Case + Open Source Case + Open Linked Case + Link Case + Synchronization conflicts + Options + Pick current GPS for address + Redownload + Redownload later + Refer case from Point of Entry + Report Problem + Re-synchronize data + Reset filters + Save + Save Case + Save Clinical Visit + Save Contact + Save Event + Save Event Participant + Save Prescription + Save Sample + Save Task + Save Treatment + Save Follow-up Visit + Select + Send + Set Cleared to No + Set Cleared to Unknown + View classification rules + Submit Weekly Report + Sync + Transfer case + Try again + Turn On GPS + Update search + Save Pathogen Test + Edit Pathogen Test + Submit Case Numbers + LBDS Key Exchange + LBDS Sync Persons + LBDS Sync Cases + Save Vaccination + Edit Vaccination + Address + Age + Attended by + Clinical Assessments + Case Contacts + Epidemiological Info + Case Fatality Rate + Pre-Existing Conditions + Hospitalization Info + Case Information + Maternal History + Port Health Info + Prescriptions + Case Samples + Case Tasks + Case Events + Case Immunizations + Case Vaccinations + Treatments + Create a new case + Changed data lost during re-sync. + Clinical Measurements + Date of Assessment + Assessment Information + Time of Assessment + Confirmation Date: %1$s + Confirmed + Confirmed Case + Confirmed Events + Contact Information + Contact Tasks + Epidemiological info + Follow-Up Information + Contact Immunizations + Contact Vaccinations + Converted to Case + Date of birth (year / month / day) + Date of Sampling + Close navigation drawer + Open navigation drawer + Dropped + Epi Week + Description + Location + Date of event + Event Information + Persons Involved + Event participant Immunizations + Event participant Vaccinations + Event Tasks + Executed by + Place of stay + Fatalities + First Name + Sex + Inadequate Specimen + Indeterminate + Informant Reports + Issued on + Last case + Last Name + Localisation of the lesions + Message + My Reports + Negative + New Case + New Contact + New Person Involved + New Sample + New Pathogen Test + New Task + Not a Contact + Not an Event + Outbreaks + Password + Patient Information + Pending + Period End + Period Start + Person Information + Person Involved + Positive + Possible Events + Prescribed by + Present Condition + Probable Case + Use Rapid Case Entry + Report Date: %1$s + Number of cases you have reported + Number of cases informants have reported + Resulting Case Status + Resulting Case UUID + SYNC + Signals + Sample Information + Server URL + Smallpox Vaccination Scar + Suspected Case + Symptom Information + Symptom onset + Filter Task Assignees + Task Information + Tasks Done + Tasks Not Executable + Tasks Pending + Tasks Removed + Time of Sampling + Total Cases + Total Contacts + Total Events + Total Samples + Total Tasks + Unconfirmed + Username + Date of Visit + Visit Information + Symptom Information + Time of Visit + Year + Latest Submission: %1$s + LBDS Server Debug URL + Immunization details + Vaccinations + Vaccination Information + New Immunization + Overwrite immunization management status + Search case + New cases + Lab confirmations + Deaths + C + L + D + Existing start date + Existing end date + Are you sure you want to do this? + Are you sure you want to delete this record? + Are you in this place right now? + Are you sure you want to extend the quarantine? + Are you sure you want to reduce the quarantine? + Would you also want the follow-up period to be extended accordingly? + Epi Week + First Name + Last Name + Password + Period End + Period Start + Your Message + SORMAS Logo + Username + Year + Case + Contact + Event + Sample + Task + An error occurred while trying to transfer the case. + An error occurred while trying to refer the case. + Changes dropped because you have no longer access to this entity. + An internal error occurred. Please contact an administrator. + A list entry you modified was deleted: + Could not connect to SORMAS server. Try again later. + Synchronization failed. Please try again later. + Could not communicate with SORMAS server. Try again later. + the pathogen test has no lab user + General comment + Additional Medical Information + Addresses + Animal Contacts + App download failed + Downloading + App update required + Burial + Burials Visited + Campaign Data Listing + Case disease has changed + Edit Case + New Case + Read Case + Case Summary + Infrastructure data has changed + Case Listing + Classification for + Clinical Assessment + New Clinical Assessment + Complications + Confirm PIN + Confirmation + Edit Contact + New Contact + Read Contact + Contact Summary + Contact Visit + Contact Listing + Create New PIN + Create PIN + Disease Detection + Disease Prevention + Enter PIN + Environmental Exposure + Epidemiological Info + Error! + Oops, something went wrong. + Edit Event + New Event + Read Event + Event Summary + Event Listing + Existing Persons + Existing Cases + Existing Immunizations + Existing Events + Gathering + Turn On GPS + Allow GPS Access + Pre-Existing Conditions + Help + Informant Reports + Ready to install + App installation failed + Location + Missing Weekly Report + Most Recent Additional Tests + Most Recent Hospitalization + Most Recent Pathogen Test + New SORMAS version + Outbreak Response + Person Involved + New Person Involved + Person contact details + Pick or Create Person + Pick or Create a Case + Pick or Create an Immunization + Pick or Create a Event + Prescription + Edit Prescription + New Prescription + Previous Hospitalization + Previous Hospitalizations + Refer Case from Point of Entry + Reset PIN + Response Management & Analysis System + Edit Sample + New Sample + Read Sample + Sample Summary + Sample Listing + Edit Immunization + New Immunization + Read Immunization + Immunization Listing + Edit Pathogen Test + New Pathogen Test + Read Pathogen Test + Pathogen Test Summary + Pathogen Test Listing + Sign In + Social Events + Source Case + Source of Information + Surveillance Outbreak + Signs & Symptoms + Synchronization Conflicts + Synchronization + Task + Check sormas task + Read Task + Task Summary + Task Listing + Transfer Case + Travel + Travels + Treatment + Edit Treatment + New Treatment + Unsynchronized Changes + Report a problem + Change Laboratory Result + Change case disease + Extend quarantine + Reduce quarantine + Extend follow-up period + First contact with Contact Tracing + Exposure + Activity as Case + Edit Campaign Data + New Campaign Data + Read Campaign Data + Campaign Data Summary + Select Campaign Form + Place of stay + Vaccination + Edit Vaccination + New Vaccination + Search specific case + Add a new entry by pressing the \"+\" symbol in the top right. + Clear + Please choose a four-digit PIN which you will use to authenticate yourself whenever you open the SORMAS app. + Please enter the PIN again. + No summary to display for the %1$s section. + Please enter your authentication PIN. + Enter your current PIN. + Please enter a location + First Name + Last Name + Your Password + Username + Please choose a new four-digit PIN to authenticate when opening the SORMAS app in the future. + Please enter the new PIN again. + No coordinates picked + No entries + There were no records found. + There were no records found. To add a new record, press the \"+\" symbol at the top right of the toolbar. + There are no synchronization conflicts to display. + Your Message + No report submitted + Pick a Date + Pick a Time + Select Day + Select Option + Select Month + Select Epi Week + Select Year + e.g. https://sormas.helmholtz-hzi.de/sormas-rest/ + You need to confirm the report for last week. + No data available for this epi week. + Case numbers not submitted yet + Contact ID or contact person name + e.g. https://localhost:6070/sormas-rest/ + ERROR + * + * + WARN + Are you sure you want to submit these case numbers for the selected epi week? + Downloading new SORMAS version... Depending on your internet connection, this may take a while. + If you could not find a person that matches the personal details you have entered, click the \"Create\" button. + If you could not find the Event in the list above, click the \"Create\" button. + Please indicate if any of the following is relevant for the patient during the incubation period or illness. + Initial synchronizing with SORMAS server.\nPulling infrastructure data will take a few minutes. + LBDS Sync: Key Exchange started + LBDS Sync: Key Exchange successful + LBDS Sync. No case to transfer + LBDS Sync. No person to transfer + No additional tests performed on this sample yet + Sample has not been tested yet + Please look through this list of persons. If you feel certain that the personal details you have entered belong to one of these persons, select that person by tapping on them and then click the \"Select\" button below. + To reset your PIN you will need your SORMAS user password. + Re-sync will probably take several minutes. + Please select a person or click \'Create\' to create a new one. + Sign into SORMAS to continue the journey of saving lives. + SORMAS already contains at least one person that seems to be very similar to the personal details you have entered. + Please select an answer for ALL symptoms indicating if they occurred during this illness between symptom onset and case detection: + Synchronizing with SORMAS server... + Please briefly describe the problem you have experienced. Don\'t enter any personal or otherwise sensitive data! + There is at least one existing case in the database that seems very similar to the one you are about to create. Please do one of the following:\n\n\u2022 Tap on a case that you are sure is the same case that you were about to create\n\u2022 Scroll to the bottom of this window and check the check box if you are sure that your case is a new case\n\nClick on the button in the bottom right to confirm your choice. + The list below contains all existing events having the same disease as the current case from your Region. Please check whether the event this case belongs to is already on this list or create a new one if it is not. + This case is a new case and not a duplicate of one of the cases above + This event is a new event and not a duplicate of one of the events above + Please select a campaign form for which you want to enter data! + Override existing immunization> + Cases + Contacts + Dashboard + Events + Reports + Samples + Immunizations + Settings + Tasks + mSERS + Already saving.. + You have changed the infrastructure data of this case. Do you want to transfer the case to the new health facility (the hospitalization data will be updated) or do you only want to edit the data to correct a mistake? + The download of the new SORMAS version failed. Please make sure you have the best internet connection possible and try again or inform a supervisor if you keep getting this error despite a good internet connection. + Please enter a password. + Please enter a username. + SORMAS requires device encryption to be activated on your device to ensure data security.\n\nPlease note that you cannot use the application as long as device encryption is disabled. + Please enter a first and last name for the new person. + %1$s refreshed. Unsaved changes discarded. + SORMAS needs access to your GPS location for all of its features to work as intended. Please click on \"Turn On GPS\" to enable the required functionality on your device. + SORMAS needs access to your GPS location for all of its features to work as intended. Please click on \"Allow GPS Access\" to allow SORMAS to access the required functionality on your device. + No GPS coordinates could be found. + Could not authenticate. Please check your username and password. + You do not have the needed permissions. Please contact the support. + Could not find a SORMAS server at \'%s\' + No SORMAS server defined in settings. + SORMAS server is temporarily not available. + A new SORMAS version is ready to install. Please click on \'Install\' to continue. You will need to restart the app after the update has been completed. + There was an error installing the new SORMAS version. Maybe the downloaded file was incomplete because of an interrupted download. Please click on \'Redownload\' to try again or inform a supervisor if this error occurs again. + There was an error installing the new SORMAS version. Your supervisor will automatically be notified about this issue. + You are not connected to the internet. + No matching persons found. + There are no more entries to display. + PIN has been successfully changed. + PIN correct. Starting SORMAS ... + PIN must not be made of consecutive numbers. + PIN must not have more than 2 equal numbers. + The PINs you\'ve entered do not match. Please try again. + PIN has to be four digits long. + You\'ve entered an incorrect PIN. + Unable to send report at this time. + Problem report successfully sent. + %1$s could not be saved because of an internal error. + You do not have permission to edit the record from this jurisdiction. + %1$s saved successfully. + Application settings has been changed. + Welcome! Please start by entering the URL of your SORMAS server. Afterwards you can log-in with your user name and password. + Synchronization conflicts detected. Please check the Sync Log to review them. + Some entries could not be synchronized. Please try again later. + Synchronization successful. + An assignee reply is required when setting the task status to not executable. + There are unsynchronized changes on your device.\nIf you proceed, they will be lost and you will not be able to restore them. + A new version of the SORMAS app is available. It is strongly recommended to download it by clicking the \'Download\' button below. + Could not synchronize because the app version is newer than the server version. + Thank you for submitting your weekly report. + Thank you for submitting your collected case numbers. + The result of this pathogen test differs from the current final laboratory result of the sample. Do you want to update the final laboratory result? + Really change case disease? + Yes, change disease + The language could not be changed due to an internal error. + The new event to be linked to case has a different disease than case disease + The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set + New or Updated Tasks + Receive a notification when a new task is assigned to you or a task assigned to you has been edited + Important Case Changes + Receive a notification when important details of your cases have changed + Server: + Yours: + rowItemSelectOrCreatePerson + rowItemSelectOrCreateEvent + rowItemPickOrCreatePerson + rowItemImmunizationPickOrCreatePerson + within almost two years + tomorrow + within about an hour + within one minute + within about a month + next week + within about a year + within over a year + within %1$s days + within %1$s hours + within %1$s minutes + within %1$s months + within %1$s weeks + within %1$s years + just now + almost two years ago + yesterday + about an hour ago + a min ago + about a month ago + last week + about a year ago + over a year ago + %1$s days ago + %1$s hours ago + %1$s mins ago + %1$s months ago + %1$s weeks ago + %1$s years ago + To learn more about the error on a specific field and how to solve it, click on the ERROR indicator next to its caption. + Please enter a valid value for + A value is required for this field. Please make sure to type in or select a value before continuing. + Please add an entry to the list if there is any data available to you. + This case should be classified as soon as the required information is available. + Case classification does not correspond to lab results and symptoms of the case. + The EPID number does not match the required pattern. You may still save the case and enter the correct number later. + An EPID number has to be provided. You may still save the case and enter the correct number later. + Temperature is in fever range. Fever should be set to \'Yes\'. + The visit cannot be more than 30 days after the end of the follow-up duration. + The visit cannot be more than 30 days before the last contact date. + The visit cannot be more than 30 days before the contact report date. + Unknown + Age N/A + Blood Pressure N/A + Case ID N/A + Comment N/A + Proximity N/A + Contact ID N/A + Date N/A + Description N/A + Disease N/A + Event N/A + Executing Clinician N/A + Health Facility N/A + Frequency N/A + Sex N/A + Heart Rate N/A + Specimen condition not adequate + Lab N/A + Location N/A + Missing report + No Resulting Case + No Username + N/A + Person N/A + Point of Entry N/A + Prescribing Clinician N/A + Date Prescription Issued N/A + Prescription Period N/A + Report Date N/A + Role Unassigned + Sampling Date N/A + Material N/A + Test Result N/A + Status N/A + Task Date N/A + Priority N/A + Type N/A + Temperature N/A + Treatment Date N/A + Type N/A + ID N/A + Visit Date N/A + Remarks N/A + Visit Time N/A + Attending Clinician N/A + Investigation Status N/A + Could not find sample + No camera permission + Access to the camera is needed for detection + Scan field sample id + Facility category + Facility type + Vaccination Date N/A + Vaccine N/A + Manufacturer N/A + diff --git a/sormas-app/app/src/main/res/values-ar-rSA/strings_format.xml b/sormas-app/app/src/main/res/values-ar-rSA/strings_format.xml new file mode 100644 index 00000000000..917b686687e --- /dev/null +++ b/sormas-app/app/src/main/res/values-ar-rSA/strings_format.xml @@ -0,0 +1,37 @@ + + + + %1$s %2$s (%3$s) + %1$s: %2$s %3$s (%4$s) + %1$s - %2$s + due %1$s + LBDS Sync Response. Cases transferred: %1$d , ignored: %2$d + LBDS Sync Response. Persons transferred: %1$d , ignored: %2$d + LBDS Sync. Sending cases: %1$d + LBDS Sync. Sending persons: %1$d + There are unsynchronized changes on your device.\nIf you proceed, they will be lost and you will not be able to restore them. Type the word %1$s into the text field below to continue. + %1$s + %1$d visits (%2$d missed) + %1$s %2$s + Report submitted %1$s + %1$s: %2$s + %1$s %2$s + %1$s (%2$s) + %1$s - %2$s + diff --git a/sormas-app/app/src/main/res/values-cs-rCZ/strings.xml b/sormas-app/app/src/main/res/values-cs-rCZ/strings.xml index 92bc744488d..8283451a312 100644 --- a/sormas-app/app/src/main/res/values-cs-rCZ/strings.xml +++ b/sormas-app/app/src/main/res/values-cs-rCZ/strings.xml @@ -542,6 +542,7 @@ Jazyk nemohl být změněn kvůli interní chybě. Nová událost, která má být spojena s případem, má jinou chorobu, než je onemocnění případu Událost již byla s tímto případem propojena + Není možné vytvářet případy od účastníka události, pokud nebyla zadána nemoc události Nové nebo aktualizované úkoly Dostávat upozornění, když je vám přiřazena nová úloha nebo pokud vám byl úkol přiřazen Důležité změny případu diff --git a/sormas-app/app/src/main/res/values-de-rCH/strings.xml b/sormas-app/app/src/main/res/values-de-rCH/strings.xml index ea3192552fc..ddf5d2f143c 100644 --- a/sormas-app/app/src/main/res/values-de-rCH/strings.xml +++ b/sormas-app/app/src/main/res/values-de-rCH/strings.xml @@ -542,6 +542,7 @@ Die Sprache konnte aufgrund eines internen Fehlers nicht geändert werden. Das neue Ereignis, das mit dem Fall in Verbindung gebracht werden soll, hat eine andere Krankheit als der Fall selbst Das Ereignis wurde bereits mit diesem Fall verknüpft + Es ist nicht möglich, Fälle über einen Ereignisteilnehmer zu erstellen, wenn die Krankheit zum Ereignis nicht festgelegt wurde Neue oder aktualisierte Aufgaben Erhalten Sie eine Benachrichtigung, wenn Ihnen eine neue Aufgabe zugewiesen wurde oder eine Ihnen zugewiesene Aufgabe geändert wurde Wichtige Falländerungen diff --git a/sormas-app/app/src/main/res/values-de-rDE/strings.xml b/sormas-app/app/src/main/res/values-de-rDE/strings.xml index 5e5d716a16b..bbca43b2528 100644 --- a/sormas-app/app/src/main/res/values-de-rDE/strings.xml +++ b/sormas-app/app/src/main/res/values-de-rDE/strings.xml @@ -542,6 +542,7 @@ Die Sprache konnte aufgrund eines internen Fehlers nicht geändert werden. Das neue Ereignis, das mit dem Fall verknüpft werden soll, hat eine andere Krankheit als der Fall Das Ereignis wurde bereits mit diesem Fall verknüpft + Es ist nicht möglich, Fälle über einen Ereignisteilnehmer zu erstellen, wenn die Krankheit zum Ereignis nicht festgelegt wurde Neue oder aktualisierte Aufgaben Erhalten Sie eine Benachrichtigung, wenn Ihnen eine neue Aufgabe zugewiesen wurde oder eine Ihnen zugewiesene Aufgabe geändert wurde Wichtige Falländerungen diff --git a/sormas-app/app/src/main/res/values-en-rAF/strings.xml b/sormas-app/app/src/main/res/values-en-rAF/strings.xml index c15905b68cf..c886a79d496 100644 --- a/sormas-app/app/src/main/res/values-en-rAF/strings.xml +++ b/sormas-app/app/src/main/res/values-en-rAF/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-en-rGH/strings.xml b/sormas-app/app/src/main/res/values-en-rGH/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-en-rGH/strings.xml +++ b/sormas-app/app/src/main/res/values-en-rGH/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-en-rNG/strings.xml b/sormas-app/app/src/main/res/values-en-rNG/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-en-rNG/strings.xml +++ b/sormas-app/app/src/main/res/values-en-rNG/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-es-rCU/strings.xml b/sormas-app/app/src/main/res/values-es-rCU/strings.xml index 72c3cb73cde..b1b8365dd6e 100644 --- a/sormas-app/app/src/main/res/values-es-rCU/strings.xml +++ b/sormas-app/app/src/main/res/values-es-rCU/strings.xml @@ -542,6 +542,7 @@ No se pudo cambiar el idioma debido a un error interno. El nuevo evento que será vinculado al caso tiene una enfermedad diferente a la del caso El evento ya fue vinculado a este caso + No es posible crear casos a partir de un participante de evento si la enfermedad del evento no está especificada Tareas nuevas o actualizadas Reciba una notificación cuando se le asigne una nueva tarea o se edite una de sus tareas asignadas Cambios importantes del caso diff --git a/sormas-app/app/src/main/res/values-es-rEC/strings.xml b/sormas-app/app/src/main/res/values-es-rEC/strings.xml index 537cac41dfe..f78d5e63259 100644 --- a/sormas-app/app/src/main/res/values-es-rEC/strings.xml +++ b/sormas-app/app/src/main/res/values-es-rEC/strings.xml @@ -542,6 +542,7 @@ El idioma no pudo cambiarse debido a un error interno. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set Tareas nuevas o actualizadas Recibe una notificación cuando se te ha asignado una nueva tarea o una tarea asignada a ti ha sido editada Cambios de Caso Importantes diff --git a/sormas-app/app/src/main/res/values-es-rES/strings.xml b/sormas-app/app/src/main/res/values-es-rES/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-es-rES/strings.xml +++ b/sormas-app/app/src/main/res/values-es-rES/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-fa-rAF/strings.xml b/sormas-app/app/src/main/res/values-fa-rAF/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-fa-rAF/strings.xml +++ b/sormas-app/app/src/main/res/values-fa-rAF/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-fi-rFI/strings.xml b/sormas-app/app/src/main/res/values-fi-rFI/strings.xml index 3542aff4cda..c6b522cffbd 100644 --- a/sormas-app/app/src/main/res/values-fi-rFI/strings.xml +++ b/sormas-app/app/src/main/res/values-fi-rFI/strings.xml @@ -542,6 +542,7 @@ Kieltä ei voitu vaihtaa sisäisen virheen takia. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set Uusi tai päivitetty tehtävä Saa ilmoitus kun sinulle on annettu uusi tehtävä tai sinulle annettua tehtävää on muokattu Tärkeät potilasmuutokset diff --git a/sormas-app/app/src/main/res/values-fil-rPH/strings.xml b/sormas-app/app/src/main/res/values-fil-rPH/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-fil-rPH/strings.xml +++ b/sormas-app/app/src/main/res/values-fil-rPH/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-fj-rFJ/strings.xml b/sormas-app/app/src/main/res/values-fj-rFJ/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-fj-rFJ/strings.xml +++ b/sormas-app/app/src/main/res/values-fj-rFJ/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-fr-rCH/strings.xml b/sormas-app/app/src/main/res/values-fr-rCH/strings.xml index 929461624c2..fa2b371ac94 100644 --- a/sormas-app/app/src/main/res/values-fr-rCH/strings.xml +++ b/sormas-app/app/src/main/res/values-fr-rCH/strings.xml @@ -542,6 +542,7 @@ La langue n\'a pas pu être modifiée en raison d\'une erreur interne. Le nouvel événement à associer au cas a une maladie différente de la maladie du cas L\'événement a déjà été lié à ce cas + It is not possible to create cases from an event participant if the disease of the event has not been set Tâches nouvelles ou mises à jour Recevoir une notification lorsqu\'une nouvelle tâche vous est attribuée ou lorsqu\'une tâche qui vous a été attribuée a été modifiée Changements importants de cas diff --git a/sormas-app/app/src/main/res/values-fr-rFR/strings.xml b/sormas-app/app/src/main/res/values-fr-rFR/strings.xml index bd23319363b..c0d6be775af 100644 --- a/sormas-app/app/src/main/res/values-fr-rFR/strings.xml +++ b/sormas-app/app/src/main/res/values-fr-rFR/strings.xml @@ -138,7 +138,7 @@ Tâches de cas Événements de cas Immunité du cas - Case Vaccinations + Vaccinations du cas Traitements Créer un nouveau cas Données modifiées perdues lors de la re-synchronisation. @@ -155,7 +155,7 @@ Informations épidémiologiques Informations de suivi Immunité du contact - Contact Vaccinations + Vaccinations de contact Converti en cas Date de naissance (année / mois / jour) Date de prélèvement de l\'échantillon @@ -169,7 +169,7 @@ Informations sur l\'événement Personnes impliquées Immunité du participant à l\'événement - Event participant Vaccinations + Vaccinations du participant à l\'événement Tâches d\'événement Exécuté par Lieu du séjour @@ -542,6 +542,7 @@ La langue n\'a pas pu être modifiée en raison d\'une erreur interne. Le nouvel événement à relier au cas a une maladie différente de la maladie de cas L\'événement a déjà été lié à ce cas + It is not possible to create cases from an event participant if the disease of the event has not been set Tâches nouvelles ou mises à jour Recevoir une notification lorsqu\'une nouvelle tâche vous est attribuée ou lorsqu\'une tâche qui vous a été attribuée a été modifiée Changements importants de cas @@ -646,6 +647,6 @@ Catégorie d\'établissement Type d\'établissement Date de vaccination N/A - Vaccine N/A - Manufacturer N/A + Vaccin N/A + Fabricant N/A diff --git a/sormas-app/app/src/main/res/values-hi-rIN/strings.xml b/sormas-app/app/src/main/res/values-hi-rIN/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-hi-rIN/strings.xml +++ b/sormas-app/app/src/main/res/values-hi-rIN/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-hr-rHR/strings.xml b/sormas-app/app/src/main/res/values-hr-rHR/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-hr-rHR/strings.xml +++ b/sormas-app/app/src/main/res/values-hr-rHR/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-it-rCH/strings.xml b/sormas-app/app/src/main/res/values-it-rCH/strings.xml index b872adc6abb..84184a30040 100644 --- a/sormas-app/app/src/main/res/values-it-rCH/strings.xml +++ b/sormas-app/app/src/main/res/values-it-rCH/strings.xml @@ -542,6 +542,7 @@ La lingua non può essere modificata a causa di un errore interno. Il nuovo evento da collegare al caso presenta una malattia diversa da quella del caso L\'evento è già stato collegato a questo caso + It is not possible to create cases from an event participant if the disease of the event has not been set Attività nuove o aggiornate Ricevi una notifica quando viene assegnata a te una nuova attività o quando è stata modificata una attività a te assegnata Modifiche Importanti Del Caso diff --git a/sormas-app/app/src/main/res/values-it-rIT/strings.xml b/sormas-app/app/src/main/res/values-it-rIT/strings.xml index 0949f3d73e2..fb303adfc37 100644 --- a/sormas-app/app/src/main/res/values-it-rIT/strings.xml +++ b/sormas-app/app/src/main/res/values-it-rIT/strings.xml @@ -542,6 +542,7 @@ La lingua non può essere modificata a causa di un errore interno. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set Attività nuove o aggiornate Ricevi una notifica quando viene assegnata a te una nuova attività o quando è stata modificata una attività a te assegnata Modifiche Importanti Del Caso diff --git a/sormas-app/app/src/main/res/values-ja-rJP/strings.xml b/sormas-app/app/src/main/res/values-ja-rJP/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-ja-rJP/strings.xml +++ b/sormas-app/app/src/main/res/values-ja-rJP/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-nl-rNL/strings.xml b/sormas-app/app/src/main/res/values-nl-rNL/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-nl-rNL/strings.xml +++ b/sormas-app/app/src/main/res/values-nl-rNL/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-no-rNO/strings.xml b/sormas-app/app/src/main/res/values-no-rNO/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-no-rNO/strings.xml +++ b/sormas-app/app/src/main/res/values-no-rNO/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-pl-rPL/strings.xml b/sormas-app/app/src/main/res/values-pl-rPL/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-pl-rPL/strings.xml +++ b/sormas-app/app/src/main/res/values-pl-rPL/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-ps-rAF/strings.xml b/sormas-app/app/src/main/res/values-ps-rAF/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-ps-rAF/strings.xml +++ b/sormas-app/app/src/main/res/values-ps-rAF/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-pt-rPT/strings.xml b/sormas-app/app/src/main/res/values-pt-rPT/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-pt-rPT/strings.xml +++ b/sormas-app/app/src/main/res/values-pt-rPT/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-ro-rRO/strings.xml b/sormas-app/app/src/main/res/values-ro-rRO/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-ro-rRO/strings.xml +++ b/sormas-app/app/src/main/res/values-ro-rRO/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-ru-rRU/strings.xml b/sormas-app/app/src/main/res/values-ru-rRU/strings.xml index d781a3e2818..933a8032c92 100644 --- a/sormas-app/app/src/main/res/values-ru-rRU/strings.xml +++ b/sormas-app/app/src/main/res/values-ru-rRU/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-sv-rSE/strings.xml b/sormas-app/app/src/main/res/values-sv-rSE/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-sv-rSE/strings.xml +++ b/sormas-app/app/src/main/res/values-sv-rSE/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-sw-rKE/strings.xml b/sormas-app/app/src/main/res/values-sw-rKE/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-sw-rKE/strings.xml +++ b/sormas-app/app/src/main/res/values-sw-rKE/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-tr-rTR/strings.xml b/sormas-app/app/src/main/res/values-tr-rTR/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-tr-rTR/strings.xml +++ b/sormas-app/app/src/main/res/values-tr-rTR/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-uk-rUA/strings.xml b/sormas-app/app/src/main/res/values-uk-rUA/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-uk-rUA/strings.xml +++ b/sormas-app/app/src/main/res/values-uk-rUA/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values-ur-rPK/strings.xml b/sormas-app/app/src/main/res/values-ur-rPK/strings.xml index 1573d028c4f..0ee600b0f50 100644 --- a/sormas-app/app/src/main/res/values-ur-rPK/strings.xml +++ b/sormas-app/app/src/main/res/values-ur-rPK/strings.xml @@ -542,6 +542,7 @@ اندرونی خرابی کی وجہ سے زبان کو تبدیل نہیں کیا جا سکا۔ نئی تقریب جس کوکیس سےمنسلک کرناہے، کیس کی بیماری سے مختلف بیماری ہے اس تقریب کو پہلے ہی اس کیس سے جوڑا جا چکا ہے۔ + اگر تقریب کی بیماری کا تعین نہ کیا گیا ہو تو تقریب کے شریک سے کیس بنانا ممکن نہیں ہے نئے یا اپ ڈیٹ کردہ کام ایک اطلاع موصول کریں، جب آپ کو کوئی نیا کام دیا جائے یا آپ کو دیا ہوےکام میں ترمیم کی گئی ہو کیس میں اہم تبدیلیاں diff --git a/sormas-app/app/src/main/res/values-zh-rCN/strings.xml b/sormas-app/app/src/main/res/values-zh-rCN/strings.xml index e2d342cb389..61f582cad54 100644 --- a/sormas-app/app/src/main/res/values-zh-rCN/strings.xml +++ b/sormas-app/app/src/main/res/values-zh-rCN/strings.xml @@ -542,6 +542,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited Important Case Changes diff --git a/sormas-app/app/src/main/res/values/strings.xml b/sormas-app/app/src/main/res/values/strings.xml index 532a8758f19..2765c1a9c1a 100644 --- a/sormas-app/app/src/main/res/values/strings.xml +++ b/sormas-app/app/src/main/res/values/strings.xml @@ -557,6 +557,7 @@ The language could not be changed due to an internal error. The new event to be linked to case has a different disease than case disease The event has already been linked to this case + It is not possible to create cases from an event participant if the disease of the event has not been set New or Updated Tasks Receive a notification when a new task is assigned to you or a task assigned to you has been edited diff --git a/sormas-app/pom.xml b/sormas-app/pom.xml index 9b0f937bf34..6fae3650263 100644 --- a/sormas-app/pom.xml +++ b/sormas-app/pom.xml @@ -3,7 +3,7 @@ sormas-base de.symeda.sormas - 1.70.4 + 1.71.0 ../sormas-base 4.0.0 diff --git a/sormas-backend/pom.xml b/sormas-backend/pom.xml index e3e206bec74..01d0954089c 100644 --- a/sormas-backend/pom.xml +++ b/sormas-backend/pom.xml @@ -3,7 +3,7 @@ sormas-base de.symeda.sormas - 1.70.4 + 1.71.0 ../sormas-base 4.0.0 diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionFacadeEjb.java index e121d6d9f58..47341d06f20 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionFacadeEjb.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -48,6 +49,7 @@ import de.symeda.sormas.backend.util.ModelConstants; @Stateless(name = "ActionFacade") +@RolesAllowed(UserRight._EVENT_VIEW) public class ActionFacadeEjb implements ActionFacade { @PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME) @@ -124,6 +126,7 @@ public ActionDto toDto(Action source) { } @Override + @RolesAllowed({UserRight._ACTION_CREATE, UserRight._ACTION_EDIT}) public ActionDto saveAction(@Valid ActionDto dto) { Action ado = fromDto(dto, true); @@ -137,12 +140,8 @@ public ActionDto getByUuid(String uuid) { } @Override + @RolesAllowed(UserRight._ACTION_DELETE) public void deleteAction(ActionDto actionDto) { - - if (!userService.hasRight(UserRight.ACTION_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete action."); - } - Action action = actionService.getByUuid(actionDto.getUuid()); actionService.deletePermanent(action); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionJoins.java index b9969e860a5..eeb8bf04477 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionJoins.java @@ -21,17 +21,20 @@ import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.event.Event; +import de.symeda.sormas.backend.event.EventJoins; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class ActionJoins extends AbstractDomainObjectJoins { +public class ActionJoins extends QueryJoins { private Join event; private Join creator; private Join lastModifiedBy; - public ActionJoins(From root) { + private EventJoins eventJoins; + + public ActionJoins(From root) { super(root); } @@ -43,6 +46,14 @@ private void setEvent(Join event) { this.event = event; } + public EventJoins getEventJoins() { + return getOrCreate(eventJoins, () -> new EventJoins(getEvent(JoinType.INNER)), this::setEventJoins); + } + + private void setEventJoins(EventJoins eventJoins) { + this.eventJoins = eventJoins; + } + public Join getCreator() { return getOrCreate(creator, Action.CREATOR_USER, JoinType.LEFT, this::setCreator); } @@ -52,7 +63,7 @@ private void setCreator(Join creator) { } public Join getLastModifiedBy() { - return getOrCreate(creator, Action.LAST_MODIFIED_BY, JoinType.LEFT, this::setLastModifiedBy); + return getOrCreate(lastModifiedBy, Action.LAST_MODIFIED_BY, JoinType.LEFT, this::setLastModifiedBy); } private void setLastModifiedBy(Join lastModifiedBy) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionQueryContext.java index 5d99f7e18a7..615b6e08784 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionQueryContext.java @@ -7,8 +7,9 @@ import de.symeda.sormas.backend.common.QueryContext; -public class ActionQueryContext extends QueryContext { - public ActionQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { +public class ActionQueryContext extends QueryContext { + + public ActionQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { super(cb, query, root, new ActionJoins(root)); } 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 9c3d65e2a27..64d0790a8b4 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 @@ -231,10 +231,9 @@ public Predicate buildEventCriteriaFilter(EventCriteria criteria, ActionQueryCon CriteriaBuilder cb = actionQueryContext.getCriteriaBuilder(); ActionJoins joins = (ActionJoins) actionQueryContext.getJoins(); - From action = joins.getRoot(); - From event = joins.getEvent(JoinType.INNER); + From action = joins.getRoot(); - Predicate filter = eventService.buildCriteriaFilter(criteria, new EventQueryContext(cb, actionQueryContext.getQuery(), event)); + Predicate filter = eventService.buildCriteriaFilter(criteria, new EventQueryContext(cb, actionQueryContext.getQuery(), joins.getEventJoins())); if (criteria.getActionChangeDateFrom() != null && criteria.getActionChangeDateTo() != null) { filter = CriteriaBuilderHelper diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLogger.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerEjb.java similarity index 56% rename from sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLogger.java rename to sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerEjb.java index 42015cdc139..8d9743e273e 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLogger.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerEjb.java @@ -33,8 +33,10 @@ import java.util.TimeZone; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.LocalBean; +import javax.ejb.SessionContext; import javax.ejb.Singleton; import org.hl7.fhir.r4.model.AuditEvent; @@ -51,20 +53,37 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.parser.IParser; +import de.symeda.sormas.api.audit.AuditLoggerFacade; import de.symeda.sormas.backend.common.ConfigFacadeEjb; +import de.symeda.sormas.backend.user.CurrentUserService; +import de.symeda.sormas.backend.user.User; -@Singleton -@LocalBean -public class AuditLogger { +@Singleton(name = "AuditLoggerFacade") +public class AuditLoggerEjb implements AuditLoggerFacade { - private static final Logger logger = LoggerFactory.getLogger(AuditLogger.class); + private static final Logger logger = LoggerFactory.getLogger(AuditLoggerEjb.class); private String auditSourceSite; - private Map actionMap; + private Map actionBackendMap; + private static final Map actionRestMap = new HashMap() { + + { + put("PUT", AuditEvent.AuditEventAction.C); + put("GET", AuditEvent.AuditEventAction.R); + put("POST", AuditEvent.AuditEventAction.U); + put("DELETE", AuditEvent.AuditEventAction.D); + } + }; @EJB private ConfigFacadeEjb.ConfigFacadeEjbLocal configFacade; @EJB private LogSink auditLogger; + @EJB + private CurrentUserService currentUserService; + + // todo we need the session context in addition to the UserService as SYSTEM/ANONYMOUS do return null in the currentUserService + @Resource + private SessionContext sessionContext; private static boolean loggingDisabled = false; @@ -87,7 +106,7 @@ private void setup() { loggingDisabled = true; } - actionMap = new HashMap<>(); + actionBackendMap = new HashMap<>(); } private void accept(AuditEvent event) { @@ -147,13 +166,10 @@ private void logApplicationLifecycle(Coding subtype, String outcomeDesc) { accept(applicationStartAudit); } - public void logBackendCall(String agentName, String agentUuid, Method calledMethod, List params, String returnValue, Date start) { + public void logBackendCall(Method calledMethod, List params, String returnValue, Date start) { AuditEvent backendCall = new AuditEvent(); - // backendCall.setType(); - // backendCall.setSubType(); - - backendCall.setAction(inferAction(calledMethod.getName())); + backendCall.setAction(inferBackendAction(calledMethod.getName())); Period period = new Period(); period.setStart(start); Date end = Calendar.getInstance(TimeZone.getDefault()).getTime(); @@ -167,7 +183,9 @@ public void logBackendCall(String agentName, String agentUuid, Method calledMeth AuditEvent.AuditEventAgentComponent agent = new AuditEvent.AuditEventAgentComponent(); CodeableConcept codeableConcept = new CodeableConcept(); - if (agentName.equals("SYSTEM") || agentName.equals("ANONYMOUS")) { + AgentDetails agentDetails = new AgentDetails(currentUserService, sessionContext); + + if (agentDetails.name.equals("SYSTEM") || agentDetails.name.equals("ANONYMOUS")) { codeableConcept.addCoding(new Coding("https://www.hl7.org/fhir/valueset-participation-role-type.html", "110150", "Application")); agent.setType(codeableConcept); } else { @@ -175,11 +193,11 @@ public void logBackendCall(String agentName, String agentUuid, Method calledMeth agent.setType(codeableConcept); } - agent.setName(agentName); + agent.setName(agentDetails.name); Reference who = new Reference(); Identifier identifier = new Identifier(); - if (!agentName.equals("SYSTEM") && !agentName.equals("ANONYMOUS")) { - identifier.setValue(agentUuid); + if (!agentDetails.name.equals("SYSTEM") && !agentDetails.name.equals("ANONYMOUS")) { + identifier.setValue(agentDetails.uuid); } who.setIdentifier(identifier); @@ -204,19 +222,14 @@ public void logBackendCall(String agentName, String agentUuid, Method calledMeth }); entity.setDetail(details); - - // System Object - //AuditEntityType entityType = AuditEntityType._2; - //entity.setType(new Coding(entityType.getSystem(), entityType.toCode(), entityType.getDisplay())); - backendCall.addEntity(entity); accept(backendCall); } - private AuditEvent.AuditEventAction inferAction(String calledMethod) { + private AuditEvent.AuditEventAction inferBackendAction(String calledMethod) { - AuditEvent.AuditEventAction cached = actionMap.get(calledMethod); + AuditEvent.AuditEventAction cached = actionBackendMap.get(calledMethod); if (cached != null) { return cached; } @@ -235,7 +248,7 @@ private AuditEvent.AuditEventAction inferAction(String calledMethod) { } else { inferred = AuditEvent.AuditEventAction.E; } - actionMap.put(calledMethod, inferred); + actionBackendMap.put(calledMethod, inferred); return inferred; } @@ -243,4 +256,133 @@ private boolean methodsStartsWith(String methodName, Set prefixes) { return prefixes.stream().anyMatch(methodName::startsWith); } + @Override + public void logRestCall(String path, String method) { + AuditEvent restCall = new AuditEvent(); + + restCall.setType(new Coding("https://hl7.org/fhir/R4/valueset-audit-event-type.html", "rest", "RESTful Operation")); + restCall.setAction(inferRestAction(method)); + + restCall.setRecorded(Calendar.getInstance(TimeZone.getDefault()).getTime()); + + // agent + AuditEvent.AuditEventAgentComponent agent = new AuditEvent.AuditEventAgentComponent(); + + AgentDetails agentDetails = new AgentDetails(currentUserService, sessionContext); + + agent.setName(agentDetails.name); + Reference who = new Reference(); + Identifier identifier = new Identifier(); + identifier.setValue(agentDetails.uuid); + who.setIdentifier(identifier); + agent.setWho(who); + restCall.addAgent(agent); + + // source + AuditEvent.AuditEventSourceComponent source = new AuditEvent.AuditEventSourceComponent(); + source.setSite(String.format("%s - SORMAS REST API", auditSourceSite)); + + // Web Server + AuditSourceType auditSourceType = AuditSourceType._3; + source.addType(new Coding(auditSourceType.getSystem(), auditSourceType.toCode(), auditSourceType.getDisplay())); + restCall.setSource(source); + + // entity + AuditEvent.AuditEventEntityComponent entity = new AuditEvent.AuditEventEntityComponent(); + entity.setWhat(new Reference(path)); + restCall.addEntity(entity); + + accept(restCall); + } + + private AuditEvent.AuditEventAction inferRestAction(String actionMethod) { + AuditEvent.AuditEventAction action = actionRestMap.get(actionMethod); + if (action != null) { + return action; + } else { + return AuditEvent.AuditEventAction.E; + } + } + + @Override + public void logFailedRestLogin(String caller, String method, String pathInfo) { + AuditEvent restLoginFail = new AuditEvent(); + + restLoginFail.setType(new Coding("https://hl7.org/fhir/R4/valueset-audit-event-type.html", "110114", "User Authentication")); + restLoginFail + .setSubtype(Collections.singletonList(new Coding("https://hl7.org/fhir/R4/valueset-audit-event-sub-type.html", "110122", "Login"))); + restLoginFail.setAction(AuditEvent.AuditEventAction.E); + + restLoginFail.setRecorded(Calendar.getInstance(TimeZone.getDefault()).getTime()); + + restLoginFail.setOutcome(AuditEvent.AuditEventOutcome._4); + restLoginFail.setOutcomeDesc("Authentication failed"); + + AuditEvent.AuditEventAgentComponent agent = new AuditEvent.AuditEventAgentComponent(); + + agent.setName(caller); + + restLoginFail.addAgent(agent); + + AuditEvent.AuditEventSourceComponent source = new AuditEvent.AuditEventSourceComponent(); + source.setSite(String.format("%s - REST MultiAuthenticationMechanism", auditSourceSite)); + + AuditEvent.AuditEventEntityComponent entity = new AuditEvent.AuditEventEntityComponent(); + entity.setWhat(new Reference(String.format("%s %s", method, pathInfo))); + restLoginFail.addEntity(entity); + + accept(restLoginFail); + } + + @Override + public void logFailedUiLogin(String caller, String method, String pathInfo) { + AuditEvent uiLoginFail = new AuditEvent(); + + uiLoginFail.setType(new Coding("https://hl7.org/fhir/R4/valueset-audit-event-type.html", "110114", "User Authentication")); + uiLoginFail + .setSubtype(Collections.singletonList(new Coding("https://hl7.org/fhir/R4/valueset-audit-event-sub-type.html", "110122", "Login"))); + uiLoginFail.setAction(AuditEvent.AuditEventAction.E); + + uiLoginFail.setRecorded(Calendar.getInstance(TimeZone.getDefault()).getTime()); + + uiLoginFail.setOutcome(AuditEvent.AuditEventOutcome._4); + uiLoginFail.setOutcomeDesc("Authentication failed"); + + AuditEvent.AuditEventAgentComponent agent = new AuditEvent.AuditEventAgentComponent(); + agent.setName(caller); + uiLoginFail.addAgent(agent); + + AuditEvent.AuditEventSourceComponent source = new AuditEvent.AuditEventSourceComponent(); + source.setSite(String.format("%s - UI MultiAuthenticationMechanism", auditSourceSite)); + + AuditEvent.AuditEventEntityComponent entity = new AuditEvent.AuditEventEntityComponent(); + entity.setWhat(new Reference(String.format("%s %s", method, pathInfo))); + uiLoginFail.addEntity(entity); + + accept(uiLoginFail); + } + + private class AgentDetails { + + final String uuid; + final String name; + + public AgentDetails(CurrentUserService currentUserService, SessionContext sessionContext) { + User currentUser = currentUserService.getCurrentUser(); + uuid = currentUser == null ? null : currentUser.getUuid(); + String tmpName = currentUser == null ? null : currentUser.getUserName(); + + if (tmpName == null) { + // in case the user is SYSTEM or ANONYMOUS, current user service will not help + tmpName = sessionContext.getCallerPrincipal().getName(); + } + name = tmpName; + } + } + + @LocalBean + @Singleton + public static class AuditLoggerEjbLocal extends AuditLoggerEjb { + + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerInterceptor.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerInterceptor.java index a231677338a..0f631947600 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerInterceptor.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/audit/AuditLoggerInterceptor.java @@ -35,13 +35,7 @@ public class AuditLoggerInterceptor { @EJB - AuditLogger auditLogger; - @EJB - CurrentUserService currentUserService; - - // todo we need the session context in addition to the UserService as SYSTEM/ANONYMOUS do return null in the currentUserService - @Resource - private SessionContext sessionContext; + AuditLoggerEjb.AuditLoggerEjbLocal auditLogger; /** * Cache to track all classes that should be ignored and those who must be audited. False indicates audit, True ignore @@ -58,6 +52,7 @@ public class AuditLoggerInterceptor { CurrentUserService.class, AuditContextProducer.class, AuditLogServiceBean.class, + AuditLoggerEjb.class, I18nFacadeEjb.class))); /** @@ -72,7 +67,8 @@ public class AuditLoggerInterceptor { Arrays.asList( ContinentFacadeEjb.class.getMethod("getByDefaultName", String.class, boolean.class), SubcontinentFacadeEjb.class.getMethod("getByDefaultName", String.class, boolean.class), - UserFacadeEjb.class.getMethod("getCurrentUser")))); + UserFacadeEjb.class.getMethod("getCurrentUser"), + UserFacadeEjb.class.getMethod("getValidLoginRights", String.class, String.class)))); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } @@ -81,7 +77,7 @@ public class AuditLoggerInterceptor { @AroundInvoke public Object logAudit(InvocationContext context) throws Exception { - if (AuditLogger.isLoggingDisabled()) { + if (AuditLoggerEjb.isLoggingDisabled()) { return context.proceed(); } @@ -115,15 +111,12 @@ public Object logAudit(InvocationContext context) throws Exception { Date start = Calendar.getInstance(TimeZone.getDefault()).getTime(); List parameters = getParameters(context); - User currentUser = currentUserService.getCurrentUser(); - String agentUuid = currentUser == null ? null : currentUser.getUuid(); - // do the actual call Object result = context.proceed(); String returnValue = printObject(result); - auditLogger.logBackendCall(sessionContext.getCallerPrincipal().getName(), agentUuid, calledMethod, parameters, returnValue, start); + auditLogger.logBackendCall(calledMethod, parameters, returnValue, start); return result; } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/bagexport/BAGExportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/bagexport/BAGExportFacadeEjb.java index 2ab3f5a0d4d..219a5dcc429 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/bagexport/BAGExportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/bagexport/BAGExportFacadeEjb.java @@ -15,6 +15,7 @@ package de.symeda.sormas.backend.bagexport; +import de.symeda.sormas.api.user.UserRight; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -26,6 +27,7 @@ import java.util.Optional; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; @@ -47,6 +49,7 @@ import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.utils.YesNoUnknown; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; import de.symeda.sormas.backend.common.CriteriaBuilderHelper; import de.symeda.sormas.backend.contact.Contact; import de.symeda.sormas.backend.contact.ContactJoins; @@ -58,9 +61,9 @@ import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.util.ModelConstants; import de.symeda.sormas.backend.util.QueryHelper; -import de.symeda.sormas.utils.CaseJoins; @Stateless(name = "BAGExportFacade") +@RolesAllowed(UserRight._BAG_EXPORT) public class BAGExportFacadeEjb implements BAGExportFacade { private static final String TODO_VALUE = ""; @@ -74,7 +77,7 @@ public List getCaseExportList(Collection selectedRows, CriteriaQuery cq = cb.createQuery(BAGExportCaseDto.class); Root caseRoot = cq.from(Case.class); - CaseJoins caseJoins = new CaseJoins<>(caseRoot); + CaseJoins caseJoins = new CaseJoins(caseRoot); Join person = caseJoins.getPerson(); PersonQueryContext personQueryContext = new PersonQueryContext(cb, cq, person); @@ -238,7 +241,7 @@ public List getContactExportList(Collection selecte ContactJoins contactJoins = new ContactJoins(contactRoot); Join person = contactJoins.getPerson(); - Join homeAddress = contactJoins.getPersonAddress(); + Join homeAddress = contactJoins.getAddress(); Join caze = contactJoins.getCaze(); PersonQueryContext personQueryContext = new PersonQueryContext(cb, cq, person); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjb.java index 4487412a470..ed7bee50f60 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjb.java @@ -10,6 +10,7 @@ import java.util.Set; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -58,6 +59,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "CampaignFacade") +@RolesAllowed(UserRight._CAMPAIGN_VIEW) public class CampaignFacadeEjb extends AbstractCoreFacadeEjb implements CampaignFacade { @@ -164,6 +166,7 @@ public long count(CampaignCriteria campaignCriteria) { } @Override + @RolesAllowed(UserRight._CAMPAIGN_EDIT) public CampaignDto save(@Valid @NotNull CampaignDto dto) { validate(dto); Campaign campaign = fillOrBuildEntity(dto, service.getByUuid(dto.getUuid()), true); @@ -344,6 +347,7 @@ public List getCampaignDashboardElements(String campai } @Override + @RolesAllowed(UserRight._CAMPAIGN_DELETE) public void delete(String campaignUuid) { User user = userService.getCurrentUser(); @@ -415,6 +419,24 @@ public EditPermissionType isCampaignEditAllowed(String caseUuid) { return service.getEditPermissionType(campaign); } + @Override + @RolesAllowed(UserRight._CAMPAIGN_ARCHIVE) + public void archive(String entityUuid, Date endOfProcessingDate) { + super.archive(entityUuid, endOfProcessingDate); + } + + @Override + @RolesAllowed(UserRight._CAMPAIGN_ARCHIVE) + public void archive(List entityUuids) { + super.archive(entityUuids); + } + + @Override + @RolesAllowed(UserRight._CAMPAIGN_ARCHIVE) + public void dearchive(List entityUuids, String dearchiveReason) { + super.dearchive(entityUuids, dearchiveReason); + } + @LocalBean @Stateless public static class CampaignFacadeEjbLocal extends CampaignFacadeEjb { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseCriteriaHelper.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseCriteriaHelper.java index 726c37eab81..8a89c4ed33c 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseCriteriaHelper.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseCriteriaHelper.java @@ -25,31 +25,32 @@ import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; -import de.symeda.sormas.utils.CaseJoins; public class CaseCriteriaHelper { private CaseCriteriaHelper() { } - public static Predicate createRegionFilterWithFallback(CriteriaBuilder cb, CaseJoins joins, RegionReferenceDto region) { + public static Predicate createRegionFilterWithFallback(CriteriaBuilder cb, CaseJoins joins, RegionReferenceDto region) { return CriteriaBuilderHelper.or( cb, cb.and(cb.isNotNull(joins.getRegion()), cb.equal(joins.getRegion().get(Region.UUID), region.getUuid())), - cb.and(cb.isNull(joins.getRegion()), cb.equal(joins.getResponsibleRegion().get(Region.UUID), region.getUuid()))); + cb.and(cb.isNotNull(joins.getResponsibleRegion()), cb.equal(joins.getResponsibleRegion().get(Region.UUID), region.getUuid()))); } - public static Predicate createDistrictFilterWithFallback(CriteriaBuilder cb, CaseJoins joins, DistrictReferenceDto district) { + public static Predicate createDistrictFilterWithFallback(CriteriaBuilder cb, CaseJoins joins, DistrictReferenceDto district) { return CriteriaBuilderHelper.or( cb, cb.and(cb.isNotNull(joins.getDistrict()), cb.equal(joins.getDistrict().get(District.UUID), district.getUuid())), - cb.and(cb.isNull(joins.getDistrict()), cb.equal(joins.getResponsibleDistrict().get(District.UUID), district.getUuid()))); + cb.and(cb.isNotNull(joins.getResponsibleDistrict()), cb.equal(joins.getResponsibleDistrict().get(District.UUID), district.getUuid()))); } - public static Predicate createCommunityFilterWithFallback(CriteriaBuilder cb, CaseJoins joins, CommunityReferenceDto community) { + public static Predicate createCommunityFilterWithFallback(CriteriaBuilder cb, CaseJoins joins, CommunityReferenceDto community) { return CriteriaBuilderHelper.or( cb, cb.and(cb.isNotNull(joins.getCommunity()), cb.equal(joins.getCommunity().get(Community.UUID), community.getUuid())), - cb.and(cb.isNull(joins.getCommunity()), cb.equal(joins.getResponsibleCommunity().get(Community.UUID), community.getUuid()))); + cb.and( + cb.isNotNull(joins.getResponsibleCommunity()), + cb.equal(joins.getResponsibleCommunity().get(Community.UUID), community.getUuid()))); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseFacadeEjb.java index b92a1601f1c..d8a33aa5f4c 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseFacadeEjb.java @@ -45,6 +45,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +import javax.annotation.Nullable; import javax.annotation.Resource; import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; @@ -70,6 +71,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; +import de.symeda.sormas.backend.event.EventParticipantFacadeEjb; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; @@ -197,6 +199,7 @@ import de.symeda.sormas.api.utils.SortProperty; import de.symeda.sormas.api.utils.ValidationRuntimeException; import de.symeda.sormas.api.utils.YesNoUnknown; +import de.symeda.sormas.api.utils.fieldaccess.checkers.UserRightFieldAccessChecker; import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers; import de.symeda.sormas.api.visit.VisitDto; import de.symeda.sormas.api.visit.VisitResultDto; @@ -330,11 +333,11 @@ import de.symeda.sormas.backend.util.QueryHelper; import de.symeda.sormas.backend.vaccination.Vaccination; import de.symeda.sormas.backend.vaccination.VaccinationFacadeEjb; +import de.symeda.sormas.backend.vaccination.VaccinationService; import de.symeda.sormas.backend.visit.Visit; import de.symeda.sormas.backend.visit.VisitFacadeEjb; import de.symeda.sormas.backend.visit.VisitFacadeEjb.VisitFacadeEjbLocal; import de.symeda.sormas.backend.visit.VisitService; -import de.symeda.sormas.utils.CaseJoins; @Stateless(name = "CaseFacade") @RolesAllowed(UserRight._CASE_VIEW) @@ -463,6 +466,10 @@ public class CaseFacadeEjb extends AbstractCoreFacadeEjb getAllActiveCasesAfter( return Collections.emptyList(); } - Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight); + Pseudonymizer pseudonymizer = getPseudonymizerForDtoWithClinician(""); return service.getAllActiveCasesAfter(date, includeExtendedChangeDateFilters, batchSize, lastSynchronizedUuid) .stream() .map(c -> convertToDto(c, pseudonymizer)) @@ -716,7 +723,7 @@ public List getExportList( Root caseRoot = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caseRoot); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); // Events count subquery Subquery eventCountSq = cq.subquery(Long.class); @@ -1018,7 +1025,7 @@ public List getExportList( Map caseUsers = getCaseUsersForExport(resultList, exportConfiguration); - Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight, I18nProperties.getCaption(Captions.inaccessibleValue)); + Pseudonymizer pseudonymizer = getPseudonymizerForDtoWithClinician(I18nProperties.getCaption(Captions.inaccessibleValue)); for (CaseExportDto exportDto : resultList) { final boolean inJurisdiction = exportDto.getInJurisdiction(); @@ -1139,16 +1146,15 @@ public List getExportList( filteredImmunizations.sort(Comparator.comparing(i -> ImmunizationEntityHelper.getDateForComparison(i, false))); Immunization mostRecentImmunization = filteredImmunizations.get(filteredImmunizations.size() - 1); Integer numberOfDoses = mostRecentImmunization.getNumberOfDoses(); - exportDto.setNumberOfDoses(numberOfDoses != null ? String.valueOf(numberOfDoses) : ""); - if (CollectionUtils.isNotEmpty(mostRecentImmunization.getVaccinations())) { - List sortedVaccinations = mostRecentImmunization.getVaccinations() - .stream() - .sorted(Comparator.comparing(ImmunizationEntityHelper::getVaccinationDateForComparison)) - .collect(Collectors.toList()); - Vaccination firstVaccination = sortedVaccinations.get(0); - Vaccination lastVaccination = sortedVaccinations.get(sortedVaccinations.size() - 1); + List relevantSortedVaccinations = + getRelevantSortedVaccinations(exportDto.getUuid(), mostRecentImmunization.getVaccinations()); + Vaccination firstVaccination = null; + Vaccination lastVaccination = null; + if (CollectionUtils.isNotEmpty(relevantSortedVaccinations)) { + firstVaccination = relevantSortedVaccinations.get(0); + lastVaccination = relevantSortedVaccinations.get(relevantSortedVaccinations.size() - 1); exportDto.setFirstVaccinationDate(firstVaccination.getVaccinationDate()); exportDto.setLastVaccinationDate(lastVaccination.getVaccinationDate()); exportDto.setVaccineName(lastVaccination.getVaccineName()); @@ -1161,6 +1167,9 @@ public List getExportList( exportDto.setVaccineUniiCode(lastVaccination.getVaccineUniiCode()); exportDto.setVaccineInn(lastVaccination.getVaccineInn()); } + + exportDto.setNumberOfDoses( + numberOfDoses != null ? String.valueOf(numberOfDoses) : getNumberOfDosesFromVaccinations(lastVaccination)); } }); } @@ -1247,6 +1256,19 @@ private Map getCaseUsersForExport(List resul return caseUsers; } + private List getRelevantSortedVaccinations(String caseUuid, List vaccinations) { + Case caze = caseService.getByUuid(caseUuid); + + return vaccinations.stream() + .filter(v -> vaccinationService.isVaccinationRelevant(caze, v)) + .sorted(Comparator.comparing(ImmunizationEntityHelper::getVaccinationDateForComparison)) + .collect(Collectors.toList()); + } + + private String getNumberOfDosesFromVaccinations(Vaccination vaccination) { + return vaccination != null ? vaccination.getVaccineDose() : ""; + } + @Override public List getAllActiveUuids() { @@ -1297,7 +1319,7 @@ public List getCasesForMap( @Override public List getAllCasesOfPerson(String personUuid) { - Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight); + Pseudonymizer pseudonymizer = getPseudonymizerForDtoWithClinician(""); return service.findBy(new CaseCriteria().person(new PersonReferenceDto(personUuid)), false) .stream() @@ -1355,7 +1377,7 @@ public void updateCompleteness(String caseUuid) { @Override public CaseDataDto getCaseDataByUuid(String uuid) { - return convertToDto(service.getByUuid(uuid), Pseudonymizer.getDefault(userService::hasRight)); + return convertToDto(service.getByUuid(uuid), getPseudonymizerForDtoWithClinician("")); } private CaseDataDto getCaseDataWithoutPseudonyimization(String uuid) { @@ -1385,6 +1407,9 @@ public CaseDataDto save(@Valid @NotNull CaseDataDto dto, boolean systemSave) thr } @Override + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) public CoreAndPersonDto save(@Valid @NotNull CoreAndPersonDto coreAndPersonDto) throws ValidationRuntimeException { CaseDataDto caseDto = coreAndPersonDto.getCoreData(); CoreAndPersonDto savedCoreAndPersonDto = new CoreAndPersonDto(); @@ -1521,6 +1546,9 @@ private void updateCaseWithBulkData( } } + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) public CaseDataDto save(@Valid CaseDataDto dto, boolean handleChanges, boolean checkChangeDate, boolean internal, boolean systemSave) throws ValidationRuntimeException { @@ -1543,7 +1571,9 @@ private CaseDataDto caseSave( throws ValidationRuntimeException { SymptomsHelper.updateIsSymptomatic(dto.getSymptoms()); - restorePseudonymizedDto(dto, existingCaseDto, existingCaze, Pseudonymizer.getDefault(userService::hasRight)); + Pseudonymizer pseudonymizer = getPseudonymizerForDtoWithClinician(""); + + restorePseudonymizedDto(dto, existingCaseDto, existingCaze, pseudonymizer); validateUserRights(dto, existingCaseDto); validate(dto); @@ -1559,9 +1589,10 @@ private CaseDataDto caseSave( doSave(caze, handleChanges, existingCaseDto, syncShares); - return convertToDto(caze, Pseudonymizer.getDefault(userService::hasRight)); + return convertToDto(caze, pseudonymizer); } + @RolesAllowed(UserRight._CASE_EDIT) public void syncSharesAsync(ShareTreeCriteria criteria) { executorService.schedule(() -> sormasToSormasCaseFacade.syncShares(criteria), 5, TimeUnit.SECONDS); } @@ -1604,6 +1635,9 @@ private void updateCaseVisitAssociations(CaseDataDto existingCase, Case caze) { } @Override + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) public void setSampleAssociations(ContactReferenceDto sourceContact, CaseReferenceDto cazeRef) { if (sourceContact != null) { @@ -1616,10 +1650,16 @@ public void setSampleAssociations(ContactReferenceDto sourceContact, CaseReferen sampleFacade.cloneSampleForCase(sample, caze); } }); + + // The samples for case are not persisted yet, so use the samples from contact since they are the same + caze.setFollowUpUntil(service.computeFollowUpuntilDate(caze, contact.getSamples())); } } @Override + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) public void setSampleAssociations(EventParticipantReferenceDto sourceEventParticipant, CaseReferenceDto cazeRef) { if (sourceEventParticipant != null) { final EventParticipant eventParticipant = eventParticipantService.getByUuid(sourceEventParticipant.getUuid()); @@ -1631,10 +1671,16 @@ public void setSampleAssociations(EventParticipantReferenceDto sourceEventPartic sampleFacade.cloneSampleForCase(sample, caze); } }); + + // The samples for case are not persisted yet, so use the samples from event participant since they are the same + caze.setFollowUpUntil(service.computeFollowUpuntilDate(caze, eventParticipant.getSamples())); } } @Override + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) public void setSampleAssociationsUnrelatedDisease(EventParticipantReferenceDto sourceEventParticipant, CaseReferenceDto cazeRef) { final EventParticipant eventParticipant = eventParticipantService.getByUuid(sourceEventParticipant.getUuid()); final Case caze = service.getByUuid(cazeRef.getUuid()); @@ -1645,6 +1691,9 @@ public void setSampleAssociationsUnrelatedDisease(EventParticipantReferenceDto s } else { sampleFacade.cloneSampleForCase(sample, caze); } + + // The samples for case are not persisted yet, so use the samples from event participant since they are the same + caze.setFollowUpUntil(service.computeFollowUpuntilDate(caze, eventParticipant.getSamples())); }); } @@ -2147,6 +2196,7 @@ private void sendConfirmedCaseNotificationsForEvents(Case caze) { } } + @RolesAllowed(UserRight._CASE_EDIT) public void setCaseResponsible(Case caze) { if (featureConfigurationFacade.isPropertyValueTrue(FeatureType.CASE_SURVEILANCE, FeatureTypeProperty.AUTOMATIC_RESPONSIBILITY_ASSIGNMENT)) { District reportingUserDistrict = caze.getReportingUser().getDistrict(); @@ -2188,6 +2238,9 @@ public void setCaseResponsible(Case caze) { * @param forceReassignment * force reassignment of case tasks. */ + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) public void reassignTasksOfCase(Case caze, boolean forceReassignment) { // for each task that is related to the case, the task assignee must match the jurisdiction of the case // otherwise we will reassign the task @@ -2239,7 +2292,7 @@ private List getCompletenessCheckNeededCaseList() { } @Override - public String generateEpidNumber(CaseDataDto caze) { + public String getGenerateEpidNumber(CaseDataDto caze) { return generateEpidNumber( caze.getEpidNumber(), caze.getUuid(), @@ -2380,11 +2433,6 @@ private void updateCaseAge(CaseDataDto existingCase, Case newCase) { @Override @RolesAllowed(UserRight._CASE_DELETE) public void delete(String caseUuid) throws ExternalSurveillanceToolException { - - if (!userService.hasRight(UserRight.CASE_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete cases."); - } - Case caze = service.getByUuid(caseUuid); deleteCase(caze); } @@ -2481,6 +2529,18 @@ public void dearchive(List entityUuids, String dearchiveReason, boolean } } + @Override + @RolesAllowed({ + UserRight._CASE_CREATE, + UserRight._CASE_EDIT }) + public void setResultingCase(EventParticipantReferenceDto eventParticipantReferenceDto, CaseReferenceDto caseReferenceDto) { + final EventParticipant eventParticipant = eventParticipantService.getByUuid(eventParticipantReferenceDto.getUuid()); + if (eventParticipant != null) { + eventParticipant.setResultingCase(caseService.getByUuid(caseReferenceDto.getUuid())); + eventParticipantService.ensurePersisted(eventParticipant); + } + } + @Override public List getArchivedUuidsSince(Date since) { @@ -2544,6 +2604,9 @@ public void pseudonymizeDto(Case source, CaseDataDto dto, Pseudonymizer pseudony } @Override + @RolesAllowed({ + UserRight._CASE_EDIT, + UserRight._CASE_EDIT }) public void restorePseudonymizedDto(CaseDataDto dto, CaseDataDto existingCaseDto, Case caze, Pseudonymizer pseudonymizer) { if (existingCaseDto != null) { boolean inJurisdiction = service.inJurisdictionOrOwned(caze); @@ -3027,6 +3090,7 @@ private void updateInvestigationByStatus(CaseDataDto existingCase, Case caze) { } } + @RolesAllowed(UserRight._CASE_EDIT) public void updateInvestigationByTask(Case caze) { CaseReferenceDto caseRef = caze.toReference(); @@ -3568,6 +3632,7 @@ private void copyDtoValues(CaseDataDto leadCaseData, CaseDataDto otherCaseData, } @Override + @RolesAllowed(UserRight._CASE_CREATE) public CaseDataDto cloneCase(CaseDataDto existingCaseDto) { CaseDataDto newCase = CaseDataDto.build(existingCaseDto.getPerson(), existingCaseDto.getDisease()); @@ -3647,7 +3712,7 @@ public List getCaseFollowUpList( Root caze = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); cq.multiselect( caze.get(Case.UUID), @@ -3749,10 +3814,15 @@ public List getCaseFollowUpList( } @Override + @RolesAllowed(UserRight._CASE_EDIT) public FollowUpPeriodDto calculateFollowUpUntilDate(CaseDataDto caseDto, boolean ignoreOverwrite) { + List samples = Collections.emptyList(); + if (userService.hasRight(UserRight.SAMPLE_VIEW)) { + samples = sampleFacade.getByCaseUuids(Collections.singletonList(caseDto.getUuid())); + } return CaseLogic.calculateFollowUpUntilDate( caseDto, - CaseLogic.getFollowUpStartDate(caseDto, sampleFacade.getByCaseUuids(Collections.singletonList(caseDto.getUuid()))), + CaseLogic.getFollowUpStartDate(caseDto, samples), visitFacade.getVisitsByCase(caseDto.toReference()), diseaseConfigurationFacade.getCaseFollowUpDuration(caseDto.getDisease()), ignoreOverwrite, @@ -3766,6 +3836,7 @@ public EditPermissionType isCaseEditAllowed(String caseUuid) { } @Override + @RolesAllowed(UserRight._CASE_EDIT) public void sendMessage(List caseUuids, String subject, String messageContent, MessageType... messageTypes) { caseUuids.forEach(uuid -> { final Case aCase = service.getByUuid(uuid); @@ -3871,7 +3942,7 @@ public List getDuplicates(@Valid CasePersonDto casePerson, int re CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Object[].class); Root caseRoot = cq.from(Case.class); - CaseJoins caseCaseJoins = new CaseJoins<>(caseRoot); + CaseJoins caseCaseJoins = new CaseJoins(caseRoot); Join person = caseCaseJoins.getPerson(); cq.multiselect(caseRoot.get(Case.UUID), person.get(Person.UUID)); @@ -3993,7 +4064,7 @@ public List getByPersonUuids(List personUuids) { @Override public List getByExternalId(String externalId) { - Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight); + Pseudonymizer pseudonymizer = getPseudonymizerForDtoWithClinician(""); return service.getByExternalId(externalId).stream().map(c -> convertToDto(c, pseudonymizer)).collect(Collectors.toList()); } @@ -4003,6 +4074,28 @@ public void updateExternalData(@Valid List externalData) throws service.updateExternalData(externalData); } + @RolesAllowed({ + UserRight._VISIT_CREATE, + UserRight._VISIT_EDIT, + UserRight._EXTERNAL_VISITS }) + public void updateSymptomsByVisit(Visit visit) { + CaseDataDto cazeDto = CaseFacadeEjbLocal.toCaseDto(visit.getCaze()); + SymptomsDto caseSymptoms = cazeDto.getSymptoms(); + SymptomsHelper.updateSymptoms(SymptomsFacadeEjb.toDto(visit.getSymptoms()), caseSymptoms); + + save(cazeDto, true); + } + + private Pseudonymizer getPseudonymizerForDtoWithClinician(@Nullable String pseudonymizedValue) { + Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight, pseudonymizedValue); + + UserRightFieldAccessChecker clinicianViewRightChecker = + new UserRightFieldAccessChecker(UserRight.CASE_CLINICIAN_VIEW, userService.hasRight(UserRight.CASE_CLINICIAN_VIEW)); + pseudonymizer.addFieldAccessChecker(clinicianViewRightChecker, clinicianViewRightChecker); + + return pseudonymizer; + } + @LocalBean @Stateless public static class CaseFacadeEjbLocal extends CaseFacadeEjb { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/utils/CaseJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJoins.java similarity index 74% rename from sormas-backend/src/main/java/de/symeda/sormas/utils/CaseJoins.java rename to sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJoins.java index 8957e7615a6..e2502de21af 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/utils/CaseJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJoins.java @@ -13,7 +13,7 @@ * along with this program. If not, see . */ -package de.symeda.sormas.utils; +package de.symeda.sormas.backend.caze; import java.util.List; @@ -21,9 +21,9 @@ import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; -import de.symeda.sormas.backend.caze.Case; import de.symeda.sormas.backend.clinicalcourse.ClinicalCourse; import de.symeda.sormas.backend.clinicalcourse.HealthConditions; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.epidata.EpiData; import de.symeda.sormas.backend.event.EventParticipant; import de.symeda.sormas.backend.hospitalization.Hospitalization; @@ -35,14 +35,15 @@ import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.location.Location; import de.symeda.sormas.backend.person.Person; +import de.symeda.sormas.backend.person.PersonJoins; import de.symeda.sormas.backend.sample.Sample; +import de.symeda.sormas.backend.sample.SampleJoins; import de.symeda.sormas.backend.share.ExternalShareInfo; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfo; import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class CaseJoins extends AbstractDomainObjectJoins { +public class CaseJoins extends QueryJoins { private Join person; private Join responsibleRegion; @@ -54,29 +55,22 @@ public class CaseJoins extends AbstractDomainObjectJoins { private Join facility; private Join pointOfEntry; private Join surveillanceOfficer; - private Join address; private Join reportingUser; - private Join personAddress; - private Join personAddressRegion; - private Join personAddressDistrict; - private Join personAddressCommunity; - private Join personAddressFacility; private Join hospitalization; private Join epiData; private Join symptoms; private Join clinicalCourse; private Join healthConditions; private Join eventParticipants; - private Join> personAddresses; private Join samples; - private Join sampleLabs; - private Join personBirthCountry; - private Join personCitizenship; private Join sormasToSormasShareInfo; private Join externalShareInfo; private Join followUpStatusChangeUser; - public CaseJoins(From caze) { + private PersonJoins personJoins; + private SampleJoins sampleJoins; + + public CaseJoins(From caze) { super(caze); } @@ -160,14 +154,6 @@ private void setSurveillanceOfficer(Join surveillanceOfficer) { this.surveillanceOfficer = surveillanceOfficer; } - public Join getAddress() { - return getOrCreate(address, Person.ADDRESS, JoinType.LEFT, getPerson(), this::setAddress); - } - - private void setAddress(Join address) { - this.address = address; - } - public Join getReportingUser() { return getOrCreate(reportingUser, Case.REPORTING_USER, JoinType.LEFT, this::setReportingUser); } @@ -177,43 +163,23 @@ private void setReportingUser(Join reportingUser) { } public Join getPersonAddress() { - return getOrCreate(personAddress, Person.ADDRESS, JoinType.LEFT, getPerson(), this::setPersonAddress); - } - - private void setPersonAddress(Join personAddress) { - this.personAddress = personAddress; + return getPersonJoins().getAddress(); } public Join getPersonAddressRegion() { - return getOrCreate(personAddressRegion, Location.REGION, JoinType.LEFT, getPersonAddress(), this::setPersonAddressRegion); - } - - private void setPersonAddressRegion(Join personAddressRegion) { - this.personAddressRegion = personAddressRegion; + return getPersonJoins().getAddressJoins().getRegion(); } public Join getPersonAddressDistrict() { - return getOrCreate(personAddressDistrict, Location.DISTRICT, JoinType.LEFT, getPersonAddress(), this::setPersonAddressDistrict); - } - - private void setPersonAddressDistrict(Join personAddressDistrict) { - this.personAddressDistrict = personAddressDistrict; + return getPersonJoins().getAddressJoins().getDistrict(); } public Join getPersonAddressCommunity() { - return getOrCreate(personAddressCommunity, Location.COMMUNITY, JoinType.LEFT, getPersonAddress(), this::setPersonAddressCommunity); - } - - private void setPersonAddressCommunity(Join personAddressCommunity) { - this.personAddressCommunity = personAddressCommunity; + return getPersonJoins().getAddressJoins().getCommunity(); } public Join getPersonAddressFacility() { - return getOrCreate(personAddressFacility, Location.FACILITY, JoinType.LEFT, getAddress(), this::setPersonAddressFacility); - } - - private void setPersonAddressFacility(Join personAddressFacility) { - this.personAddressFacility = personAddressFacility; + return getPersonJoins().getAddressJoins().getFacility(); } public Join getHospitalization() { @@ -265,11 +231,7 @@ public Join getEventParticipants() { } public Join> getPersonAddresses() { - return getOrCreate(personAddresses, Person.ADDRESSES, JoinType.LEFT, getPerson(), this::setPersonAddresses); - } - - private void setPersonAddresses(Join> personAddresses) { - this.personAddresses = personAddresses; + return getPersonJoins().getAddresses(); } public Join getSamples() { @@ -281,27 +243,15 @@ private void setSamples(Join samples) { } public Join getSampleLabs() { - return getOrCreate(sampleLabs, Sample.LAB, JoinType.LEFT, getSamples(), this::setSampleLabs); - } - - private void setSampleLabs(Join sampleLabs) { - this.sampleLabs = sampleLabs; + return getSampleJoins().getLab(); } public Join getPersonBirthCountry() { - return getOrCreate(personBirthCountry, Person.BIRTH_COUNTRY, JoinType.LEFT, getPerson(), this::setPersonBirthCountry); - } - - private void setPersonBirthCountry(Join personBirthCountry) { - this.personBirthCountry = personBirthCountry; + return getPersonJoins().getBirthCountry(); } public Join getPersonCitizenship() { - return getOrCreate(personCitizenship, Person.CITIZENSHIP, JoinType.LEFT, getPerson(), this::setPersonCitizenship); - } - - public void setPersonCitizenship(Join personCitizenship) { - this.personCitizenship = personCitizenship; + return getPersonJoins().getCitizenship(); } public Join getSormasToSormasShareInfo() { @@ -327,4 +277,20 @@ public Join getFollowUpStatusChangeUser() { private void setFollowUpStatusChangeUser(Join followUpStatusChangeUser) { this.followUpStatusChangeUser = followUpStatusChangeUser; } + + public PersonJoins getPersonJoins() { + return getOrCreate(personJoins, () -> new PersonJoins(getPerson()), this::setPersonJoins); + } + + private void setPersonJoins(PersonJoins personJoins) { + this.personJoins = personJoins; + } + + public SampleJoins getSampleJoins() { + return getOrCreate(sampleJoins, () -> new SampleJoins(getSamples()), this::setSampleJoins); + } + + private void setSampleJoins(SampleJoins sampleJoins) { + this.sampleJoins = sampleJoins; + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJurisdictionPredicateValidator.java index bfbcaccb255..00a50be5cce 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseJurisdictionPredicateValidator.java @@ -36,18 +36,17 @@ import de.symeda.sormas.backend.sample.SampleJurisdictionPredicateValidator; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.util.PredicateJurisdictionValidator; -import de.symeda.sormas.utils.CaseJoins; public class CaseJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final CaseJoins joins; + private final CaseJoins joins; private final CriteriaQuery cq; private CaseJurisdictionPredicateValidator( CriteriaQuery cq, CriteriaBuilder cb, - CaseJoins joins, + CaseJoins joins, User user, List associatedJurisdictionValidators) { super(cb, user, null, associatedJurisdictionValidators); @@ -58,7 +57,7 @@ private CaseJurisdictionPredicateValidator( private CaseJurisdictionPredicateValidator( CriteriaQuery cq, CriteriaBuilder cb, - CaseJoins joins, + CaseJoins joins, Path userPath, List associatedJurisdictionValidators) { super(cb, null, userPath, associatedJurisdictionValidators); @@ -67,11 +66,11 @@ private CaseJurisdictionPredicateValidator( } public static CaseJurisdictionPredicateValidator of(CaseQueryContext qc, User user) { - return new CaseJurisdictionPredicateValidator(qc.getQuery(), qc.getCriteriaBuilder(), (CaseJoins) qc.getJoins(), user, null); + return new CaseJurisdictionPredicateValidator(qc.getQuery(), qc.getCriteriaBuilder(), qc.getJoins(), user, null); } public static CaseJurisdictionPredicateValidator of(CaseQueryContext qc, Path userPath) { - return new CaseJurisdictionPredicateValidator(qc.getQuery(), qc.getCriteriaBuilder(), (CaseJoins) qc.getJoins(), userPath, null); + return new CaseJurisdictionPredicateValidator(qc.getQuery(), qc.getCriteriaBuilder(), qc.getJoins(), userPath, null); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseListCriteriaBuilder.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseListCriteriaBuilder.java index 9d181ec4b91..c56dc9ddcac 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseListCriteriaBuilder.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseListCriteriaBuilder.java @@ -17,6 +17,7 @@ import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Expression; +import javax.persistence.criteria.From; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Order; @@ -51,7 +52,6 @@ import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.util.JurisdictionHelper; import de.symeda.sormas.backend.util.ModelConstants; -import de.symeda.sormas.utils.CaseJoins; @Stateless @LocalBean @@ -89,7 +89,7 @@ private CriteriaQuery buildIndexCriteria( CriteriaQuery cq = cb.createQuery(type); Root caze = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); List> selectionList = new ArrayList<>(selectionProvider.apply(caze, caseQueryContext)); @@ -174,8 +174,9 @@ private CriteriaQuery buildIndexCriteria( return cq; } - public List> getCaseIndexSelections(Root root, CaseQueryContext caseQueryContext) { - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + public List> getCaseIndexSelections(From root, CaseQueryContext caseQueryContext) { + + final CaseJoins joins = caseQueryContext.getJoins(); final CriteriaBuilder cb = caseQueryContext.getCriteriaBuilder(); return Arrays.asList( root.get(AbstractDomainObject.ID), @@ -225,7 +226,7 @@ public List> getCaseIndexSelections(Root root, CaseQueryConte JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(caseQueryContext))); } - private List> getIndexOrders(SortProperty sortProperty, Root caze, CaseJoins joins, CriteriaBuilder cb) { + private List> getIndexOrders(SortProperty sortProperty, Root caze, CaseJoins joins, CriteriaBuilder cb) { switch (sortProperty.propertyName) { case CaseIndexDto.ID: @@ -282,18 +283,18 @@ private List> getIndexOrders(SortProperty sortProperty, Root private List> getCaseIndexDetailedSelections(Root caze, CaseQueryContext caseQueryContext) { - CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + CaseJoins joins = caseQueryContext.getJoins(); List> selections = new ArrayList<>(getCaseIndexSelections(caze, caseQueryContext)); selections.addAll( Arrays.asList( caze.get(Case.RE_INFECTION), - joins.getAddress().get(Location.CITY), - joins.getAddress().get(Location.STREET), - joins.getAddress().get(Location.HOUSE_NUMBER), - joins.getAddress().get(Location.ADDITIONAL_INFORMATION), - joins.getAddress().get(Location.POSTAL_CODE), - ((Expression) caseQueryContext.getSubqueryExpression(CaseQueryContext.PERSON_PHONE_SUBQUERY)), + joins.getPersonAddress().get(Location.CITY), + joins.getPersonAddress().get(Location.STREET), + joins.getPersonAddress().get(Location.HOUSE_NUMBER), + joins.getPersonAddress().get(Location.ADDITIONAL_INFORMATION), + joins.getPersonAddress().get(Location.POSTAL_CODE), + caseQueryContext.getSubqueryExpression(CaseQueryContext.PERSON_PHONE_SUBQUERY), joins.getReportingUser().get(User.UUID), joins.getReportingUser().get(User.FIRST_NAME), joins.getReportingUser().get(User.LAST_NAME), @@ -304,7 +305,7 @@ private List> getCaseIndexDetailedSelections(Root caze, CaseQ return selections; } - private List> getIndexDetailOrders(SortProperty sortProperty, Root caze, CaseJoins joins, CriteriaBuilder cb) { + private List> getIndexDetailOrders(SortProperty sortProperty, Root caze, CaseJoins joins, CriteriaBuilder cb) { switch (sortProperty.propertyName) { case CaseIndexDetailedDto.CITY: @@ -312,7 +313,7 @@ private List> getIndexDetailOrders(SortProperty sortProperty, Root case CaseIndexDetailedDto.HOUSE_NUMBER: case CaseIndexDetailedDto.ADDITIONAL_INFORMATION: case CaseIndexDetailedDto.POSTAL_CODE: - return Collections.singletonList(joins.getAddress().get(sortProperty.propertyName)); + return Collections.singletonList(joins.getPersonAddress().get(sortProperty.propertyName)); case CaseIndexDetailedDto.PHONE: return Collections.singletonList(cb.literal(49)); case CaseIndexDetailedDto.REPORTING_USER: @@ -330,6 +331,6 @@ private List> getIndexDetailOrders(SortProperty sortProperty, Root private interface OrderExpressionProvider { - List> forProperty(SortProperty sortProperty, Root caze, CaseJoins joins, CriteriaBuilder cb); + List> forProperty(SortProperty sortProperty, Root caze, CaseJoins joins, CriteriaBuilder cb); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseQueryContext.java index cee6c54045a..2634152cbff 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseQueryContext.java @@ -8,23 +8,27 @@ import de.symeda.sormas.api.person.PersonContactDetailType; import de.symeda.sormas.backend.common.QueryContext; -import de.symeda.sormas.utils.CaseJoins; +import de.symeda.sormas.backend.person.Person; -public class CaseQueryContext extends QueryContext { +public class CaseQueryContext extends QueryContext { public static final String PERSON_PHONE_SUBQUERY = "personPhoneSubquery"; public static final String PERSON_PHONE_OWNER_SUBQUERY = "personPhoneOwnerSubquery"; public static final String PERSON_EMAIL_SUBQUERY = "personEmailSubquery"; public static final String PERSON_OTHER_CONTACT_DETAILS_SUBQUERY = "personOtherContactDetailsSubQuery"; - public CaseQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { - super(cb, query, root, new CaseJoins<>(root)); + public CaseQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { + this(cb, query, new CaseJoins(root)); + } + + public CaseQueryContext(CriteriaBuilder cb, CriteriaQuery query, CaseJoins joins) { + super(cb, query, joins.getRoot(), joins); } @Override protected Expression createExpression(String name) { - final Join personJoin = ((CaseJoins) getJoins()).getPerson(); + final Join personJoin = getJoins().getPerson(); if (name.equals(PERSON_PHONE_SUBQUERY)) { return addSubqueryExpression(PERSON_PHONE_SUBQUERY, getPersonContactDetailSubquery(PersonContactDetailType.PHONE, personJoin)); } else if (name.equals(PERSON_EMAIL_SUBQUERY)) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseService.java index ada325f9bfa..a3833ff6eeb 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseService.java @@ -1,20 +1,17 @@ -/******************************************************************************* +/* * SORMAS® - Surveillance Outbreak Response Management & Analysis System * Copyright © 2016-2018 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.backend.caze; import java.sql.Timestamp; @@ -24,7 +21,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Optional; @@ -52,7 +48,6 @@ import javax.transaction.Transactional; import javax.validation.constraints.NotNull; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import de.symeda.sormas.api.Disease; @@ -60,7 +55,6 @@ import de.symeda.sormas.api.EntityRelevanceStatus; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.caze.CaseCriteria; -import de.symeda.sormas.api.caze.CaseDataDto; import de.symeda.sormas.api.caze.CaseIndexDto; import de.symeda.sormas.api.caze.CaseListEntryDto; import de.symeda.sormas.api.caze.CaseLogic; @@ -76,6 +70,7 @@ import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.clinicalcourse.ClinicalCourseReferenceDto; import de.symeda.sormas.api.clinicalcourse.ClinicalVisitCriteria; +import de.symeda.sormas.api.contact.ContactStatus; import de.symeda.sormas.api.contact.FollowUpStatus; import de.symeda.sormas.api.document.DocumentRelatedEntityType; import de.symeda.sormas.api.externaldata.ExternalDataDto; @@ -86,7 +81,6 @@ import de.symeda.sormas.api.infrastructure.facility.FacilityType; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.person.Sex; -import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.therapy.PrescriptionCriteria; import de.symeda.sormas.api.therapy.TherapyReferenceDto; import de.symeda.sormas.api.therapy.TreatmentCriteria; @@ -122,7 +116,6 @@ import de.symeda.sormas.backend.event.EventParticipant; import de.symeda.sormas.backend.event.EventParticipantService; import de.symeda.sormas.backend.externaljournal.ExternalJournalService; -import de.symeda.sormas.backend.externalsurveillancetool.ExternalSurveillanceToolGatewayFacadeEjb; import de.symeda.sormas.backend.hospitalization.Hospitalization; import de.symeda.sormas.backend.immunization.ImmunizationService; import de.symeda.sormas.backend.infrastructure.community.Community; @@ -137,7 +130,6 @@ import de.symeda.sormas.backend.sample.SampleService; import de.symeda.sormas.backend.share.ExternalShareInfo; import de.symeda.sormas.backend.share.ExternalShareInfoService; -import de.symeda.sormas.backend.sormastosormas.origin.SormasToSormasOriginInfoService; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfo; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoFacadeEjb.SormasToSormasShareInfoFacadeEjbLocal; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoService; @@ -158,7 +150,6 @@ import de.symeda.sormas.backend.visit.Visit; import de.symeda.sormas.backend.visit.VisitFacadeEjb; import de.symeda.sormas.backend.visit.VisitService; -import de.symeda.sormas.utils.CaseJoins; @Stateless @LocalBean @@ -195,14 +186,10 @@ public class CaseService extends AbstractCoreAdoService { @EJB private CaseFacadeEjbLocal caseFacade; @EJB - private VisitFacadeEjb.VisitFacadeEjbLocal visitFacade; - @EJB private SormasToSormasShareInfoFacadeEjbLocal sormasToSormasShareInfoFacade; @EJB private SormasToSormasShareInfoService sormasToSormasShareInfoService; @EJB - private SormasToSormasOriginInfoService sormasToSormasOriginInfoService; - @EJB private ExternalShareInfoService externalShareInfoService; @EJB private ExternalJournalService externalJournalService; @@ -212,8 +199,6 @@ public class CaseService extends AbstractCoreAdoService { private SurveillanceReportService surveillanceReportService; @EJB private DocumentService documentService; - @EJB - private ExternalSurveillanceToolGatewayFacadeEjb.ExternalSurveillanceToolGatewayFacadeEjbLocal externalSurveillanceToolGatewayFacade; public CaseService() { super(Case.class); @@ -304,7 +289,7 @@ public Long countCasesForMap(Region region, District district, Disease disease, CriteriaQuery cq = cb.createQuery(Long.class); Root caze = cq.from(getElementClass()); - CaseJoins joins = new CaseJoins<>(caze); + CaseJoins joins = new CaseJoins(caze); Predicate filter = createMapCasesFilter(cb, cq, caze, joins, region, district, disease, from, to, dateType); @@ -325,7 +310,7 @@ public List getCasesForMap(Region region, District district, Disease Root caze = cq.from(getElementClass()); CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + CaseJoins joins = caseQueryContext.getJoins(); Predicate filter = createMapCasesFilter(cb, cq, caze, joins, region, district, disease, from, to, dateType); @@ -361,7 +346,7 @@ private Predicate createMapCasesFilter( CriteriaBuilder cb, CriteriaQuery cq, Root root, - CaseJoins joins, + CaseJoins joins, Region region, District district, Disease disease, @@ -582,7 +567,7 @@ public Predicate createCriteriaFilter(CaseCrite final From from = caseQueryContext.getRoot(); final CriteriaBuilder cb = caseQueryContext.getCriteriaBuilder(); final CriteriaQuery cq = caseQueryContext.getQuery(); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Join person = joins.getPerson(); Join reportingUser = joins.getReportingUser(); @@ -774,10 +759,7 @@ public Predicate createCriteriaFilter(CaseCrite CriteriaBuilderHelper.ilikePrecise(cb, person.get(Person.UUID), textFilter + "%"), CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.LAST_NAME), textFilter), - phoneNumberPredicate( - cb, - (Expression) caseQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), - textFilter), + phoneNumberPredicate(cb, caseQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, location.get(Location.CITY), textFilter), CriteriaBuilderHelper.ilike(cb, location.get(Location.POSTAL_CODE), textFilter))); @@ -805,12 +787,8 @@ public Predicate createCriteriaFilter(CaseCrite Join eventParticipant = joins.getEventParticipants(); Join event = eventParticipant.join(EventParticipant.EVENT, JoinType.LEFT); - filter = CriteriaBuilderHelper.and( - cb, - filter, - cb.isFalse(event.get(Event.DELETED)), - cb.isFalse(event.get(Event.ARCHIVED)), - cb.isFalse(eventParticipant.get(EventParticipant.DELETED))); + filter = CriteriaBuilderHelper + .and(cb, filter, cb.isFalse(event.get(Event.DELETED)), cb.isFalse(eventParticipant.get(EventParticipant.DELETED))); if (hasEventLikeCriteria) { String[] textFilters = caseCriteria.getEventLike().trim().split("\\s+"); @@ -907,7 +885,7 @@ public void deletePermanent(Case caze) { caze.getSamples() .stream() .filter(sample -> sample.getAssociatedContact() == null && sample.getAssociatedEventParticipant() == null) - .forEach(sample -> sampleService.delete(sample)); + .forEach(sample -> sampleService.deletePermanent(sample)); caze.getVisits().stream().forEach(visit -> { if (visit.getContacts() == null || visit.getContacts().isEmpty()) { @@ -1001,6 +979,7 @@ private void deleteCaseLinks(Case caze) { contactService.getAllByResultingCase(caze, true).forEach(c -> { c.setResultingCase(null); + c.setContactStatus(ContactStatus.DROPPED); externalJournalService.handleExternalJournalPersonUpdateAsync(c.getPerson().toReference()); contactService.ensurePersisted(c); }); @@ -1100,14 +1079,22 @@ protected > T addChangeDates(T builder, From casePath, CaseUserFilterCriteria userFilterCriteria) { + public Predicate createUserFilter(CaseQueryContext caseQueryContext, CaseUserFilterCriteria userFilterCriteria) { User currentUser = getCurrentUser(); if (currentUser == null) { return null; } + final CriteriaQuery cq = caseQueryContext.getQuery(); + final CriteriaBuilder cb = caseQueryContext.getCriteriaBuilder(); + final From casePath = caseQueryContext.getRoot(); + Predicate filterResponsible = null; Predicate filter = null; @@ -1216,10 +1203,17 @@ public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From casePath) { - return createUserFilter(cb, cq, casePath, null); + return createUserFilter(new CaseQueryContext(cb, cq, casePath)); + } + + // XXX To be removed when merging with #8747 + @SuppressWarnings("rawtypes") + public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From casePath, CaseUserFilterCriteria userFilterCriteria) { + return createUserFilter(new CaseQueryContext(cb, cq, casePath), userFilterCriteria); } /** @@ -1335,27 +1329,8 @@ public void updateFollowUpDetails(Case caze, boolean followUpStatusChangedByUser statusChangedBySystem = true; } } else { - CaseDataDto caseDto = caseFacade.toDto(caze); - Date currentFollowUpUntil = caseDto.getFollowUpUntil(); - - Date earliestSampleDate = null; - for (Sample sample : caze.getSamples()) { - if (!sample.isDeleted() - && sample.getPathogenTestResult() == PathogenTestResultType.POSITIVE - && (earliestSampleDate == null || sample.getSampleDateTime().before(earliestSampleDate))) { - earliestSampleDate = sample.getSampleDateTime(); - } - } - - Date untilDate = CaseLogic - .calculateFollowUpUntilDate( - caseDto, - CaseLogic.getFollowUpStartDate(caze.getSymptoms().getOnsetDate(), caze.getReportDate(), earliestSampleDate), - caze.getVisits().stream().map(visit -> visitFacade.toDto(visit)).collect(Collectors.toList()), - diseaseConfigurationFacade.getCaseFollowUpDuration(caze.getDisease()), - false, - featureConfigurationFacade.isPropertyValueTrue(FeatureType.CASE_FOLLOWUP, FeatureTypeProperty.ALLOW_FREE_FOLLOW_UP_OVERWRITE)) - .getFollowUpEndDate(); + Date currentFollowUpUntil = caze.getFollowUpUntil(); + Date untilDate = computeFollowUpuntilDate(caze); caze.setFollowUpUntil(untilDate); if (DateHelper.getStartOfDay(currentFollowUpUntil).before(DateHelper.getStartOfDay(untilDate))) { caze.setOverwriteFollowUpUntil(false); @@ -1383,6 +1358,24 @@ public void updateFollowUpDetails(Case caze, boolean followUpStatusChangedByUser ensurePersisted(caze); } + private Date computeFollowUpuntilDate(Case caze) { + return computeFollowUpuntilDate(caze, caze.getSamples()); + } + + public Date computeFollowUpuntilDate(Case caze, Collection samples) { + Date earliestSampleDate = sampleService.getEarliestSampleDate(samples); + + return CaseLogic + .calculateFollowUpUntilDate( + CaseFacadeEjb.toCaseDto(caze), + CaseLogic.getFollowUpStartDate(caze.getSymptoms().getOnsetDate(), caze.getReportDate(), earliestSampleDate), + caze.getVisits().stream().map(VisitFacadeEjb::toDto).collect(Collectors.toList()), + diseaseConfigurationFacade.getCaseFollowUpDuration(caze.getDisease()), + false, + featureConfigurationFacade.isPropertyValueTrue(FeatureType.CASE_FOLLOWUP, FeatureTypeProperty.ALLOW_FREE_FOLLOW_UP_OVERWRITE)) + .getFollowUpEndDate(); + } + @Override public EditPermissionType getEditPermissionType(Case caze) { @@ -1433,17 +1426,11 @@ public Predicate inJurisdictionOrOwned(CaseQueryContext qc, User user) { } public Collection getByPersonUuids(List personUuids) { - if (CollectionUtils.isEmpty(personUuids)) { - // Avoid empty IN clause - return Collections.emptyList(); - } else if (personUuids.size() > ModelConstants.PARAMETER_LIMIT) { - List cases = new LinkedList<>(); - IterableHelper - .executeBatched(personUuids, ModelConstants.PARAMETER_LIMIT, batchedPersonUuids -> cases.addAll(getCasesByPersonUuids(personUuids))); - return cases; - } else { - return getCasesByPersonUuids(personUuids); - } + + List cases = new ArrayList<>(); + IterableHelper + .executeBatched(personUuids, ModelConstants.PARAMETER_LIMIT, batchedPersonUuids -> cases.addAll(getCasesByPersonUuids(personUuids))); + return cases; } private List getCasesByPersonUuids(List personUuids) { @@ -1473,8 +1460,8 @@ public List getCaseSelectionList(CaseCriteria caseCriteria) { final CriteriaQuery cq = cb.createQuery(Object[].class); final Root root = cq.from(Case.class); - CaseQueryContext caseQueryContext = new CaseQueryContext<>(cb, cq, root); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, root); + final CaseJoins joins = caseQueryContext.getJoins(); // This is needed in selection because of the combination of distinct and orderBy clauses - every operator in the orderBy has to be part of the select IF distinct is used Expression latestChangedDateFunction = @@ -1545,7 +1532,7 @@ public List getEntriesList(Long personId, Integer first, Integ final CriteriaQuery cq = cb.createQuery(Object[].class); final Root caze = cq.from(Case.class); - CaseQueryContext caseQueryContext = new CaseQueryContext<>(cb, cq, caze); + CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); cq.multiselect( caze.get(Case.UUID), @@ -1593,7 +1580,7 @@ public List getSimilarCases(CaseSimilarityCriteria criteria) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Object[].class); Root root = cq.from(Case.class); - CaseJoins joins = new CaseJoins<>(root); + CaseJoins joins = new CaseJoins(root); cq.multiselect( root.get(Case.UUID), @@ -1664,7 +1651,7 @@ public List getCasesForDuplicateMerging(CaseCriteria criteria, b CriteriaQuery cq = cb.createQuery(Object[].class); Root root = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, root); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Root root2 = cq.from(Case.class); Join person = joins.getPerson(); @@ -1967,6 +1954,6 @@ private float calculateCompleteness(Case caze) { private void selectIndexDtoFields(CaseQueryContext caseQueryContext) { CriteriaQuery cq = caseQueryContext.getQuery(); - cq.multiselect(listQueryBuilder.getCaseIndexSelections((Root) caseQueryContext.getRoot(), caseQueryContext)); + cq.multiselect(listQueryBuilder.getCaseIndexSelections(caseQueryContext.getRoot(), caseQueryContext)); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/caseimport/CaseImportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/caseimport/CaseImportFacadeEjb.java index af65bd0271e..cc524173686 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/caseimport/CaseImportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/caseimport/CaseImportFacadeEjb.java @@ -15,6 +15,7 @@ package de.symeda.sormas.backend.caze.caseimport; +import de.symeda.sormas.api.user.UserRight; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; @@ -25,6 +26,7 @@ import java.util.Optional; import java.util.function.Function; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -90,6 +92,7 @@ import de.symeda.sormas.backend.vaccination.VaccinationFacadeEjb.VaccinationFacadeEjbLocal; @Stateless(name = "CaseImportFacade") +@RolesAllowed(UserRight._CASE_IMPORT) public class CaseImportFacadeEjb implements CaseImportFacade { private final Logger LOGGER = LoggerFactory.getLogger(CaseImportFacadeEjb.class); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportFacadeEjb.java index 732b26e649a..0728142861b 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportFacadeEjb.java @@ -19,6 +19,7 @@ import java.util.Optional; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -36,12 +37,13 @@ import de.symeda.sormas.api.caze.surveillancereport.SurveillanceReportFacade; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.backend.caze.CaseFacadeEjb; import de.symeda.sormas.backend.caze.CaseService; -import de.symeda.sormas.backend.infrastructure.facility.FacilityFacadeEjb; -import de.symeda.sormas.backend.infrastructure.facility.FacilityService; import de.symeda.sormas.backend.infrastructure.district.DistrictFacadeEjb; import de.symeda.sormas.backend.infrastructure.district.DistrictService; +import de.symeda.sormas.backend.infrastructure.facility.FacilityFacadeEjb; +import de.symeda.sormas.backend.infrastructure.facility.FacilityService; import de.symeda.sormas.backend.infrastructure.region.RegionFacadeEjb; import de.symeda.sormas.backend.infrastructure.region.RegionService; import de.symeda.sormas.backend.user.User; @@ -52,6 +54,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "SurveillanceReportFacade") +@RolesAllowed(UserRight._CASE_VIEW) public class SurveillanceReportFacadeEjb implements SurveillanceReportFacade { @PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME) @@ -94,11 +97,12 @@ public static SurveillanceReportDto toDto(SurveillanceReport source) { } @Override + @RolesAllowed(UserRight._CASE_EDIT) public SurveillanceReportDto saveSurveillanceReport(@Valid SurveillanceReportDto dto) { return saveSurveillanceReport(dto, true); } - public SurveillanceReportDto saveSurveillanceReport(SurveillanceReportDto dto, boolean checkChangeDate) { + private SurveillanceReportDto saveSurveillanceReport(SurveillanceReportDto dto, boolean checkChangeDate) { SurveillanceReport existingReport = service.getByUuid(dto.getUuid()); SurveillanceReportDto existingReportDto = toDto(existingReport); @@ -112,6 +116,7 @@ public SurveillanceReportDto saveSurveillanceReport(SurveillanceReportDto dto, b } @Override + @RolesAllowed(UserRight._CASE_EDIT) public void deleteSurveillanceReport(String surveillanceReportUuid) { service.deletePermanent(service.getByUuid(surveillanceReportUuid)); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportService.java index 9433cac1115..6afbeb669f5 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/caze/surveillancereport/SurveillanceReportService.java @@ -55,23 +55,18 @@ public Predicate buildCriteriaFilter(SurveillanceReportCriteria criteria, Criter public List getByCaseUuids(List caseUuids) { - if (caseUuids != null && !caseUuids.isEmpty()) { - List reports = new ArrayList<>(); + List reports = new ArrayList<>(); + IterableHelper.executeBatched(caseUuids, ModelConstants.PARAMETER_LIMIT, batchedCaseUuids -> { + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(SurveillanceReport.class); + Root reportRoot = cq.from(SurveillanceReport.class); + Join caseJoin = reportRoot.join(SurveillanceReport.CAZE, JoinType.LEFT); - IterableHelper.executeBatched(caseUuids, ModelConstants.PARAMETER_LIMIT, batchedCaseUuids -> { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(SurveillanceReport.class); - Root reportRoot = cq.from(SurveillanceReport.class); - Join caseJoin = reportRoot.join(SurveillanceReport.CAZE, JoinType.LEFT); + cq.where(caseJoin.get(AbstractDomainObject.UUID).in(batchedCaseUuids)); - cq.where(caseJoin.get(AbstractDomainObject.UUID).in(batchedCaseUuids)); + reports.addAll(em.createQuery(cq).getResultList()); + }); - reports.addAll(em.createQuery(cq).getResultList()); - }); - - return reports; - } else { - return new ArrayList<>(); - } + return reports; } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitFacadeEjb.java index f8a54d8008e..b72c6d3bcfa 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitFacadeEjb.java @@ -8,6 +8,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -63,6 +64,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "ClinicalVisitFacade") +@RolesAllowed(UserRight._CLINICAL_COURSE_VIEW) public class ClinicalVisitFacadeEjb implements ClinicalVisitFacade { @PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME) @@ -134,7 +136,7 @@ public List getIndexList(ClinicalVisitCriteria criteria, joins.getSymptoms().get(Symptoms.BLOOD_PRESSURE_DIASTOLIC), joins.getSymptoms().get(Symptoms.HEART_RATE), joins.getSymptoms().get(Symptoms.ID), - JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaze())))); + JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaseJoins())))); if (criteria != null) { cq.where(service.buildCriteriaFilter(criteria, cb, visit)); @@ -217,10 +219,12 @@ public ClinicalVisitDto getClinicalVisitByUuid(String uuid) { } @Override + @RolesAllowed({UserRight._CLINICAL_VISIT_CREATE, UserRight._CLINICAL_VISIT_EDIT}) public ClinicalVisitDto saveClinicalVisit(ClinicalVisitDto clinicalVisit, String caseUuid) { return saveClinicalVisit(clinicalVisit, caseUuid, true); } + @RolesAllowed({UserRight._CLINICAL_VISIT_CREATE, UserRight._CLINICAL_VISIT_EDIT}) public ClinicalVisitDto saveClinicalVisit(ClinicalVisitDto clinicalVisit, String caseUuid, boolean handleChanges) { SymptomsHelper.updateIsSymptomatic(clinicalVisit.getSymptoms()); @@ -248,6 +252,7 @@ public ClinicalVisitDto saveClinicalVisit(ClinicalVisitDto clinicalVisit, String * case symptoms are not updated from this method. */ @Override + @RolesAllowed({UserRight._CLINICAL_VISIT_CREATE, UserRight._CLINICAL_VISIT_EDIT}) public ClinicalVisitDto saveClinicalVisit(@Valid ClinicalVisitDto clinicalVisit) { ClinicalCourse clinicalCourse = clinicalCourseService.getByReferenceDto(clinicalVisit.getClinicalCourse()); @@ -255,12 +260,8 @@ public ClinicalVisitDto saveClinicalVisit(@Valid ClinicalVisitDto clinicalVisit) } @Override + @RolesAllowed(UserRight._CLINICAL_VISIT_DELETE) public void deleteClinicalVisit(String clinicalVisitUuid) { - - if (!userService.hasRight(UserRight.VISIT_DELETE)) { - throw new UnsupportedOperationException("Your user is not allowed to delete clinical visits"); - } - ClinicalVisit clinicalVisit = service.getByUuid(clinicalVisitUuid); service.deletePermanent(clinicalVisit); } @@ -310,7 +311,7 @@ public List getExportList(CaseCriteria criteria, Collect Root clinicalVisit = cq.from(ClinicalVisit.class); ClinicalVisitJoins joins = new ClinicalVisitJoins(clinicalVisit); - CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, joins.getCaze()); + CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, joins.getCaseJoins()); cq.multiselect( joins.getCaze().get(Case.UUID), joins.getCasePerson().get(Person.FIRST_NAME), diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitJoins.java index d1b37441c51..141d9be85aa 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitJoins.java @@ -23,6 +23,8 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.infrastructure.facility.Facility; import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; import de.symeda.sormas.backend.person.Person; @@ -31,25 +33,16 @@ import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class ClinicalVisitJoins extends AbstractDomainObjectJoins { +public class ClinicalVisitJoins extends QueryJoins { + private Join symptoms; private Join clinicalCourse; private Join caze; - private Join casePerson; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseHealthFacility; - private Join casePointOfEntry; - - - public ClinicalVisitJoins(From root) { + + private CaseJoins caseJoins; + + public ClinicalVisitJoins(From root) { super(root); } @@ -77,83 +70,51 @@ private void setCaze(Join caze) { this.caze = caze; } - public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getCaze(), this::setCasePerson); + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); } - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; } - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCaze(), this::setCaseReportingUser); + public Join getCasePerson() { + return getCaseJoins().getPerson(); } - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; + public Join getCaseReportingUser() { + return getCaseJoins().getReportingUser(); } public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCaze(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + return getCaseJoins().getResponsibleRegion(); } public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCaze(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + return getCaseJoins().getResponsibleDistrict(); } public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + return getCaseJoins().getResponsibleCommunity(); } public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCaze(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + return getCaseJoins().getRegion(); } public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCaze(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + return getCaseJoins().getDistrict(); } public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; + return getCaseJoins().getCommunity(); } public Join getCaseHealthFacility() { - return getOrCreate(caseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCaze(), this::setCaseHealthFacility); - } - - private void setCaseHealthFacility(Join caseHealthFacility) { - this.caseHealthFacility = caseHealthFacility; + return getCaseJoins().getFacility(); } public Join getCasePointOfEntry() { - return getOrCreate(casePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCaze(), this::setCasePointOfEntry); - } - - private void setCasePointOfEntry(Join casePointOfEntry) { - this.casePointOfEntry = casePointOfEntry; + return getCaseJoins().getPointOfEntry(); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractCoreFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractCoreFacadeEjb.java index c3ce4634e7e..1cf3e528964 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractCoreFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractCoreFacadeEjb.java @@ -21,10 +21,14 @@ import java.util.List; import java.util.stream.Collectors; +import javax.annotation.security.DenyAll; import javax.ejb.EJB; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; import javax.inject.Inject; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.validation.Valid; import javax.validation.constraints.NotNull; @@ -33,22 +37,20 @@ import de.symeda.sormas.api.EditPermissionType; import de.symeda.sormas.api.EntityDto; import de.symeda.sormas.api.ReferenceDto; +import de.symeda.sormas.api.common.CoreEntityType; import de.symeda.sormas.api.deletionconfiguration.AutomaticDeletionInfoDto; import de.symeda.sormas.api.deletionconfiguration.DeletionReference; -import de.symeda.sormas.api.feature.FeatureType; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.utils.AccessDeniedException; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.api.utils.ValidationRuntimeException; import de.symeda.sormas.api.utils.criteria.BaseCriteria; -import de.symeda.sormas.api.common.CoreEntityType; import de.symeda.sormas.backend.deletionconfiguration.DeletionConfiguration; import de.symeda.sormas.backend.deletionconfiguration.DeletionConfigurationService; import de.symeda.sormas.backend.feature.FeatureConfigurationFacadeEjb; import de.symeda.sormas.backend.user.UserService; import de.symeda.sormas.backend.util.Pseudonymizer; -import de.symeda.sormas.backend.util.QueryHelper; public abstract class AbstractCoreFacadeEjb, CRITERIA extends BaseCriteria> extends AbstractBaseEjb @@ -91,8 +93,8 @@ public List getAllAfter(Date date, Integer batchSize, String lastSynchroniz .collect(Collectors.toList()); } - @Override - public DTO save(@Valid @NotNull DTO dto) { + @DenyAll + public DTO doSave(@Valid @NotNull DTO dto) { ADO existingAdo = dto.getUuid() != null ? service.getByUuid(dto.getUuid()) : null; if (existingAdo != null && !service.getEditPermissionType(existingAdo).equals(EditPermissionType.ALLOWED)) { @@ -116,6 +118,7 @@ public boolean exists(String uuid) { return service.exists(uuid); } + @DenyAll public void delete(String uuid) { ADO ado = service.getByUuid(uuid); service.delete(ado); @@ -132,34 +135,51 @@ public DTO convertToDto(ADO source, Pseudonymizer pseudonymizer) { return dto; } - public void executeAutomaticDeletion(DeletionConfiguration entityConfig) { + public List getUuidsForAutomaticDeletion(DeletionConfiguration entityConfig) { CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(adoClass); + CriteriaQuery cq = cb.createQuery(String.class); Root from = cq.from(adoClass); Date referenceDeletionDate = DateHelper.subtractDays(new Date(), entityConfig.getDeletionPeriod()); - cq.where(cb.lessThanOrEqualTo(from.get(getDeleteReferenceField(entityConfig.getDeletionReference())), referenceDeletionDate)); - List toDeleteEntities = QueryHelper.getResultList(em, cq, null, null); + Predicate filter = cb.lessThanOrEqualTo(from.get(getDeleteReferenceField(entityConfig.getDeletionReference())), referenceDeletionDate); + if (entityConfig.getDeletionReference() == DeletionReference.MANUAL_DELETION) { + filter = CriteriaBuilderHelper.and(cb, filter, cb.isTrue(from.get(DeletableAdo.DELETED))); + } + cq.where(filter); + + cq.select(from.get(DeletableAdo.UUID)); + cq.distinct(true); - toDeleteEntities.forEach(ado -> service.delete(ado)); + List toDeleteUuids = em.createQuery(cq).getResultList(); + return toDeleteUuids; } - public void executePermanentDeletion(int batchSize) { - if (featureConfigurationFacade.isFeatureEnabled(FeatureType.DELETE_PERMANENT)) { - service.executePermanentDeletion(batchSize); - } else { - throw new UnsupportedOperationException("Permanent deletion is not activated!"); - } + @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) + public void doAutomaticDeletion(List toDeleteUuids, boolean deletePermanent) { + + toDeleteUuids.forEach(uuid -> { + ADO ado = service.getByUuid(uuid); + if (deletePermanent) { + service.deletePermanent(ado); + } else { + service.delete(ado); + } + }); } @Override public AutomaticDeletionInfoDto getAutomaticDeletionInfo(String uuid) { + DeletionConfiguration deletionConfiguration = deletionConfigurationService.getCoreEntityTypeConfig(getCoreEntityType()); - if (deletionConfiguration.getDeletionPeriod() == null || deletionConfiguration.getDeletionReference() == null) { + + if (deletionConfiguration == null + || deletionConfiguration.getDeletionPeriod() == null + || deletionConfiguration.getDeletionReference() == null) { return null; } + Object[] deletionData = getDeletionData(uuid, deletionConfiguration); Date referenceDate = (Date) deletionData[0]; Date deletiondate = DateHelper.addDays(referenceDate, deletionConfiguration.getDeletionPeriod()); @@ -167,10 +187,12 @@ public AutomaticDeletionInfoDto getAutomaticDeletionInfo(String uuid) { } protected String getDeleteReferenceField(DeletionReference deletionReference) { + switch (deletionReference) { case CREATION: return AbstractDomainObject.CREATION_DATE; case END: + case MANUAL_DELETION: return AbstractDomainObject.CHANGE_DATE; default: throw new IllegalArgumentException("deletion reference " + deletionReference + " not supported in " + getClass().getSimpleName()); @@ -201,14 +223,17 @@ private Object[] getDeletionData(String uuid, DeletionConfiguration entityConfig public abstract void validate(DTO dto) throws ValidationRuntimeException; + @DenyAll public void archive(String entityUuid, Date endOfProcessingDate) { service.archive(entityUuid, endOfProcessingDate); } + @DenyAll public void archive(List entityUuids) { service.archive(entityUuids); } + @DenyAll public void dearchive(List entityUuids, String dearchiveReason) { service.dearchive(entityUuids, dearchiveReason); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractDeletableAdoService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractDeletableAdoService.java index 5036f791db9..da1feb1217d 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractDeletableAdoService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/AbstractDeletableAdoService.java @@ -7,8 +7,6 @@ import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Predicate; -import de.symeda.sormas.backend.util.IterableHelper; - public abstract class AbstractDeletableAdoService extends AdoServiceWithUserFilter { protected AbstractDeletableAdoService(Class elementClass) { @@ -22,13 +20,6 @@ public void delete(ADO ado) { em.flush(); } - public void executePermanentDeletion(int batchSize) { - IterableHelper.executeBatched( - getAllUuids((cb, root) -> cb.isTrue(root.get(DeletableAdo.DELETED))), - batchSize, - batchedUuids -> deletePermanent(batchedUuids)); - } - protected Predicate changeDateFilter(CriteriaBuilder cb, Timestamp date, From path, String... joinFields) { From parent = path; for (String joinField : joinFields) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/BaseAdoService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/BaseAdoService.java index adda3c6f337..84f39be4f12 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/BaseAdoService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/BaseAdoService.java @@ -44,12 +44,12 @@ import javax.persistence.criteria.Subquery; import javax.validation.constraints.NotNull; -import de.symeda.sormas.api.user.UserRight; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import de.symeda.sormas.api.EntityDto; import de.symeda.sormas.api.ReferenceDto; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.backend.user.CurrentUserService; import de.symeda.sormas.backend.user.User; @@ -316,8 +316,8 @@ public void deletePermanent(ADO ado) { } @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) - protected void deletePermanent(List uuids) { - uuids.forEach(uuid-> deletePermanent(getByUuid(uuid))); + public void deletePermanentByUuids(List uuids) { + uuids.forEach(uuid -> deletePermanent(getByUuid(uuid))); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/ConfigFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/ConfigFacadeEjb.java index d41afbd0fd7..3f5d877eee3 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/ConfigFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/ConfigFacadeEjb.java @@ -168,7 +168,7 @@ public class ConfigFacadeEjb implements ConfigFacade { private static final String STEP_SIZE_FOR_CSV_EXPORT = "stepSizeForCsvExport"; private static final String UI_URL = "ui.url"; - private static final String SORMAS_STATS_URL = "sormasStats.url"; + public static final String SORMAS_STATS_URL = "sormasStats.url"; private static final String DOCUMENT_UPLOAD_SIZE_LIMIT_MB = "documentUploadSizeLimitMb"; public static final int DEFAULT_DOCUMENT_UPLOAD_SIZE_LIMIT_MB = 20; @@ -561,46 +561,69 @@ public void validateConfigUrls() { SymptomJournalConfig symptomJournalConfig = getSymptomJournalConfig(); PatientDiaryConfig patientDiaryConfig = getPatientDiaryConfig(); - List urls = Lists.newArrayList( + List enforceHttps = Lists.newArrayList( + s2sConfig.getOidcServer(), symptomJournalConfig.getUrl(), symptomJournalConfig.getAuthUrl(), patientDiaryConfig.getUrl(), patientDiaryConfig.getProbandsUrl(), patientDiaryConfig.getAuthUrl(), patientDiaryConfig.getFrontendAuthUrl(), - getSormasStatsUrl(), - s2sConfig.getOidcServer(), - getExternalSurveillanceToolGatewayUrl(), getAppUrl(), getUiUrl()); - // getGeocodingServiceUrlTemplate() and getMapTilersUrl() contain special chars and are ignored + List allowHttp = Lists.newArrayList(getExternalSurveillanceToolGatewayUrl(), getSormasStatsUrl()); // separately as they are interpolated if (!StringUtils.isBlank(s2sConfig.getOidcServer())) { - urls.add(s2sConfig.getOidcRealmCertEndpoint()); - urls.add(s2sConfig.getOidcRealmTokenEndpoint()); + enforceHttps.add(s2sConfig.getOidcRealmCertEndpoint()); + enforceHttps.add(s2sConfig.getOidcRealmTokenEndpoint()); if (!StringUtils.isBlank(s2sConfig.getOidcRealm())) { - urls.add(s2sConfig.getOidcRealmUrl()); + enforceHttps.add(s2sConfig.getOidcRealmUrl()); } } - UrlValidator urlValidator = new UrlValidator( + UrlValidator enforceHttpsValidator = new UrlValidator( new String[] { - "http", "https" }, UrlValidator.ALLOW_LOCAL_URLS); - List invalidUrls = - urls.stream().filter(u -> !StringUtils.isBlank(u)).filter(u -> !urlValidator.isValid(u)).collect(Collectors.toList()); + List invalidHttpsUrls = + enforceHttps.stream().filter(u -> !StringUtils.isBlank(u)).filter(u -> !enforceHttpsValidator.isValid(u)).collect(Collectors.toList()); + if (!invalidHttpsUrls.isEmpty()) { + String invalid = String.join(",\n\t", invalidHttpsUrls); + throw new IllegalArgumentException(String.format("Invalid URLs for which HTTPS is enforced in property file:\n\t%s", invalid)); + } + + UrlValidator allowHttpValidator = new UrlValidator( + new String[] { + "https", + "http" }, + UrlValidator.ALLOW_LOCAL_URLS); + List invalidUrls = + allowHttp.stream().filter(u -> !StringUtils.isBlank(u)).filter(u -> !allowHttpValidator.isValid(u)).collect(Collectors.toList()); if (!invalidUrls.isEmpty()) { String invalid = String.join(",\n\t", invalidUrls); throw new IllegalArgumentException(String.format("Invalid URLs in property file:\n\t%s", invalid)); } + String geocodingUrl = getGeocodingServiceUrlTemplate(); + if (!StringUtils.isBlank(geocodingUrl)) { + if (!geocodingUrl.startsWith("https://")) { + throw new IllegalArgumentException("geocodingServiceUrlTemplate property is required to be HTTPS"); + } + } + + String mapTilersUrl = getMapTilersUrl(); + if (!StringUtils.isBlank(mapTilersUrl)) { + if (!mapTilersUrl.startsWith("https://")) { + throw new IllegalArgumentException("map.tiles.url property is required to be HTTPS"); + } + } + } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/CronService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/CronService.java index e99ad3ee83f..314b86d35e6 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/CronService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/CronService.java @@ -222,11 +222,6 @@ public void deleteExpiredEntities() { coreEntityDeletionService.executeAutomaticDeletion(); } - @Schedule(hour = "2", minute = "10", persistent = false) - public void permanentDeleteEntities() { - coreEntityDeletionService.executePermanentDeletion(); - } - @Schedule(hour = "2", minute = "15", persistent = false) public void archiveContacts() { final int daysAfterContactsGetsArchived = featureConfigurationFacade diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/DeletableAdo.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/DeletableAdo.java index 78a36a2696e..a02a7341649 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/DeletableAdo.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/DeletableAdo.java @@ -20,12 +20,13 @@ public abstract class DeletableAdo extends AbstractDomainObject { private boolean deleted; - public void setDeleted(boolean deleted) { - this.deleted = deleted; - } - @Column public boolean isDeleted() { return deleted; } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryContext.java index ac3734fd7ac..48e444d1052 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryContext.java @@ -19,17 +19,16 @@ import de.symeda.sormas.api.person.PersonContactDetailType; import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.person.PersonContactDetail; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public abstract class QueryContext { +public abstract class QueryContext> { private CriteriaQuery query; private CriteriaBuilder criteriaBuilder; private From root; - private AbstractDomainObjectJoins joins; + private J joins; private Map> subqueryExpressions; - public QueryContext(CriteriaBuilder cb, CriteriaQuery query, From root, AbstractDomainObjectJoins joins) { + public QueryContext(CriteriaBuilder cb, CriteriaQuery query, From root, J joins) { this.root = root; this.joins = joins; this.subqueryExpressions = new HashMap<>(); @@ -63,7 +62,7 @@ public CriteriaBuilder getCriteriaBuilder() { return criteriaBuilder; } - public AbstractDomainObjectJoins getJoins() { + public J getJoins() { return joins; } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/util/AbstractDomainObjectJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryJoins.java similarity index 60% rename from sormas-backend/src/main/java/de/symeda/sormas/backend/util/AbstractDomainObjectJoins.java rename to sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryJoins.java index bbf2f03112e..2a11a8a7ef9 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/util/AbstractDomainObjectJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/QueryJoins.java @@ -1,22 +1,21 @@ -package de.symeda.sormas.backend.util; +package de.symeda.sormas.backend.common; import java.util.function.Consumer; +import java.util.function.Supplier; import javax.persistence.criteria.From; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; -import de.symeda.sormas.backend.common.AbstractDomainObject; +public class QueryJoins { -public class AbstractDomainObjectJoins { + private From root; - private From root; - - public AbstractDomainObjectJoins(From root) { + public QueryJoins(From root) { this.root = root; } - public From getRoot() { + public From getRoot() { return root; } @@ -35,4 +34,17 @@ protected Join getOrCreate(Join join, String attribute, JoinT return join; } + + protected > J getOrCreate(J joins, Supplier joinsSupplier, Consumer setValue) { + + final J result; + if (joins == null) { + result = joinsSupplier.get(); + setValue.accept(result); + } else { + result = joins; + } + + return result; + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java index 117c3f165a2..a7f76d07a01 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java @@ -74,7 +74,7 @@ import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DefaultEntityHelper; import de.symeda.sormas.api.utils.PasswordHelper; -import de.symeda.sormas.backend.audit.AuditLogger; +import de.symeda.sormas.backend.audit.AuditLoggerEjb; import de.symeda.sormas.backend.common.ConfigFacadeEjb.ConfigFacadeEjbLocal; import de.symeda.sormas.backend.contact.Contact; import de.symeda.sormas.backend.contact.ContactService; @@ -173,7 +173,7 @@ public class StartupShutdownService { @EJB private DeletionConfigurationService deletionConfigurationService; @EJB - AuditLogger auditLogger; + AuditLoggerEjb.AuditLoggerEjbLocal auditLogger; @Inject private Event passwordResetEvent; @@ -229,7 +229,7 @@ public void startup() { createImportTemplateFiles(featureConfigurationFacade.getActiveServerFeatureConfigurations()); - deletionConfigurationService.createMissingDeletionConfiguration(); + deletionConfigurationService.createMissingDeletionConfigurations(); configFacade.validateAppUrls(); configFacade.validateConfigUrls(); @@ -567,7 +567,7 @@ private void createOrUpdateDefaultUser(Set userRoles, String username, existingUser.setSeed(PasswordHelper.createPass(16)); existingUser.setPassword(PasswordHelper.encodePassword(password, existingUser.getSeed())); existingUser.setUserRoles(userRoles); - + userService.persist(existingUser); passwordResetEvent.fire(new PasswordResetEvent(existingUser)); } else if (userRoles.stream().anyMatch(r -> !existingUser.getUserRoles().contains(r)) diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/Contact.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/Contact.java index f6c5dba24aa..0b21c56d321 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/Contact.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/Contact.java @@ -76,7 +76,7 @@ import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.visit.Visit; -@Entity +@Entity(name = "contact") @Audited public class Contact extends CoreAdo implements SormasToSormasShareable, HasExternalData { @@ -166,6 +166,7 @@ public class Contact extends CoreAdo implements SormasToSormasShareable, HasExte public static final String TRACING_APP_DETAILS = "tracingAppDetails"; public static final String VACCINATION_STATUS = "vaccinationStatus"; public static final String VISITS = "visits"; + public static final String DUPLICATE_OF = "duplicateOf"; private Date reportDateTime; private User reportingUser; @@ -949,10 +950,10 @@ public void setHealthConditions(HealthConditions healthConditions) { @Override @ManyToOne(cascade = { - CascadeType.PERSIST, - CascadeType.MERGE, - CascadeType.DETACH, - CascadeType.REFRESH }) + CascadeType.PERSIST, + CascadeType.MERGE, + CascadeType.DETACH, + CascadeType.REFRESH }) @AuditedIgnore public SormasToSormasOriginInfo getSormasToSormasOriginInfo() { return sormasToSormasOriginInfo; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactFacadeEjb.java index b0a5f6de858..e63b7da1900 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactFacadeEjb.java @@ -17,7 +17,6 @@ *******************************************************************************/ package de.symeda.sormas.backend.contact; -import static de.symeda.sormas.backend.sormastosormas.entities.contact.SormasToSormasContactFacadeEjb.SormasToSormasContactFacadeEjbLocal; import static de.symeda.sormas.backend.visit.VisitLogic.getVisitResult; import static java.time.temporal.ChronoUnit.DAYS; @@ -31,13 +30,13 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.stream.Collectors; @@ -64,6 +63,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; +import de.symeda.sormas.backend.vaccination.VaccinationService; import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -181,6 +181,7 @@ import de.symeda.sormas.backend.sample.SampleFacadeEjb.SampleFacadeEjbLocal; import de.symeda.sormas.backend.sample.SampleService; import de.symeda.sormas.backend.sormastosormas.SormasToSormasFacadeEjb.SormasToSormasFacadeEjbLocal; +import de.symeda.sormas.backend.sormastosormas.entities.contact.SormasToSormasContactFacadeEjb.SormasToSormasContactFacadeEjbLocal; import de.symeda.sormas.backend.sormastosormas.origin.SormasToSormasOriginInfoFacadeEjb; import de.symeda.sormas.backend.sormastosormas.origin.SormasToSormasOriginInfoFacadeEjb.SormasToSormasOriginInfoFacadeEjbLocal; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.ShareInfoHelper; @@ -266,6 +267,10 @@ public class ContactFacadeEjb private VaccinationFacadeEjb.VaccinationFacadeEjbLocal vaccinationFacade; @EJB private HealthConditionsMapper healthConditionsMapper; + @EJB + private VaccinationService vaccinationService; + @EJB + private ContactService contactService; @Resource private ManagedScheduledExecutorService executorService; @@ -327,6 +332,9 @@ public ContactDto save(@Valid ContactDto dto, boolean handleChanges, boolean han return save(dto, handleChanges, handleCaseChanges, true, true); } + @RolesAllowed({ + UserRight._CONTACT_CREATE, + UserRight._CONTACT_EDIT }) public CoreAndPersonDto save(@Valid @NotNull CoreAndPersonDto coreAndPersonDto) throws ValidationRuntimeException { ContactDto contactDto = coreAndPersonDto.getCoreData(); CoreAndPersonDto savedCoreAndPersonDto = new CoreAndPersonDto(); @@ -340,6 +348,9 @@ public CoreAndPersonDto save(@Valid @NotNull CoreAndPersonDto { sormasToSormasContactFacade.syncShares(criteria); @@ -514,11 +529,6 @@ public Page getIndexDetailedPage( @Override @RolesAllowed(UserRight._CONTACT_DELETE) public void delete(String contactUuid) { - - if (!userService.hasRight(UserRight.CONTACT_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete contacts."); - } - Contact contact = service.getByUuid(contactUuid); deleteContact(contact); } @@ -533,9 +543,6 @@ private void deleteContact(Contact contact) { @RolesAllowed(UserRight._CONTACT_DELETE) public List deleteContacts(List contactUuids) { - if (!userService.hasRight(UserRight.CONTACT_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete contacts."); - } List deletedContactUuids = new ArrayList<>(); List contactsToBeDeleted = service.getByUuids(contactUuids); if (contactsToBeDeleted != null) { @@ -583,7 +590,7 @@ public List getExportList( final Root contact = cq.from(Contact.class); final ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, contact); - final ContactJoins joins = (ContactJoins) contactQueryContext.getJoins(); + final ContactJoins joins = contactQueryContext.getJoins(); cq.multiselect( contact.get(Contact.ID), @@ -648,10 +655,10 @@ public List getExportList( joins.getAddressFacility().get(Facility.NAME), joins.getAddressFacility().get(Facility.UUID), joins.getAddress().get(Location.FACILITY_DETAILS), - ((Expression) contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY)), - ((Expression) contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_OWNER_SUBQUERY)), - ((Expression) contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_EMAIL_SUBQUERY)), - ((Expression) contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_OTHER_CONTACT_DETAILS_SUBQUERY)), + contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), + contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_OWNER_SUBQUERY), + contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_EMAIL_SUBQUERY), + contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_OTHER_CONTACT_DETAILS_SUBQUERY), joins.getPerson().get(Person.OCCUPATION_TYPE), joins.getPerson().get(Person.OCCUPATION_DETAILS), joins.getPerson().get(Person.ARMED_FORCES_RELATION_TYPE), @@ -704,7 +711,7 @@ public List getExportList( ContactExportDto.LAST_COOPERATIVE_VISIT_SYMPTOMS)) { CriteriaQuery visitsCq = cb.createQuery(VisitSummaryExportDetails.class); Root visitsCqRoot = visitsCq.from(Contact.class); - ContactJoins visitContactJoins = new ContactJoins(visitsCqRoot); + ContactJoins visitContactJoins = new ContactJoins(visitsCqRoot); visitsCq.where( CriteriaBuilderHelper @@ -834,16 +841,15 @@ public List getExportList( filteredImmunizations.sort(Comparator.comparing(i -> ImmunizationEntityHelper.getDateForComparison(i, false))); Immunization mostRecentImmunization = filteredImmunizations.get(filteredImmunizations.size() - 1); Integer numberOfDoses = mostRecentImmunization.getNumberOfDoses(); - exportContact.setNumberOfDoses(numberOfDoses != null ? String.valueOf(numberOfDoses) : ""); - if (CollectionUtils.isNotEmpty(mostRecentImmunization.getVaccinations())) { - List sortedVaccinations = mostRecentImmunization.getVaccinations() - .stream() - .sorted(Comparator.comparing(ImmunizationEntityHelper::getVaccinationDateForComparison)) - .collect(Collectors.toList()); - Vaccination firstVaccination = sortedVaccinations.get(0); - Vaccination lastVaccination = sortedVaccinations.get(sortedVaccinations.size() - 1); + List relevantSortedVaccinations = + getRelevantSortedVaccinations(exportContact.getUuid(), mostRecentImmunization.getVaccinations()); + Vaccination firstVaccination = null; + Vaccination lastVaccination = null; + if (CollectionUtils.isNotEmpty(relevantSortedVaccinations)) { + firstVaccination = relevantSortedVaccinations.get(0); + lastVaccination = relevantSortedVaccinations.get(relevantSortedVaccinations.size() - 1); exportContact.setFirstVaccinationDate(firstVaccination.getVaccinationDate()); exportContact.setLastVaccinationDate(lastVaccination.getVaccinationDate()); exportContact.setVaccineName(lastVaccination.getVaccineName()); @@ -856,6 +862,9 @@ public List getExportList( exportContact.setVaccineUniiCode(lastVaccination.getVaccineUniiCode()); exportContact.setVaccineInn(lastVaccination.getVaccineInn()); } + + exportContact.setNumberOfDoses( + numberOfDoses != null ? String.valueOf(numberOfDoses) : getNumberOfDosesFromVaccinations(lastVaccination)); } }); } @@ -922,7 +931,7 @@ public List getVisitSummaryExportList( final CriteriaQuery cq = cb.createQuery(VisitSummaryExportDto.class); final Root contactRoot = cq.from(Contact.class); final ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, contactRoot); - final ContactJoins contactJoins = (ContactJoins) contactQueryContext.getJoins(); + final ContactJoins contactJoins = contactQueryContext.getJoins(); final Join contactPerson = contactJoins.getPerson(); cq.multiselect( @@ -948,7 +957,7 @@ cb. selectCase() CriteriaQuery visitsCq = cb.createQuery(VisitSummaryExportDetails.class); Root visitsCqRoot = visitsCq.from(Contact.class); - ContactJoins joins = new ContactJoins(visitsCqRoot); + ContactJoins joins = new ContactJoins(visitsCqRoot); visitsCq.where( CriteriaBuilderHelper @@ -1053,7 +1062,7 @@ public List getContactFollowUpList( Root contact = cq.from(Contact.class); final ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, contact); - final ContactJoins joins = (ContactJoins) contactQueryContext.getJoins(); + final ContactJoins joins = contactQueryContext.getJoins(); cq.multiselect( contact.get(Contact.UUID), @@ -1170,7 +1179,7 @@ private Expression jurisdictionSelector(ContactQueryContext qc) { } @Override - public FollowUpPeriodDto calculateFollowUpUntilDate(ContactDto contactDto, boolean ignoreOverwrite) { + public FollowUpPeriodDto getCalculatedFollowUpUntilDate(ContactDto contactDto, boolean ignoreOverwrite) { return ContactLogic.calculateFollowUpUntilDate( contactDto, ContactLogic.getFollowUpStartDate(contactDto, sampleFacade.getByContactUuids(Collections.singletonList(contactDto.getUuid()))), @@ -1285,32 +1294,17 @@ public int[] getContactCountsByCasesForDashboard(List contactIds) { @Override public int getNonSourceCaseCountForDashboard(List caseUuids) { - if (CollectionUtils.isEmpty(caseUuids)) { - // Avoid empty IN clause - return 0; - } else if (caseUuids.size() > ModelConstants.PARAMETER_LIMIT) { - List countResults = new LinkedList<>(); - IterableHelper.executeBatched(caseUuids, ModelConstants.PARAMETER_LIMIT, batchedCaseUuids -> { - Query query = em.createNativeQuery( - String.format( - "SELECT DISTINCT count(case1_.id) FROM contact AS contact0_ LEFT OUTER JOIN cases AS case1_ ON (contact0_.%s_id = case1_.id) WHERE case1_.%s IN (:uuidList)", - Contact.RESULTING_CASE.toLowerCase(), - Case.UUID)); - query.setParameter("uuidList", batchedCaseUuids); - countResults.add((BigInteger) query.getSingleResult()); - }); - return countResults.stream().collect(Collectors.summingInt(BigInteger::intValue)); - } else { + AtomicInteger totalCount = new AtomicInteger(); + IterableHelper.executeBatched(caseUuids, ModelConstants.PARAMETER_LIMIT, batchedCaseUuids -> { Query query = em.createNativeQuery( String.format( "SELECT DISTINCT count(case1_.id) FROM contact AS contact0_ LEFT OUTER JOIN cases AS case1_ ON (contact0_.%s_id = case1_.id) WHERE case1_.%s IN (:uuidList)", Contact.RESULTING_CASE.toLowerCase(), Case.UUID)); - query.setParameter("uuidList", caseUuids); - BigInteger count = (BigInteger) query.getSingleResult(); - return count.intValue(); - } - + query.setParameter("uuidList", batchedCaseUuids); + totalCount.addAndGet(((BigInteger) query.getSingleResult()).intValue()); + }); + return totalCount.get(); } public Contact fillOrBuildEntity(@NotNull ContactDto source, Contact target, boolean checkChangeDate) { @@ -1791,6 +1785,19 @@ private Task createContactTask(TaskType taskType, LocalDateTime fromDateTime, Lo return task; } + private void validateUserRights(ContactDto contact, ContactDto existingContact) { + if (existingContact != null) { + if (!DataHelper.isSame(contact.getCaze(), existingContact.getCaze()) + && !(userService.hasRight(UserRight.CONTACT_REASSIGN_CASE) || userService.hasRight(UserRight.EXTERNAL_VISITS))) { + throw new AccessDeniedException( + String.format( + I18nProperties.getString(Strings.errorNoRightsForChangingField), + I18nProperties.getPrefixCaption(ContactDto.I18N_PREFIX, ContactDto.CAZE))); + + } + } + } + @Override public void validate(ContactDto contact) throws ValidationRuntimeException { @@ -1824,7 +1831,7 @@ public List getMatchingContacts(ContactSimilarityCriteria cri cq.distinct(true); ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, contactRoot); - ContactJoins joins = (ContactJoins) contactQueryContext.getJoins(); + ContactJoins joins = contactQueryContext.getJoins(); List> selections = new ArrayList<>( Arrays.asList( @@ -1979,13 +1986,21 @@ public void mergeContact(String leadUuid, String otherUuid) { } private void copyDtoValues(ContactDto leadContactDto, ContactDto otherContactDto) { - String leadAdditionalDetails = leadContactDto.getAdditionalDetails(); - String leadFollowUpComment = leadContactDto.getFollowUpComment(); DtoHelper.copyDtoValues(leadContactDto, otherContactDto, false); - leadContactDto.setAdditionalDetails(DataHelper.joinStrings(" ", leadAdditionalDetails, otherContactDto.getAdditionalDetails())); - leadContactDto.setFollowUpComment(DataHelper.joinStrings(" ", leadFollowUpComment, otherContactDto.getFollowUpComment())); + final String leadAdditionalDetails = leadContactDto.getAdditionalDetails(); + final String leadFollowUpComment = leadContactDto.getFollowUpComment(); + final String otherAdditionalDetails = otherContactDto.getAdditionalDetails(); + final String otherFollowUpComment = otherContactDto.getFollowUpComment(); + leadContactDto.setAdditionalDetails( + leadAdditionalDetails != null && leadAdditionalDetails.equals(otherAdditionalDetails) + ? leadAdditionalDetails + : DataHelper.joinStrings(" ", leadAdditionalDetails, otherAdditionalDetails)); + leadContactDto.setFollowUpComment( + leadFollowUpComment != null && leadFollowUpComment.equals(otherFollowUpComment) + ? leadFollowUpComment + : DataHelper.joinStrings(" ", leadFollowUpComment, otherFollowUpComment)); } @Override @@ -2143,22 +2158,6 @@ private void selectMergeIndexDtoFields(CriteriaBuilder cb, CriteriaQuery externalData) throws } @Override + @RolesAllowed(UserRight._CONTACT_EDIT) public int saveBulkContacts( List contactUuidlist, ContactBulkEditData updatedContactBulkEditData, @@ -2253,6 +2253,19 @@ private User getRandomDistrictContactResponsible(District district) { return userService.getRandomDistrictUser(district, UserRight.CONTACT_RESPONSIBLE); } + private List getRelevantSortedVaccinations(String caseUuid, List vaccinations) { + Contact contact = contactService.getByUuid(caseUuid); + + return vaccinations.stream() + .filter(v -> vaccinationService.isVaccinationRelevant(contact, v)) + .sorted(Comparator.comparing(ImmunizationEntityHelper::getVaccinationDateForComparison)) + .collect(Collectors.toList()); + } + + private String getNumberOfDosesFromVaccinations(Vaccination vaccination) { + return vaccination != null ? vaccination.getVaccineDose() : ""; + } + public User getRandomRegionContactResponsible(Region region) { return userService.getRandomRegionUser(region, UserRight.CONTACT_RESPONSIBLE); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJoins.java index ca7f92cbb98..1110b0556a2 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJoins.java @@ -20,7 +20,9 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; import de.symeda.sormas.backend.clinicalcourse.HealthConditions; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.epidata.EpiData; import de.symeda.sormas.backend.event.Event; import de.symeda.sormas.backend.event.EventParticipant; @@ -32,64 +34,45 @@ import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.location.Location; import de.symeda.sormas.backend.person.Person; +import de.symeda.sormas.backend.person.PersonJoins; import de.symeda.sormas.backend.sample.Sample; +import de.symeda.sormas.backend.sample.SampleJoins; import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; import de.symeda.sormas.backend.visit.Visit; +import de.symeda.sormas.backend.visit.VisitJoins; -public class ContactJoins extends AbstractDomainObjectJoins { +public class ContactJoins extends QueryJoins { private Join person; -// private CaseJoins caseJoins; private Join caze; private Join resultingCase; - private Join casePerson; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseHealthFacility; - private Join caseasePointOfEntry; + private Join contactOfficer; - private Join address; private Join region; private Join district; private Join community; private Join reportingUser; - private Join addressRegion; - private Join addressDistrict; - private Join addressCommunity; - private Join addressFacility; - private Join occupationFacility; private Join epiData; - private Join eventParticipants; - private Join caseEventParticipants; private Join event; private Join caseEvent; private Join samples; - private Join sampleLabs; private Join visits; - private Join visitSymptoms; private Join healthConditions; - private Join personAddress; - - private Join personBirthCountry; - private Join personCitizenship; private Join reportingDistrict; private Join followUpStatusChangeUser; - public ContactJoins(From contact) { - super(contact); + private CaseJoins caseJoins; + private PersonJoins personJoins; + private SampleJoins sampleJoins; + private VisitJoins visitJoins; -// this.caseJoins = new CaseJoins<>(contact.join(Contact.CAZE)); + public ContactJoins(From contact) { + super(contact); } public Join getPerson() { @@ -117,83 +100,43 @@ private void setResultingCase(Join resultingCase) { } public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getCaze(), this::setCasePerson); - } - - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; + return getCaseJoins().getPerson(); } public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCaze(), this::setCaseReportingUser); - } - - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; + return getCaseJoins().getReportingUser(); } public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCaze(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + return getCaseJoins().getResponsibleRegion(); } public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCaze(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + return getCaseJoins().getResponsibleDistrict(); } public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + return getCaseJoins().getResponsibleCommunity(); } public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCaze(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + return getCaseJoins().getRegion(); } public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCaze(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + return getCaseJoins().getDistrict(); } public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; + return getCaseJoins().getCommunity(); } public Join getCaseHealthFacility() { - return getOrCreate(caseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCaze(), this::setCaseHealthFacility); - } - - private void setCaseHealthFacility(Join caseHealthFacility) { - this.caseHealthFacility = caseHealthFacility; + return getCaseJoins().getFacility(); } public Join getCaseasePointOfEntry() { - return getOrCreate(caseasePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCaze(), this::setCaseasePointOfEntry); - } - - private void setCaseasePointOfEntry(Join caseasePointOfEntry) { - this.caseasePointOfEntry = caseasePointOfEntry; + return getCaseJoins().getPointOfEntry(); } public Join getContactOfficer() { @@ -205,11 +148,7 @@ private void setContactOfficer(Join contactOfficer) { } public Join getAddress() { - return getOrCreate(address, Person.ADDRESS, JoinType.LEFT, getPerson(), this::setAddress); - } - - private void setAddress(Join address) { - this.address = address; + return getPersonJoins().getAddress(); } public Join getRegion() { @@ -245,35 +184,19 @@ private void setReportingUser(Join reportingUser) { } public Join getAddressRegion() { - return getOrCreate(addressRegion, Location.REGION, JoinType.LEFT, getAddress(), this::setAddressRegion); - } - - private void setAddressRegion(Join addressRegion) { - this.addressRegion = addressRegion; + return getPersonJoins().getAddressJoins().getRegion(); } public Join getAddressDistrict() { - return getOrCreate(addressDistrict, Location.DISTRICT, JoinType.LEFT, getAddress(), this::setAddressDistrict); - } - - private void setAddressDistrict(Join addressDistrict) { - this.addressDistrict = addressDistrict; + return getPersonJoins().getAddressJoins().getDistrict(); } public Join getAddressCommunity() { - return getOrCreate(addressCommunity, Location.COMMUNITY, JoinType.LEFT, getAddress(), this::setAddressCommunity); - } - - private void setAddressCommunity(Join addressCommunity) { - this.addressCommunity = addressCommunity; + return getPersonJoins().getAddressJoins().getCommunity(); } public Join getAddressFacility() { - return getOrCreate(addressFacility, Location.FACILITY, JoinType.LEFT, getAddress(), this::setAddressFacility); - } - - private void setAddressFacility(Join addressFacility) { - this.addressFacility = addressFacility; + return getPersonJoins().getAddressJoins().getFacility(); } public Join getEpiData() { @@ -293,11 +216,7 @@ private void setVisits(Join visits) { } public Join getVisitSymptoms() { - return getOrCreate(visitSymptoms, Visit.SYMPTOMS, JoinType.LEFT, getVisits(), this::setVisitSymptoms); - } - - private void setVisitSymptoms(Join visitSymptoms) { - this.visitSymptoms = visitSymptoms; + return getVisitJoins().getSymptoms(); } public Join getHealthConditions() { @@ -308,28 +227,12 @@ public void setHealthConditions(Join healthConditions this.healthConditions = healthConditions; } - public Join getPersonAddress() { - return getOrCreate(personAddress, Person.ADDRESS, JoinType.LEFT, getPerson(), this::setPersonAddress); - } - - private void setPersonAddress(Join personAddress) { - this.personAddress = personAddress; - } - - private void setEventParticipants(Join eventParticipants) { - this.eventParticipants = eventParticipants; - } - public Join getEventParticipants() { - return getOrCreate(eventParticipants, Person.EVENT_PARTICIPANTS, JoinType.LEFT, getPerson(), this::setEventParticipants); - } - - private void setCaseEventParticipants(Join caseEventParticipants) { - this.caseEventParticipants = caseEventParticipants; + return getPersonJoins().getEventParticipant(); } public Join getCaseEventParticipants() { - return getOrCreate(caseEventParticipants, Case.EVENT_PARTICIPANTS, JoinType.LEFT, getCaze(), this::setCaseEventParticipants); + return getCaseJoins().getEventParticipants(); } private void setEvent(Join event) { @@ -349,19 +252,11 @@ public Join getCaseEvent() { } public Join getPersonBirthCountry() { - return getOrCreate(personBirthCountry, Person.BIRTH_COUNTRY, JoinType.LEFT, getPerson(), this::setPersonBirthCountry); - } - - private void setPersonBirthCountry(Join personBirthCountry) { - this.personBirthCountry = personBirthCountry; + return getPersonJoins().getBirthCountry(); } public Join getPersonCitizenship() { - return getOrCreate(personCitizenship, Person.CITIZENSHIP, JoinType.LEFT, getPerson(), this::setPersonCitizenship); - } - - public void setPersonCitizenship(Join personCitizenship) { - this.personCitizenship = personCitizenship; + return getPersonJoins().getCitizenship(); } public Join getReportingDistrict() { @@ -381,11 +276,7 @@ private void setSamples(Join samples) { } public Join getSampleLabs() { - return getOrCreate(sampleLabs, Sample.LAB, JoinType.LEFT, getSamples(), this::setSampleLabs); - } - - private void setSampleLabs(Join sampleLabs) { - this.sampleLabs = sampleLabs; + return getSampleJoins().getLab(); } public Join getFollowUpStatusChangeUser() { @@ -395,4 +286,36 @@ public Join getFollowUpStatusChangeUser() { private void setFollowUpStatusChangeUser(Join followUpStatusChangeUser) { this.followUpStatusChangeUser = followUpStatusChangeUser; } + + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); + } + + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; + } + + public PersonJoins getPersonJoins() { + return getOrCreate(personJoins, () -> new PersonJoins(getPerson()), this::setPersonJoins); + } + + private void setPersonJoins(PersonJoins personJoins) { + this.personJoins = personJoins; + } + + public SampleJoins getSampleJoins() { + return getOrCreate(sampleJoins, () -> new SampleJoins(getSamples()), this::setSampleJoins); + } + + private void setSampleJoins(SampleJoins sampleJoins) { + this.sampleJoins = sampleJoins; + } + + public VisitJoins getVisitJoins() { + return getOrCreate(visitJoins, () -> new VisitJoins(getVisits(), JoinType.LEFT), this::setVisitJoins); + } + + private void setVisitJoins(VisitJoins visitJoins) { + this.visitJoins = visitJoins; + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJurisdictionPredicateValidator.java index a844d4a7414..5a5a3821d8c 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactJurisdictionPredicateValidator.java @@ -37,7 +37,7 @@ public class ContactJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final ContactJoins joins; + private final ContactJoins joins; private final CriteriaQuery cq; private ContactJurisdictionPredicateValidator(ContactQueryContext qc, User user) { @@ -47,9 +47,9 @@ private ContactJurisdictionPredicateValidator(ContactQueryContext qc, User user) null, Collections.singletonList( CaseJurisdictionPredicateValidator - .of(new CaseQueryContext<>(qc.getCriteriaBuilder(), qc.getQuery(), ((ContactJoins) qc.getJoins()).getCaze()), user))); + .of(new CaseQueryContext(qc.getCriteriaBuilder(), qc.getQuery(), (qc.getJoins()).getCaseJoins()), user))); - this.joins = (ContactJoins) qc.getJoins(); + this.joins = qc.getJoins(); this.cq = qc.getQuery(); } @@ -60,9 +60,9 @@ private ContactJurisdictionPredicateValidator(ContactQueryContext qc, Path userP userPath, Collections.singletonList( CaseJurisdictionPredicateValidator - .of(new CaseQueryContext<>(qc.getCriteriaBuilder(), qc.getQuery(), ((ContactJoins) qc.getJoins()).getCaze()), userPath))); + .of(new CaseQueryContext(qc.getCriteriaBuilder(), qc.getQuery(), (qc.getJoins()).getCaseJoins()), userPath))); - this.joins = (ContactJoins) qc.getJoins(); + this.joins = qc.getJoins(); this.cq = qc.getQuery(); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactListCriteriaBuilder.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactListCriteriaBuilder.java index 6a64ebcd650..7f231827906 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactListCriteriaBuilder.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactListCriteriaBuilder.java @@ -108,10 +108,10 @@ public List> getContactIndexSelections(Root contact, Conta JurisdictionHelper.booleanSelector( cb, caseService.inJurisdictionOrOwned( - new CaseQueryContext<>( + new CaseQueryContext( contactQueryContext.getCriteriaBuilder(), contactQueryContext.getQuery(), - ((ContactJoins) contactQueryContext.getJoins()).getCaze())))); + contactQueryContext.getJoins().getCaseJoins())))); } public List> getMergeContactIndexSelections(Root contact, ContactQueryContext contactQueryContext) { @@ -143,7 +143,7 @@ public List> getMergeContactIndexSelections(Root contact, contact.get(Contact.REPORT_DATE_TIME)); } - private List> getIndexOrders(SortProperty sortProperty, Root contact, ContactJoins joins, CriteriaBuilder cb) { + private List> getIndexOrders(SortProperty sortProperty, Root contact, ContactJoins joins, CriteriaBuilder cb) { List> expressions = new ArrayList<>(); switch (sortProperty.propertyName) { @@ -202,7 +202,8 @@ private List> getContactIndexDetailedSelections(Root conta joins.getAddress().get(Location.HOUSE_NUMBER), joins.getAddress().get(Location.ADDITIONAL_INFORMATION), joins.getAddress().get(Location.POSTAL_CODE), - ((Selection) contactQueryContext.getSubqueryExpression(CaseQueryContext.PERSON_PHONE_SUBQUERY)), + contactQueryContext.getSubqueryExpression( + CaseQueryContext.PERSON_PHONE_SUBQUERY), joins.getReportingUser().get(User.FIRST_NAME), joins.getReportingUser().get(User.LAST_NAME), contact.get(Contact.RELATION_TO_CASE)); @@ -214,7 +215,7 @@ private List> getContactIndexDetailedSelections(Root conta private List> getIndexDetailOrders( SortProperty sortProperty, Root contact, - ContactJoins joins, + ContactJoins joins, CriteriaBuilder cb) { switch (sortProperty.propertyName) { @@ -251,7 +252,7 @@ private CriteriaQuery buildIndexCriteria( final CriteriaQuery cq = cb.createQuery(type); final Root contact = cq.from(Contact.class); final ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, contact); - final ContactJoins joins = (ContactJoins) contactQueryContext.getJoins(); + final ContactJoins joins = contactQueryContext.getJoins(); List> selections = new ArrayList<>(selectionProvider.apply(contact, contactQueryContext)); selections.add(cb.size(contact.get(Contact.VISITS))); @@ -304,6 +305,6 @@ public Predicate buildContactFilter(ContactCriteria contactCriteria, ContactQuer private interface OrderExpressionProvider { - List> forProperty(SortProperty sortProperty, Root contact, ContactJoins joins, CriteriaBuilder cb); + List> forProperty(SortProperty sortProperty, Root contact, ContactJoins joins, CriteriaBuilder cb); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactQueryContext.java index b10538c5d87..45218e36a10 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactQueryContext.java @@ -8,22 +8,27 @@ import de.symeda.sormas.api.person.PersonContactDetailType; import de.symeda.sormas.backend.common.QueryContext; +import de.symeda.sormas.backend.person.Person; -public class ContactQueryContext extends QueryContext { +public class ContactQueryContext extends QueryContext { public static final String PERSON_PHONE_SUBQUERY = "personPhoneSubquery"; public static final String PERSON_PHONE_OWNER_SUBQUERY = "personPhoneOwnerSubquery"; public static final String PERSON_EMAIL_SUBQUERY = "personEmailSubquery"; public static final String PERSON_OTHER_CONTACT_DETAILS_SUBQUERY = "personOtherContactDetailsSubQuery"; - public ContactQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { - super(cb, query, root, new ContactJoins(root)); + public ContactQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { + this(cb, query, new ContactJoins(root)); + } + + public ContactQueryContext(CriteriaBuilder cb, CriteriaQuery query, ContactJoins joins) { + super(cb, query, joins.getRoot(), joins); } @Override protected Expression createExpression(String name) { - final Join personJoin = ((ContactJoins) getJoins()).getPerson(); + final Join personJoin = getJoins().getPerson(); if (name.equals(PERSON_PHONE_SUBQUERY)) { return addSubqueryExpression(PERSON_PHONE_SUBQUERY, getPersonContactDetailSubquery(PersonContactDetailType.PHONE, personJoin)); } else if (name.equals(PERSON_EMAIL_SUBQUERY)) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactService.java index 5801e6a9972..981e9cab087 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactService.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -45,7 +46,6 @@ import javax.transaction.Transactional; import javax.validation.constraints.NotNull; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import de.symeda.sormas.api.Disease; @@ -64,6 +64,7 @@ import de.symeda.sormas.api.contact.FollowUpStatus; import de.symeda.sormas.api.contact.MapContactDto; import de.symeda.sormas.api.dashboard.DashboardContactDto; +import de.symeda.sormas.api.document.DocumentRelatedEntityType; import de.symeda.sormas.api.externaldata.ExternalDataDto; import de.symeda.sormas.api.externaldata.ExternalDataUpdateException; import de.symeda.sormas.api.feature.FeatureType; @@ -71,12 +72,12 @@ import de.symeda.sormas.api.followup.FollowUpLogic; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; -import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.task.TaskCriteria; import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DateHelper; +import de.symeda.sormas.api.utils.FieldConstraints; import de.symeda.sormas.api.visit.VisitStatus; import de.symeda.sormas.backend.caze.Case; import de.symeda.sormas.backend.caze.CaseQueryContext; @@ -91,6 +92,7 @@ import de.symeda.sormas.backend.common.DeletableAdo; import de.symeda.sormas.backend.contact.transformers.ContactListEntryDtoResultTransformer; import de.symeda.sormas.backend.disease.DiseaseConfigurationFacadeEjb.DiseaseConfigurationFacadeEjbLocal; +import de.symeda.sormas.backend.document.DocumentService; import de.symeda.sormas.backend.epidata.EpiData; import de.symeda.sormas.backend.epidata.EpiDataService; import de.symeda.sormas.backend.event.Event; @@ -106,6 +108,7 @@ import de.symeda.sormas.backend.sample.SampleJoins; import de.symeda.sormas.backend.sample.SampleService; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfo; +import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoFacadeEjb; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoService; import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.task.Task; @@ -118,6 +121,7 @@ import de.symeda.sormas.backend.util.ModelConstants; import de.symeda.sormas.backend.visit.Visit; import de.symeda.sormas.backend.visit.VisitFacadeEjb; +import de.symeda.sormas.backend.visit.VisitService; @Stateless @LocalBean @@ -140,11 +144,15 @@ public class ContactService extends AbstractCoreAdoService { @EJB private ContactFacadeEjb.ContactFacadeEjbLocal contactFacade; @EJB - private VisitFacadeEjb.VisitFacadeEjbLocal visitFacade; - @EJB private ExternalJournalService externalJournalService; @EJB private UserService userService; + @EJB + private DocumentService documentService; + @EJB + private SormasToSormasShareInfoFacadeEjb.SormasToSormasShareInfoFacadeEjbLocal sormasToSormasShareInfoFacade; + @EJB + private VisitService visitService; public ContactService() { super(Contact.class); @@ -864,24 +872,17 @@ public void updateFollowUpDetails(Contact contact, boolean followUpStatusChanged statusChangedBySystem = true; } } else { - ContactDto contactDto = contactFacade.toDto(contact); + ContactDto contactDto = ContactFacadeEjb.toContactDto(contact); Date currentFollowUpUntil = contact.getFollowUpUntil(); - Date earliestSampleDate = null; - for (Sample sample : contact.getSamples()) { - if (!sample.isDeleted() - && sample.getPathogenTestResult() == PathogenTestResultType.POSITIVE - && (earliestSampleDate == null || sample.getSampleDateTime().before(earliestSampleDate))) { - earliestSampleDate = sample.getSampleDateTime(); - } - } + Date earliestSampleDate = sampleService.getEarliestSampleDate(contact.getSamples()); Date untilDate = ContactLogic .calculateFollowUpUntilDate( contactDto, ContactLogic.getFollowUpStartDate(contact.getLastContactDate(), contact.getReportDateTime(), earliestSampleDate), - contact.getVisits().stream().map(visit -> visitFacade.toDto(visit)).collect(Collectors.toList()), + contact.getVisits().stream().map(VisitFacadeEjb::toDto).collect(Collectors.toList()), diseaseConfigurationFacade.getFollowUpDuration(contact.getDisease()), false, featureConfigurationFacade @@ -927,8 +928,10 @@ public void cancelFollowUp(Contact contact, String comment) { } private void addToFollowUpStatusComment(Contact contact, String comment) { - String followUpComment = DataHelper.joinStrings("\n", contact.getFollowUpComment(), comment); - contact.setFollowUpComment(followUpComment); + String finalFollowUpComment = ContactLogic.extendFollowUpStatusComment(contact.getFollowUpComment(), comment); + if (finalFollowUpComment.length() <= FieldConstraints.CHARACTER_LIMIT_BIG) { + contact.setFollowUpComment(finalFollowUpComment); + } } // Used only for testing; directly retrieve the contacts from the visit instead @@ -1243,10 +1246,7 @@ public Predicate buildCriteriaFilter(ContactCriteria contactCriteria, ContactQue CriteriaBuilderHelper.ilikePrecise(cb, person.get(Person.UUID), textFilter + "%"), CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.LAST_NAME), textFilter), - phoneNumberPredicate( - cb, - (Expression) contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), - textFilter), + phoneNumberPredicate(cb, contactQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, location.get(Location.CITY), textFilter), CriteriaBuilderHelper.ilike(cb, location.get(Location.POSTAL_CODE), textFilter))); @@ -1274,10 +1274,7 @@ public Predicate buildCriteriaFilter(ContactCriteria contactCriteria, ContactQue CriteriaBuilderHelper.ilikePrecise(cb, casePerson.get(Person.UUID), textFilter + "%"), CriteriaBuilderHelper.unaccentedIlike(cb, casePerson.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, casePerson.get(Person.LAST_NAME), textFilter), - phoneNumberPredicate( - cb, - (Expression) contactQueryContext.getSubqueryExpression(CaseQueryContext.PERSON_PHONE_SUBQUERY), - textFilter)); + phoneNumberPredicate(cb, contactQueryContext.getSubqueryExpression(CaseQueryContext.PERSON_PHONE_SUBQUERY), textFilter)); filter = CriteriaBuilderHelper.and(cb, filter, likeFilters); } } @@ -1327,12 +1324,8 @@ public Predicate buildCriteriaFilter(ContactCriteria contactCriteria, ContactQue Join eventParticipant = joins.getEventParticipants(); Join event = joins.getEvent(); - filter = CriteriaBuilderHelper.and( - cb, - filter, - cb.isFalse(event.get(Event.DELETED)), - cb.isFalse(event.get(Event.ARCHIVED)), - cb.isFalse(eventParticipant.get(EventParticipant.DELETED))); + filter = CriteriaBuilderHelper + .and(cb, filter, cb.isFalse(event.get(Event.DELETED)), cb.isFalse(eventParticipant.get(EventParticipant.DELETED))); if (hasEventLikeCriteria) { String[] textFilters = contactCriteria.getEventLike().trim().split("\\s+"); @@ -1400,9 +1393,78 @@ public void delete(Contact contact) { // Notify external journal if necessary externalJournalService.handleExternalJournalPersonUpdateAsync(contact.getPerson().toReference()); + deleteContactLinks(contact); + super.delete(contact); } + @Override + public void deletePermanent(Contact contact) { + + // Delete all tasks associated with this case + Optional.ofNullable(contact.getTasks()).ifPresent(tl -> tl.forEach(t -> taskService.deletePermanent(t))); + + // Delete all samples that are only associated with this contact + contact.getSamples() + .stream() + .filter(sample -> sample.getAssociatedCase() == null && sample.getAssociatedEventParticipant() == null) + .forEach(sample -> sampleService.deletePermanent(sample)); + + // Delete all visits that are only associated with this contact and Remove the deleted contact from contact_visits + contact.getVisits().forEach(visit -> { + if (visit.getCaze() == null && visit.getContacts().size() <= 1) { + visitService.deletePermanent(visit); + } else { + Set visitContacts = new HashSet<>(visit.getContacts()); + visit.getContacts().clear(); + visit.getContacts() + .addAll(visitContacts.stream().filter(contact1 -> !DataHelper.isSame(contact1, contact)).collect(Collectors.toSet())); + visitService.ensurePersisted(visit); + } + }); + + // Delete documents related to this contact + documentService.getRelatedToEntity(DocumentRelatedEntityType.CONTACT, contact.getUuid()).forEach(d -> documentService.markAsDeleted(d)); + + // Remove the contact from any S2S share info referencing it + sormasToSormasShareInfoService.getByAssociatedEntity(SormasToSormasShareInfo.CONTACT, contact.getUuid()).forEach(s -> { + s.setContact(null); + if (sormasToSormasShareInfoFacade.hasAnyEntityReference(s)) { + sormasToSormasShareInfoService.ensurePersisted(s); + } else { + sormasToSormasShareInfoService.deletePermanent(s); + } + }); + + deleteContactFromDuplicateOf(contact); + + deleteContactLinks(contact); + + super.deletePermanent(contact); + } + + private void deleteContactLinks(Contact contact) { + // Remove the contact from any sample that is also connected to other entities + contact.getSamples().stream().filter(s -> s.getAssociatedCase() != null || s.getAssociatedEventParticipant() != null).forEach(s -> { + s.setAssociatedContact(null); + sampleService.ensurePersisted(s); + }); + + // Remove the contactToCase from all exposures + exposureService.removeContactFromExposures(contact.getId()); + } + + private void deleteContactFromDuplicateOf(Contact contact) { + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaUpdate cu = cb.createCriteriaUpdate(Contact.class); + Root root = cu.from(Contact.class); + + cu.where(cb.equal(root.get(Contact.DUPLICATE_OF), contact.getId())); + cu.set(Contact.DUPLICATE_OF, null); + + em.createQuery(cu).executeUpdate(); + } + /** * Creates a filter that excludes all contacts that are either * {@link DeletableAdo#isDeleted()} or associated with cases that are @@ -1493,23 +1555,19 @@ public List> getJurisdictionSelections(ContactQueryContext qc) { JurisdictionHelper.booleanSelector(cb, inJurisdictionOrOwned(qc, userService.getCurrentUser())), JurisdictionHelper.booleanSelector( cb, - cb.and(cb.isNotNull(joins.getCaze()), caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, qc.getQuery(), joins.getCaze()))))); + cb.and( + cb.isNotNull(joins.getCaze()), + caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, qc.getQuery(), joins.getCaseJoins()))))); } public List getByPersonUuids(List personUuids) { - if (CollectionUtils.isEmpty(personUuids)) { - // Avoid empty IN clause - return Collections.emptyList(); - } else if (personUuids.size() > ModelConstants.PARAMETER_LIMIT) { - List contacts = new LinkedList<>(); - IterableHelper.executeBatched( - personUuids, - ModelConstants.PARAMETER_LIMIT, - batchedPersonUuids -> contacts.addAll(getContactsByPersonUuids(batchedPersonUuids))); - return contacts; - } else { - return getContactsByPersonUuids(personUuids); - } + + List contacts = new LinkedList<>(); + IterableHelper.executeBatched( + personUuids, + ModelConstants.PARAMETER_LIMIT, + batchedPersonUuids -> contacts.addAll(getContactsByPersonUuids(batchedPersonUuids))); + return contacts; } private List getContactsByPersonUuids(List personUuids) { @@ -1576,7 +1634,7 @@ public List getEntriesList(Long personId, Integer first, In final CriteriaQuery cq = cb.createQuery(Object[].class); final Root contact = cq.from(Contact.class); - ContactQueryContext contactQueryContext = new ContactQueryContext<>(cb, cq, contact); + ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, contact); cq.multiselect( contact.get(Contact.UUID), diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjb.java index 4b33f03c8ec..b7777c21c62 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjb.java @@ -1,26 +1,44 @@ package de.symeda.sormas.backend.dashboard; +import static de.symeda.sormas.api.dashboard.DashboardContactStatisticDto.CURRENT_CONTACTS; +import static de.symeda.sormas.api.dashboard.DashboardContactStatisticDto.PREVIOUS_CONTACTS; + +import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Collections; import java.util.Date; +import java.util.EnumMap; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.TreeMap; import java.util.function.Predicate; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import org.apache.commons.lang3.time.DateUtils; +import de.symeda.sormas.api.CaseMeasure; import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.caze.CaseReferenceDefinition; +import de.symeda.sormas.api.contact.ContactClassification; +import de.symeda.sormas.api.contact.ContactCriteria; +import de.symeda.sormas.api.contact.ContactStatus; +import de.symeda.sormas.api.contact.FollowUpStatus; import de.symeda.sormas.api.dashboard.DashboardCaseDto; +import de.symeda.sormas.api.dashboard.DashboardCaseMeasureDto; import de.symeda.sormas.api.dashboard.DashboardCaseStatisticDto; +import de.symeda.sormas.api.dashboard.DashboardContactDto; +import de.symeda.sormas.api.dashboard.DashboardContactFollowUpDto; +import de.symeda.sormas.api.dashboard.DashboardContactStatisticDto; +import de.symeda.sormas.api.dashboard.DashboardContactStoppedFollowUpDto; +import de.symeda.sormas.api.dashboard.DashboardContactVisitDto; import de.symeda.sormas.api.dashboard.DashboardCriteria; import de.symeda.sormas.api.dashboard.DashboardEventDto; import de.symeda.sormas.api.dashboard.DashboardFacade; @@ -30,13 +48,19 @@ import de.symeda.sormas.api.event.EventCriteria; import de.symeda.sormas.api.event.EventStatus; import de.symeda.sormas.api.feature.FeatureType; +import de.symeda.sormas.api.infrastructure.district.DistrictDto; import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.outbreak.OutbreakCriteria; import de.symeda.sormas.api.person.PresentCondition; import de.symeda.sormas.api.sample.PathogenTestResultType; +import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.api.utils.criteria.CriteriaDateType; +import de.symeda.sormas.api.visit.VisitStatus; +import de.symeda.sormas.backend.caze.CaseFacadeEjb; +import de.symeda.sormas.backend.contact.ContactFacadeEjb; import de.symeda.sormas.backend.disease.DiseaseConfigurationFacadeEjb; import de.symeda.sormas.backend.event.EventFacadeEjb; import de.symeda.sormas.backend.feature.FeatureConfigurationFacadeEjb; @@ -62,36 +86,50 @@ public class DashboardFacadeEjb implements DashboardFacade { @EJB private SampleFacadeEjb.SampleFacadeEjbLocal sampleFacade; + @EJB + private ContactFacadeEjb.ContactFacadeEjbLocal contactFacade; + + @EJB + private CaseFacadeEjb.CaseFacadeEjbLocal caseFacade; + @EJB private DashboardService dashboardService; @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public List getCases(DashboardCriteria dashboardCriteria) { return dashboardService.getCases(dashboardCriteria); } @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public Map getCasesCountByClassification(DashboardCriteria dashboardCriteria) { return dashboardService.getCasesCountByClassification(dashboardCriteria); } @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public String getLastReportedDistrictName(DashboardCriteria dashboardCriteria) { return dashboardService.getLastReportedDistrictName(dashboardCriteria); } @Override - public Map getTestResultCountByResultType(List cases) { - if (cases.isEmpty()) { - return Collections.emptyMap(); - } - return sampleFacade.getNewTestResultCountByResultType(cases.stream().map(DashboardCaseDto::getId).collect(Collectors.toList())); - } - + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public Map getTestResultCountByResultType(DashboardCriteria dashboardCriteria) { - return getTestResultCountByResultType(getCases(dashboardCriteria)); + return dashboardService.getNewTestResultCountByResultType(dashboardCriteria); } + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public Map> getEpiCurveSeriesElementsPerCaseClassification(DashboardCriteria dashboardCriteria) { Map> epiCurveSeriesElements = new TreeMap<>(); List dates = buildListOfFilteredDates( @@ -109,6 +147,7 @@ public Map> getEpiCurveSeriesElementsPerC return epiCurveSeriesElements; } + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) public Map> getEpiCurveSeriesElementsPerPresentCondition(DashboardCriteria dashboardCriteria) { Map> epiCurveSeriesElements = new TreeMap<>(); List dates = buildListOfFilteredDates( @@ -128,22 +167,153 @@ public Map> getEpiCurveSeriesElementsPerPre return epiCurveSeriesElements; } + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) + public Map> getEpiCurveSeriesElementsPerContactClassification(DashboardCriteria dashboardCriteria) { + Map> epiCurveSeriesElements = new TreeMap<>(); + List criteriaIntervalStartDates = buildListOfFilteredDates( + dashboardCriteria.getDateFrom(), + dashboardCriteria.getDateTo(), + dashboardCriteria.getEpiCurveGrouping(), + dashboardCriteria.isShowMinimumEntries()); + + ContactCriteria contactCriteria = new ContactCriteria().disease(dashboardCriteria.getDisease()) + .region(dashboardCriteria.getRegion()) + .district(dashboardCriteria.getDistrict()); + + criteriaIntervalStartDates.forEach(intervalStartDate -> { + contactCriteria.reportDateBetween(intervalStartDate, getIntervalEndDate(intervalStartDate, dashboardCriteria.getEpiCurveGrouping())); + Map contactClassifications = contactFacade.getNewContactCountPerClassification(contactCriteria); + epiCurveSeriesElements.put(intervalStartDate, contactClassifications); + }); + return epiCurveSeriesElements; + + } + + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) + public Map> getEpiCurveSeriesElementsPerContactFollowUpStatus(DashboardCriteria dashboardCriteria) { + Map> epiCurveSeriesElements = new TreeMap<>(); + List criteriaIntervalStartDates = buildListOfFilteredDates( + dashboardCriteria.getDateFrom(), + dashboardCriteria.getDateTo(), + dashboardCriteria.getEpiCurveGrouping(), + dashboardCriteria.isShowMinimumEntries()); + + ContactCriteria contactCriteria = new ContactCriteria().disease(dashboardCriteria.getDisease()) + .region(dashboardCriteria.getRegion()) + .district(dashboardCriteria.getDistrict()); + + criteriaIntervalStartDates.forEach(intervalStartDate -> { + contactCriteria.reportDateBetween(intervalStartDate, getIntervalEndDate(intervalStartDate, dashboardCriteria.getEpiCurveGrouping())); + Map contactCounts = contactFacade.getNewContactCountPerFollowUpStatus(contactCriteria); + Map followUpClassificationMap = + contactCounts.entrySet().stream().collect(Collectors.toMap(e -> e.getKey().toShortString(), e -> e.getValue())); + Map contactStatusCounts = contactFacade.getNewContactCountPerStatus(contactCriteria); + followUpClassificationMap.put(ContactStatus.CONVERTED.toString(), contactStatusCounts.get(ContactStatus.CONVERTED)); + epiCurveSeriesElements.put(intervalStartDate, followUpClassificationMap); + }); + return epiCurveSeriesElements; + + } + + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) + public Map getEpiCurveSeriesElementsPerContactFollowUpUntil(DashboardCriteria dashboardCriteria) { + Map epiCurveSeriesElements = new TreeMap<>(); + List criteriaIntervalStartDates = buildListOfFilteredDates( + dashboardCriteria.getDateFrom(), + dashboardCriteria.getDateTo(), + dashboardCriteria.getEpiCurveGrouping(), + dashboardCriteria.isShowMinimumEntries()); + + ContactCriteria contactCriteria = new ContactCriteria().disease(dashboardCriteria.getDisease()) + .region(dashboardCriteria.getRegion()) + .district(dashboardCriteria.getDistrict()); + + criteriaIntervalStartDates.forEach(intervalStartDate -> { + contactCriteria.reportDateBetween(intervalStartDate, getIntervalEndDate(intervalStartDate, dashboardCriteria.getEpiCurveGrouping())); + epiCurveSeriesElements.put(intervalStartDate, contactFacade.getFollowUpUntilCount(contactCriteria)); + }); + return epiCurveSeriesElements; + } + + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) + public DashboardCaseMeasureDto getCaseMeasurePerDistrict(DashboardCriteria dashboardCriteria) { + Map caseMeasurePerDistrictMap = new LinkedHashMap<>(); + BigDecimal districtValuesLowerQuartile; + BigDecimal districtValuesMedianQuartile; + BigDecimal districtValuesUpperQuartile; + + List> caseMeasurePerDistrict = caseFacade.getCaseMeasurePerDistrict( + dashboardCriteria.getDateFrom(), + dashboardCriteria.getDateTo(), + dashboardCriteria.getDisease(), + dashboardCriteria.getCaseMeasure()); + + if (dashboardCriteria.getCaseMeasure() == CaseMeasure.CASE_COUNT) { + caseMeasurePerDistrictMap = + caseMeasurePerDistrict.stream().collect(Collectors.toMap(DataHelper.Pair::getElement0, DataHelper.Pair::getElement1)); + + districtValuesLowerQuartile = + caseMeasurePerDistrict.size() > 0 ? caseMeasurePerDistrict.get((int) (caseMeasurePerDistrict.size() * 0.25)).getElement1() : null; + districtValuesMedianQuartile = + caseMeasurePerDistrict.size() > 0 ? caseMeasurePerDistrict.get((int) (caseMeasurePerDistrict.size() * 0.5)).getElement1() : null; + districtValuesUpperQuartile = + caseMeasurePerDistrict.size() > 0 ? caseMeasurePerDistrict.get((int) (caseMeasurePerDistrict.size() * 0.75)).getElement1() : null; + + } else { + // For case incidence, districts without or with a population <= 0 should not be + // used for the calculation of the quartiles because they will falsify the + // result + List> measurePerDistrictWithoutMissingPopulations = new ArrayList<>(); + measurePerDistrictWithoutMissingPopulations.addAll(caseMeasurePerDistrict); + measurePerDistrictWithoutMissingPopulations.removeIf(d -> d.getElement1() == null || d.getElement1().intValue() <= 0); + + caseMeasurePerDistrictMap = measurePerDistrictWithoutMissingPopulations.stream() + .collect(Collectors.toMap(DataHelper.Pair::getElement0, DataHelper.Pair::getElement1)); + + districtValuesLowerQuartile = measurePerDistrictWithoutMissingPopulations.size() > 0 + ? measurePerDistrictWithoutMissingPopulations.get((int) (measurePerDistrictWithoutMissingPopulations.size() * 0.25)).getElement1() + : null; + districtValuesMedianQuartile = measurePerDistrictWithoutMissingPopulations.size() > 0 + ? measurePerDistrictWithoutMissingPopulations.get((int) (measurePerDistrictWithoutMissingPopulations.size() * 0.5)).getElement1() + : null; + districtValuesUpperQuartile = measurePerDistrictWithoutMissingPopulations.size() > 0 + ? measurePerDistrictWithoutMissingPopulations.get((int) (measurePerDistrictWithoutMissingPopulations.size() * 0.75)).getElement1() + : null; + } + + return new DashboardCaseMeasureDto( + caseMeasurePerDistrictMap, + districtValuesLowerQuartile, + districtValuesMedianQuartile, + districtValuesUpperQuartile); + } + @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public long countCasesConvertedFromContacts(DashboardCriteria dashboardCriteria) { return dashboardService.countCasesConvertedFromContacts(dashboardCriteria); } @Override + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) public Map getCasesCountPerPersonCondition(DashboardCriteria dashboardCriteria) { return dashboardService.getCasesCountPerPersonCondition(dashboardCriteria); } @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public List getNewEvents(DashboardCriteria dashboardCriteria) { return dashboardService.getNewEvents(dashboardCriteria); } @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public Map getEventCountByStatus(DashboardCriteria dashboardCriteria) { return dashboardService.getEventCountByStatus(dashboardCriteria); } @@ -199,6 +369,17 @@ protected List buildListOfFilteredDates(Date fromDate, Date toDate, EpiCur return filteredDates; } + protected Date getIntervalEndDate(Date intervalStartDate, EpiCurveGrouping epiCurveGrouping) { + switch (epiCurveGrouping) { + case DAY: + return DateHelper.getEndOfDay(intervalStartDate); + case WEEK: + return DateHelper.getEndOfWeek(intervalStartDate); + default: + return DateHelper.getEndOfMonth(intervalStartDate); + } + } + protected DashboardCriteria setNewCaseDatesInCaseCriteria(Date date, DashboardCriteria dashboardCriteria) { EpiCurveGrouping epiCurveGrouping = dashboardCriteria.getEpiCurveGrouping(); switch (epiCurveGrouping) { @@ -246,6 +427,7 @@ private Predicate quarantineData(Date fromDate, Date }; } + @RolesAllowed(UserRight._DASHBOARD_SURVEILLANCE_VIEW) public DashboardCaseStatisticDto getDashboardCaseStatistic(DashboardCriteria dashboardCriteria) { List dashboardCases = dashboardService.getCases(dashboardCriteria); long newCases = dashboardCases.size(); @@ -292,7 +474,262 @@ public DashboardCaseStatisticDto getDashboardCaseStatistic(DashboardCriteria das dashboardService.getLastReportedDistrictName(dashboardCriteria)); } + @RolesAllowed(UserRight._DASHBOARD_CONTACT_VIEW) + public DashboardContactStatisticDto getDashboardContactStatistic(DashboardCriteria dashboardCriteria) { + + List dashboardContacts = contactFacade.getContactsForDashboard( + dashboardCriteria.getRegion(), + dashboardCriteria.getDistrict(), + dashboardCriteria.getDisease(), + dashboardCriteria.getDateFrom(), + dashboardCriteria.getDateTo()); + + List previousDashboardContacts = contactFacade.getContactsForDashboard( + dashboardCriteria.getRegion(), + dashboardCriteria.getDistrict(), + dashboardCriteria.getDisease(), + dashboardCriteria.getPreviousDateFrom(), + dashboardCriteria.getPreviousDateTo()); + + int contactsCount = dashboardContacts.size(); + + int newContactsCount = (int) dashboardContacts.stream() + .filter(c -> c.getReportDate().after(dashboardCriteria.getDateFrom()) || c.getReportDate().equals(dashboardCriteria.getDateFrom())) + .count(); + int newContactsPercentage = calculatePercentage(newContactsCount, contactsCount); + int symptomaticContactsCount = (int) dashboardContacts.stream().filter(c -> Boolean.TRUE.equals(c.getSymptomatic())).count(); + int symptomaticContactsPercentage = calculatePercentage(symptomaticContactsCount, contactsCount); + int contactClassificationUnconfirmedCount = + (int) dashboardContacts.stream().filter(c -> c.getContactClassification() == ContactClassification.UNCONFIRMED).count(); + int contactClassificationUnconfirmedPercentage = calculatePercentage(contactClassificationUnconfirmedCount, contactsCount); + int contactClassificationConfirmedCount = + (int) dashboardContacts.stream().filter(c -> c.getContactClassification() == ContactClassification.CONFIRMED).count(); + int contactClassificationConfirmedPercentage = calculatePercentage(contactClassificationConfirmedCount, contactsCount); + int contactClassificationNotAContactCount = + (int) dashboardContacts.stream().filter(c -> c.getContactClassification() == ContactClassification.NO_CONTACT).count(); + int contactClassificationNotAContactPercentage = calculatePercentage(contactClassificationNotAContactCount, contactsCount); + Map> diseaseMap = new TreeMap<>(); + for (Disease disease : diseaseConfigurationFacade.getAllDiseasesWithFollowUp()) { + Map countValues = new HashMap<>(); + countValues.put(PREVIOUS_CONTACTS, (int) previousDashboardContacts.stream().filter(c -> c.getDisease() == disease).count()); + countValues.put(CURRENT_CONTACTS, (int) dashboardContacts.stream().filter(c -> c.getDisease() == disease).count()); + diseaseMap.put(disease, countValues); + } + + Map> orderedDiseaseMap = diseaseMap.entrySet() + .stream() + .sorted(Map.Entry.comparingByValue((o1, o2) -> -Integer.compare(o1.get(CURRENT_CONTACTS), o2.get(CURRENT_CONTACTS)))) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); + + DashboardContactFollowUpDto dashboardContactFollowUp = calculateContactFollowUpStatistics(dashboardContacts, dashboardCriteria.getDateTo()); + DashboardContactStoppedFollowUpDto dashboardContactStoppedFollowUp = calculateContactStoppedFollowUpStatistics(dashboardContacts); + DashboardContactVisitDto dashboardContactVisit = calculateContactVisitStatistics(dashboardContacts, previousDashboardContacts); + + return new DashboardContactStatisticDto( + contactsCount, + newContactsCount, + newContactsPercentage, + symptomaticContactsCount, + symptomaticContactsPercentage, + contactClassificationConfirmedCount, + contactClassificationConfirmedPercentage, + contactClassificationUnconfirmedCount, + contactClassificationUnconfirmedPercentage, + contactClassificationNotAContactCount, + contactClassificationNotAContactPercentage, + orderedDiseaseMap, + dashboardContactFollowUp, + dashboardContactStoppedFollowUp, + dashboardContactVisit); + } + + private DashboardContactFollowUpDto calculateContactFollowUpStatistics(List contacts, Date dateTo) { + + List followUpContacts = + contacts.stream().filter(c -> c.getFollowUpStatus() == FollowUpStatus.FOLLOW_UP).collect(Collectors.toList()); + + int followUpContactsCount = followUpContacts.size(); + + int cooperativeContactsCount = (int) followUpContacts.stream().filter(c -> c.getLastVisitStatus() == VisitStatus.COOPERATIVE).count(); + int uncooperativeContactsCount = (int) followUpContacts.stream().filter(c -> c.getLastVisitStatus() == VisitStatus.UNCOOPERATIVE).count(); + int unavailableContactsCount = (int) followUpContacts.stream().filter(c -> c.getLastVisitStatus() == VisitStatus.UNAVAILABLE).count(); + int notVisitedContactsCount = (int) followUpContacts.stream().filter(c -> c.getLastVisitStatus() == null).count(); + int cooperativeContactsPercentage = calculatePercentage(cooperativeContactsCount, followUpContactsCount); + int uncooperativeContactsPercentage = calculatePercentage(uncooperativeContactsCount, followUpContactsCount); + int unavailableContactsPercentage = calculatePercentage(unavailableContactsCount, followUpContactsCount); + int notVisitedContactsPercentage = calculatePercentage(notVisitedContactsCount, followUpContactsCount); + + int missedVisitsOneDayCount = 0; + int missedVisitsTwoDaysCount = 0; + int missedVisitsThreeDaysCount = 0; + int missedVisitsGtThreeDaysCount = 0; + + for (DashboardContactDto contact : followUpContacts) { + Date lastVisitDateTime = contact.getLastVisitDateTime() != null ? contact.getLastVisitDateTime() : contact.getReportDate(); + + Date referenceDate = dateTo.after(new Date()) ? new Date() : dateTo; + + int missedDays = DateHelper.getFullDaysBetween(lastVisitDateTime, referenceDate); + + switch (missedDays <= 3 ? missedDays : 4) { + case 1: + missedVisitsOneDayCount++; + break; + case 2: + missedVisitsTwoDaysCount++; + break; + case 3: + missedVisitsThreeDaysCount++; + break; + case 4: + missedVisitsGtThreeDaysCount++; + break; + default: + break; + } + + } + + return new DashboardContactFollowUpDto( + followUpContactsCount, + cooperativeContactsCount, + cooperativeContactsPercentage, + uncooperativeContactsCount, + uncooperativeContactsPercentage, + unavailableContactsCount, + unavailableContactsPercentage, + notVisitedContactsCount, + notVisitedContactsPercentage, + missedVisitsOneDayCount, + missedVisitsTwoDaysCount, + missedVisitsThreeDaysCount, + missedVisitsGtThreeDaysCount); + } + + private DashboardContactStoppedFollowUpDto calculateContactStoppedFollowUpStatistics(List contacts) { + + List stoppedFollowUpContacts = contacts.stream() + .filter(c -> c.getFollowUpStatus() != FollowUpStatus.NO_FOLLOW_UP && c.getFollowUpStatus() != FollowUpStatus.FOLLOW_UP) + .collect(Collectors.toList()); + + int stoppedFollowUpContactsCount = stoppedFollowUpContacts.size(); + + int followUpCompletedCount = (int) stoppedFollowUpContacts.stream().filter(c -> c.getFollowUpStatus() == FollowUpStatus.COMPLETED).count(); + int followUpCanceledCount = (int) stoppedFollowUpContacts.stream().filter(c -> c.getFollowUpStatus() == FollowUpStatus.CANCELED).count(); + int lostToFollowUpCount = (int) stoppedFollowUpContacts.stream().filter(c -> c.getFollowUpStatus() == FollowUpStatus.LOST).count(); + int contactStatusConvertedCount = (int) stoppedFollowUpContacts.stream().filter(c -> c.getContactStatus() == ContactStatus.CONVERTED).count(); + + int followUpCompletedPercentage = calculatePercentage(followUpCompletedCount, stoppedFollowUpContactsCount); + int followUpCanceledPercentage = calculatePercentage(followUpCanceledCount, stoppedFollowUpContactsCount); + int lostToFollowUpPercentage = calculatePercentage(lostToFollowUpCount, stoppedFollowUpContactsCount); + int contactStatusConvertedPercentage = calculatePercentage(contactStatusConvertedCount, stoppedFollowUpContactsCount); + + return new DashboardContactStoppedFollowUpDto( + stoppedFollowUpContactsCount, + followUpCompletedCount, + followUpCompletedPercentage, + followUpCanceledCount, + followUpCanceledPercentage, + lostToFollowUpCount, + lostToFollowUpPercentage, + contactStatusConvertedCount, + contactStatusConvertedPercentage); + } + + private DashboardContactVisitDto calculateContactVisitStatistics(List contacts, List previousContacts) { + Map visitStatusMap = new EnumMap<>(VisitStatus.class); + Map previousVisitStatusMap = new EnumMap<>(VisitStatus.class); + int doneEssentialVisitsCount = 0; // only visits that needed to be done, i.e. at most the amount of follow-up days + int previousDoneEssentialVisitsCount = 0; + + Date now = new Date(); + int totalFollowUpDays = 0; + int previousTotalFollowUpDays = 0; + for (DashboardContactDto contact : contacts) { + for (VisitStatus visitStatus : contact.getVisitStatusMap().keySet()) { + int value = 0; + if (visitStatusMap.containsKey(visitStatus)) { + value = visitStatusMap.get(visitStatus); + } + visitStatusMap.put(visitStatus, value + contact.getVisitStatusMap().get(visitStatus)); + } + if (contact.getFollowUpUntil() != null) { + int contactFollowUpDays = Math.min( + DateHelper.getDaysBetween(contact.getReportDate(), now), + DateHelper.getDaysBetween(contact.getReportDate(), contact.getFollowUpUntil())); + totalFollowUpDays += contactFollowUpDays; + int visitCount = contact.getVisitStatusMap().values().stream().reduce(0, Integer::sum); + doneEssentialVisitsCount += (Math.min(visitCount, contactFollowUpDays)); + } + } + + for (DashboardContactDto contact : previousContacts) { + for (VisitStatus visitStatus : contact.getVisitStatusMap().keySet()) { + int value = 0; + if (previousVisitStatusMap.containsKey(visitStatus)) { + value = previousVisitStatusMap.get(visitStatus); + } + previousVisitStatusMap.put(visitStatus, value + contact.getVisitStatusMap().get(visitStatus)); + } + if (contact.getFollowUpUntil() != null) { + int contactFollowUpDays = Math.min( + DateHelper.getDaysBetween(contact.getReportDate(), now), + DateHelper.getDaysBetween(contact.getReportDate(), contact.getFollowUpUntil())); + previousTotalFollowUpDays += contactFollowUpDays; + int visitCount = contact.getVisitStatusMap().values().stream().reduce(0, Integer::sum); + previousDoneEssentialVisitsCount += (Math.min(visitCount, contactFollowUpDays)); + } + } + + int visitsCount = visitStatusMap.values().stream().reduce(0, Integer::sum); + + int missedVisitsCount = totalFollowUpDays - doneEssentialVisitsCount; + int unavailableVisitsCount = Optional.ofNullable(visitStatusMap.get(VisitStatus.UNAVAILABLE)).orElse(0).intValue(); + int uncooperativeVisitsCount = Optional.ofNullable(visitStatusMap.get(VisitStatus.UNCOOPERATIVE)).orElse(0).intValue(); + int cooperativeVisitsCount = Optional.ofNullable(visitStatusMap.get(VisitStatus.COOPERATIVE)).orElse(0).intValue(); + int previousMissedVisitsCount = previousTotalFollowUpDays - previousDoneEssentialVisitsCount; + int previousUnavailableVisitsCount = Optional.ofNullable(previousVisitStatusMap.get(VisitStatus.UNAVAILABLE)).orElse(0).intValue(); + int previousUncooperativeVisitsCount = Optional.ofNullable(previousVisitStatusMap.get(VisitStatus.UNCOOPERATIVE)).orElse(0).intValue(); + int previousCooperativeVisitsCount = Optional.ofNullable(previousVisitStatusMap.get(VisitStatus.COOPERATIVE)).orElse(0).intValue(); + + int missedVisitsGrowth = calculateGrowth(missedVisitsCount, previousMissedVisitsCount); + int unavailableVisitsGrowth = calculateGrowth(unavailableVisitsCount, previousUnavailableVisitsCount); + int uncooperativeVisitsGrowth = calculateGrowth(uncooperativeVisitsCount, previousUncooperativeVisitsCount); + int cooperativeVisitsGrowth = calculateGrowth(cooperativeVisitsCount, previousCooperativeVisitsCount); + + return new DashboardContactVisitDto( + visitsCount, + missedVisitsCount, + missedVisitsGrowth, + unavailableVisitsCount, + unavailableVisitsGrowth, + uncooperativeVisitsCount, + uncooperativeVisitsGrowth, + cooperativeVisitsCount, + cooperativeVisitsGrowth, + previousMissedVisitsCount, + previousUnavailableVisitsCount, + previousUncooperativeVisitsCount, + previousCooperativeVisitsCount); + + } + + private int calculateGrowth(int currentCount, int previousCount) { + return currentCount == 0 + ? (previousCount > 0 ? -100 : 0) + : previousCount == 0 + ? (currentCount > 0 ? Integer.MIN_VALUE : 0) + : Math.round(((currentCount - previousCount * 1.0f) / previousCount) * 100.0f); + } + + private int calculatePercentage(int amount, int totalAmount) { + return totalAmount == 0 ? 0 : (int) ((amount * 100.0f) / totalAmount); + } + @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public List getDiseaseBurden( RegionReferenceDto region, DistrictReferenceDto district, diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardService.java index 459c989691c..3c9a54363f3 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/DashboardService.java @@ -32,27 +32,30 @@ import de.symeda.sormas.api.dashboard.DashboardEventDto; import de.symeda.sormas.api.event.EventStatus; import de.symeda.sormas.api.person.PresentCondition; +import de.symeda.sormas.api.sample.PathogenTestResultType; +import de.symeda.sormas.api.sample.SpecimenCondition; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; import de.symeda.sormas.backend.caze.CaseQueryContext; import de.symeda.sormas.backend.caze.CaseService; import de.symeda.sormas.backend.caze.CaseUserFilterCriteria; import de.symeda.sormas.backend.common.AbstractDomainObject; import de.symeda.sormas.backend.common.CriteriaBuilderHelper; import de.symeda.sormas.backend.event.Event; +import de.symeda.sormas.backend.event.EventJoins; import de.symeda.sormas.backend.event.EventQueryContext; import de.symeda.sormas.backend.event.EventService; -import de.symeda.sormas.backend.location.Location; -import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; +import de.symeda.sormas.backend.location.Location; +import de.symeda.sormas.backend.person.Person; +import de.symeda.sormas.backend.sample.Sample; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.util.JurisdictionHelper; import de.symeda.sormas.backend.util.ModelConstants; import de.symeda.sormas.backend.util.QueryHelper; -import de.symeda.sormas.utils.CaseJoins; -import de.symeda.sormas.utils.EventJoins; @Stateless @LocalBean @@ -74,7 +77,7 @@ public List getCases(DashboardCriteria dashboardCriteria) { Root caze = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Join person = joins.getPerson(); Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(true)); @@ -104,6 +107,50 @@ public List getCases(DashboardCriteria dashboardCriteria) { return result; } + public Map getNewTestResultCountByResultType(DashboardCriteria dashboardCriteria) { + + // 1. Get all pathogen test results for relevant cases + final CriteriaBuilder cb = em.getCriteriaBuilder(); + final CriteriaQuery cq = cb.createQuery(PathogenTestResultDto.class); + final Root caze = cq.from(Case.class); + final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); + final CaseJoins joins = caseQueryContext.getJoins(); + final Join sample = joins.getSamples(); + + cq.multiselect(caze.get(Case.ID), sample.get(Sample.PATHOGEN_TEST_RESULT), sample.get(Sample.SAMPLE_DATE_TIME)); + cq.distinct(true); + + final Predicate userFilter = caseService.createUserFilter(caseQueryContext, new CaseUserFilterCriteria().excludeCasesFromContacts(true)); + final Predicate criteriaFilter = createCaseCriteriaFilter(dashboardCriteria, caseQueryContext); + final Predicate sampleFilter = cb.and( + cb.isFalse(sample.get(Sample.DELETED)), + cb.or(cb.isNull(sample.get(Sample.SPECIMEN_CONDITION)), cb.equal(sample.get(Sample.SPECIMEN_CONDITION), SpecimenCondition.ADEQUATE))); + cq.where(CriteriaBuilderHelper.and(cb, userFilter, criteriaFilter, sampleFilter)); + + final List queryResult = QueryHelper.getResultList(em, cq, null, null); + + // 2. Get most recent pathogen test result for each case + final Map caseTestResults = new HashMap<>(); + queryResult.forEach(caseTestsDto -> { + final Long caseId = caseTestsDto.getCaseId(); + if (!caseTestResults.containsKey(caseId) || caseTestResults.get(caseId).getSampleDateTime().before(caseTestsDto.getSampleDateTime())) { + caseTestResults.put(caseId, caseTestsDto); + } + }); + + // 3. Count test results by PathogenTestResultType + final Map result = new HashMap<>(); + for (PathogenTestResultType pathogenTestResultType : PathogenTestResultType.values()) { + long count = + caseTestResults.values().stream().filter(caseTestsDto -> caseTestsDto.getPathogenTestResultType() == pathogenTestResultType).count(); + if (count > 0) { + result.put(pathogenTestResultType, count); + } + } + + return result; + } + public Map getCasesCountByClassification(DashboardCriteria dashboardCriteria) { CriteriaBuilder cb = em.getCriteriaBuilder(); @@ -162,7 +209,7 @@ public String getLastReportedDistrictName(DashboardCriteria dashboardCriteria) { CriteriaQuery cq = cb.createQuery(String.class); Root caze = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Join district = joins.getResponsibleDistrict(); Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(true)); @@ -188,7 +235,7 @@ public Map getLastReportedDistrictByDisease(DashboardCriteria CriteriaQuery cq = cb.createQuery(Object[].class); Root caze = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Join districtJoin = joins.getResponsibleDistrict(); Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(true)); @@ -230,7 +277,7 @@ public Map getDeathCountByDisease(DashboardCriteria dashboardCrit Root root = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, root); - CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + CaseJoins joins = caseQueryContext.getJoins(); Join person = joins.getPerson(); Predicate filter = caseService.createUserFilter(cb, cq, root, new CaseUserFilterCriteria().excludeCasesFromContacts(true)); @@ -278,7 +325,7 @@ public Map getCasesCountPerPersonCondition(DashboardC CriteriaQuery cq = cb.createQuery(Object[].class); Root caze = cq.from(Case.class); final CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, caze); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Join person = joins.getPerson(); @@ -295,8 +342,11 @@ public Map getCasesCountPerPersonCondition(DashboardC List results = em.createQuery(cq).getResultList(); Map resultMap = results.stream() - .collect(Collectors.toMap(e -> e[0] != null ? (PresentCondition) e[0] : PresentCondition.UNKNOWN, - e -> ((Number) e[1]).intValue(), (v1, v2) -> v1 + v2)); + .collect( + Collectors.toMap( + e -> e[0] != null ? (PresentCondition) e[0] : PresentCondition.UNKNOWN, + e -> ((Number) e[1]).intValue(), + (v1, v2) -> v1 + v2)); return resultMap; } @@ -306,7 +356,7 @@ public List getNewEvents(DashboardCriteria dashboardCriteria) CriteriaQuery cq = cb.createQuery(DashboardEventDto.class); Root event = cq.from(Event.class); EventQueryContext eventQueryContext = new EventQueryContext(cb, cq, event); - EventJoins eventJoins = (EventJoins) eventQueryContext.getJoins(); + EventJoins eventJoins = eventQueryContext.getJoins(); Join eventLocation = eventJoins.getLocation(); Join eventDistrict = eventJoins.getDistrict(); @@ -374,7 +424,7 @@ private Predicate createCaseCriteriaFilter( final From from = caseQueryContext.getRoot(); final CriteriaBuilder cb = caseQueryContext.getCriteriaBuilder(); final CriteriaQuery cq = caseQueryContext.getQuery(); - final CaseJoins joins = (CaseJoins) caseQueryContext.getJoins(); + final CaseJoins joins = caseQueryContext.getJoins(); Join responsibleRegion = joins.getResponsibleRegion(); Join responsibleDistrict = joins.getResponsibleDistrict(); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/PathogenTestResultDto.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/PathogenTestResultDto.java new file mode 100644 index 00000000000..6e6090da569 --- /dev/null +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/PathogenTestResultDto.java @@ -0,0 +1,45 @@ +package de.symeda.sormas.backend.dashboard; + +import java.io.Serializable; +import java.util.Date; + +import de.symeda.sormas.api.sample.PathogenTestResultType; + +class PathogenTestResultDto implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long caseId; + private PathogenTestResultType pathogenTestResultType; + private Date sampleDateTime; + + public PathogenTestResultDto(Long caseId, PathogenTestResultType pathogenTestResultType, Date sampleDateTime) { + this.caseId = caseId; + this.pathogenTestResultType = pathogenTestResultType; + this.sampleDateTime = sampleDateTime; + } + + public Long getCaseId() { + return caseId; + } + + public void setCaseId(Long caseId) { + this.caseId = caseId; + } + + public PathogenTestResultType getPathogenTestResultType() { + return pathogenTestResultType; + } + + public void setPathogenTestResultType(PathogenTestResultType pathogenTestResultType) { + this.pathogenTestResultType = pathogenTestResultType; + } + + public Date getSampleDateTime() { + return sampleDateTime; + } + + public void setSampleDateTime(Date sampleDateTime) { + this.sampleDateTime = sampleDateTime; + } +} diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionService.java index 2b04b178c93..40fc48a30f8 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionService.java @@ -8,15 +8,22 @@ import javax.ejb.Singleton; import javax.inject.Inject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import de.symeda.sormas.api.common.CoreEntityType; +import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.backend.caze.CaseFacadeEjb; import de.symeda.sormas.backend.common.AbstractCoreFacadeEjb; import de.symeda.sormas.backend.contact.ContactFacadeEjb; import de.symeda.sormas.backend.event.EventFacadeEjb; import de.symeda.sormas.backend.event.EventParticipantFacadeEjb; +import de.symeda.sormas.backend.feature.FeatureConfigurationFacadeEjb.FeatureConfigurationFacadeEjbLocal; import de.symeda.sormas.backend.immunization.ImmunizationFacadeEjb; import de.symeda.sormas.backend.person.PersonService; import de.symeda.sormas.backend.travelentry.TravelEntryFacadeEjb; +import de.symeda.sormas.backend.util.IterableHelper; +import de.symeda.sormas.backend.visit.VisitService; @LocalBean @Singleton @@ -24,12 +31,18 @@ public class CoreEntityDeletionService { private static final int DELETE_BATCH_SIZE = 200; + private final Logger logger = LoggerFactory.getLogger(getClass()); + private final List coreEntityFacades = new ArrayList<>(); @EJB private DeletionConfigurationService deletionConfigurationService; @EJB private PersonService personService; + @EJB + private FeatureConfigurationFacadeEjbLocal featureConfigurationFacade; + @EJB + private VisitService visitService; public CoreEntityDeletionService() { } @@ -50,28 +63,38 @@ public CoreEntityDeletionService( coreEntityFacades.add(EntityTypeFacadePair.of(CoreEntityType.TRAVEL_ENTRY, travelEntryFacadeEjb)); } + @SuppressWarnings("unchecked") public void executeAutomaticDeletion() { - coreEntityFacades.forEach(entityTypeFacadePair -> { - DeletionConfiguration coreEntityTypeConfig = deletionConfigurationService.getCoreEntityTypeConfig(entityTypeFacadePair.coreEntityType); - - if (coreEntityTypeConfig.getDeletionReference() != null && coreEntityTypeConfig.deletionPeriod != null) { - entityTypeFacadePair.entityFacade.executeAutomaticDeletion(coreEntityTypeConfig); - } - }); - } + long startTime = DateHelper.startTime(); - public void executePermanentDeletion() { + // Delete CoreEntities by type coreEntityFacades.forEach(entityTypeFacadePair -> { - if (entityTypeFacadePair.coreEntityType == CoreEntityType.IMMUNIZATION - || entityTypeFacadePair.coreEntityType == CoreEntityType.TRAVEL_ENTRY - || entityTypeFacadePair.coreEntityType == CoreEntityType.CASE) { - entityTypeFacadePair.entityFacade.executePermanentDeletion(DELETE_BATCH_SIZE); - } + List coreEntityTypeConfigs = + deletionConfigurationService.getCoreEntityTypeConfigs(entityTypeFacadePair.coreEntityType); + + coreEntityTypeConfigs.stream().filter(c -> c.getDeletionReference() != null && c.getDeletionPeriod() != null).forEach(c -> { + + List deleteUuids = entityTypeFacadePair.entityFacade.getUuidsForAutomaticDeletion(c); + logger.debug("executeAutomaticDeletion(): Detected deletable entities of type {}: n={}", c.getEntityType(), deleteUuids.size()); + IterableHelper.executeBatched( + deleteUuids, + DELETE_BATCH_SIZE, + batchedUuids -> entityTypeFacadePair.entityFacade + .doAutomaticDeletion(batchedUuids, supportsPermanentDeletion(entityTypeFacadePair.coreEntityType))); + }); }); - personService.executePermanentDeletion(DELETE_BATCH_SIZE); + + // Delete non referenced Persons + List nonReferencedPersonUuids = personService.getAllNonReferencedPersonUuids(); + logger.debug("executeAutomaticDeletion(): Detected non referenced persons: n={}", nonReferencedPersonUuids.size()); + IterableHelper + .executeBatched(nonReferencedPersonUuids, DELETE_BATCH_SIZE, batchedUuids -> personService.deletePermanentByUuids(batchedUuids)); + + logger.debug("executeAutomaticDeletion() finished. {}s", DateHelper.durationSeconds(startTime)); } + @SuppressWarnings("rawtypes") private static final class EntityTypeFacadePair { private final CoreEntityType coreEntityType; @@ -86,4 +109,11 @@ public static EntityTypeFacadePair of(CoreEntityType coreEntityType, AbstractCor return new EntityTypeFacadePair(coreEntityType, entityFacade); } } + + private boolean supportsPermanentDeletion(CoreEntityType coreEntityType) { + return coreEntityType == CoreEntityType.IMMUNIZATION + || coreEntityType == CoreEntityType.TRAVEL_ENTRY + || coreEntityType == CoreEntityType.CASE + || coreEntityType == CoreEntityType.CONTACT; + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfiguration.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfiguration.java index d56034fae2d..3fb1cbd92a0 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfiguration.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfiguration.java @@ -33,8 +33,21 @@ public class DeletionConfiguration extends AbstractDomainObject { Integer deletionPeriod; public static DeletionConfiguration build(CoreEntityType coreEntityType) { + + return build(coreEntityType, null, null); + } + + public static DeletionConfiguration build(CoreEntityType coreEntityType, DeletionReference deletionReference) { + + return build(coreEntityType, deletionReference, null); + } + + public static DeletionConfiguration build(CoreEntityType coreEntityType, DeletionReference deletionReference, Integer deletionPeriod) { + DeletionConfiguration deletionConfiguration = new DeletionConfiguration(); deletionConfiguration.setEntityType(coreEntityType); + deletionConfiguration.setDeletionReference(deletionReference); + deletionConfiguration.setDeletionPeriod(deletionPeriod); return deletionConfiguration; } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfigurationService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfigurationService.java index 494a1db162f..21eb1982f36 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfigurationService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/deletionconfiguration/DeletionConfigurationService.java @@ -1,5 +1,7 @@ package de.symeda.sormas.backend.deletionconfiguration; +import static java.util.stream.Collectors.toMap; + import java.util.Arrays; import java.util.List; import java.util.Map; @@ -8,47 +10,96 @@ import javax.ejb.LocalBean; import javax.ejb.Stateless; +import javax.persistence.NoResultException; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import de.symeda.sormas.api.common.CoreEntityType; +import de.symeda.sormas.api.deletionconfiguration.DeletionReference; import de.symeda.sormas.backend.common.BaseAdoService; @Stateless @LocalBean public class DeletionConfigurationService extends BaseAdoService { - public DeletionConfigurationService() { + super(DeletionConfiguration.class); } + /** + * Retrieves the deletion configuration for the specified core entity type with deletion reference != DELETION. + */ public DeletionConfiguration getCoreEntityTypeConfig(CoreEntityType coreEntityType) { + return getCoreEntityTypeConfig(coreEntityType, false); + } + + /** + * Retrieves the deletion configuration for the specified core entity type with deletion reference == DELETION. + */ + public DeletionConfiguration getCoreEntityTypeManualDeletionConfig(CoreEntityType coreEntityType) { + + return getCoreEntityTypeConfig(coreEntityType, true); + } + + public List getCoreEntityTypeConfigs(CoreEntityType coreEntityType) { + CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(getElementClass()); Root from = cq.from(getElementClass()); cq.where(cb.equal(from.get(DeletionConfiguration.ENTITY_TYPE), coreEntityType)); - return em.createQuery(cq).getSingleResult(); + return em.createQuery(cq).getResultList(); + } + + private DeletionConfiguration getCoreEntityTypeConfig(CoreEntityType coreEntityType, boolean isManualDeletionConfig) { + + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(getElementClass()); + Root from = cq.from(getElementClass()); + cq.where( + cb.and( + cb.equal(from.get(DeletionConfiguration.ENTITY_TYPE), coreEntityType), + isManualDeletionConfig + ? cb.equal(from.get(DeletionConfiguration.DELETION_REFERENCE), DeletionReference.MANUAL_DELETION) + : cb.notEqual(from.get(DeletionConfiguration.DELETION_REFERENCE), DeletionReference.MANUAL_DELETION))); + + try { + return em.createQuery(cq).getSingleResult(); + } catch (NoResultException e) { + return null; + } } - public void createMissingDeletionConfiguration() { - Map configs = getServerDeletionConfigurations(); + public void createMissingDeletionConfigurations() { + + Map> configs = getServerDeletionConfigurations(); Arrays.stream(CoreEntityType.values()).forEach(coreEntityType -> { - DeletionConfiguration savedConfiguration = configs.get(coreEntityType); - if (savedConfiguration == null) { + Map savedConfigurations = configs.get(coreEntityType); + + if (savedConfigurations == null || !savedConfigurations.containsKey(DeletionReference.MANUAL_DELETION.name())) { + DeletionConfiguration deletionConfiguration = DeletionConfiguration.build(coreEntityType, DeletionReference.MANUAL_DELETION); + ensurePersisted(deletionConfiguration); + } + + if (savedConfigurations == null + || savedConfigurations.isEmpty() + || savedConfigurations.containsKey(DeletionReference.MANUAL_DELETION.name()) && savedConfigurations.size() == 1) { DeletionConfiguration deletionConfiguration = DeletionConfiguration.build(coreEntityType); ensurePersisted(deletionConfiguration); } }); } - private Map getServerDeletionConfigurations() { + private Map> getServerDeletionConfigurations() { + List deletionConfigurations = getAll(); - Map deletionConfigurationMap = - deletionConfigurations.stream().collect(Collectors.toMap(DeletionConfiguration::getEntityType, Function.identity(), (e1, e2) -> e2)); - return deletionConfigurationMap; + return deletionConfigurations.stream() + .collect( + Collectors.groupingBy( + DeletionConfiguration::getEntityType, + toMap(config -> config.getDeletionReference() != null ? config.getDeletionReference().name() : "", Function.identity()))); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventFacadeEjb.java index 856ada53633..e63d69cdda5 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventFacadeEjb.java @@ -125,9 +125,9 @@ import de.symeda.sormas.backend.util.ModelConstants; import de.symeda.sormas.backend.util.Pseudonymizer; import de.symeda.sormas.backend.util.QueryHelper; -import de.symeda.sormas.utils.EventJoins; @Stateless(name = "EventFacade") +@RolesAllowed(UserRight._EVENT_VIEW) public class EventFacadeEjb extends AbstractCoreFacadeEjb implements EventFacade { @@ -215,6 +215,7 @@ public List getDeletedUuidsSince(Date since) { return service.getDeletedUuidsSince(since); } + @PermitAll public Map getEventCountByDisease(EventCriteria eventCriteria) { return service.getEventCountByDisease(eventCriteria); @@ -238,10 +239,16 @@ public EventReferenceDto getReferenceByEventParticipant(String uuid) { } @Override + @RolesAllowed({ + UserRight._EVENT_CREATE, + UserRight._EVENT_EDIT }) public EventDto save(@Valid @NotNull EventDto dto) { return save(dto, true, true); } + @RolesAllowed({ + UserRight._EVENT_CREATE, + UserRight._EVENT_EDIT }) public EventDto save(@NotNull EventDto dto, boolean checkChangeDate, boolean internal) { Event existingEvent = dto.getUuid() != null ? service.getByUuid(dto.getUuid()) : null; @@ -274,6 +281,7 @@ public void onEventChange(EventDto event, boolean syncShares) { } } + @RolesAllowed(UserRight._EVENT_EDIT) public void syncSharesAsync(ShareTreeCriteria criteria) { executorService.schedule(() -> { sormasToSormasEventFacade.syncShares(criteria); @@ -281,11 +289,8 @@ public void syncSharesAsync(ShareTreeCriteria criteria) { } @Override + @RolesAllowed(UserRight._EVENT_DELETE) public void delete(String eventUuid) throws ExternalSurveillanceToolException { - if (!userService.hasRight(UserRight.EVENT_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete events."); - } - Event event = service.getByUuid(eventUuid); deleteEvent(event); } @@ -300,10 +305,8 @@ private void deleteEvent(Event event) throws ExternalSurveillanceToolException { service.delete(event); } + @RolesAllowed(UserRight._EVENT_DELETE) public List deleteEvents(List eventUuids) { - if (!userService.hasRight(UserRight.EVENT_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete events."); - } List deletedEventUuids = new ArrayList<>(); List eventsToBeDeleted = service.getByUuids(eventUuids); if (eventsToBeDeleted != null) { @@ -356,7 +359,7 @@ public List getIndexList(EventCriteria eventCriteria, Integer fir EventQueryContext eventQueryContext = new EventQueryContext(cb, cq, event); - EventJoins eventJoins = (EventJoins) eventQueryContext.getJoins(); + EventJoins eventJoins = eventQueryContext.getJoins(); Join location = eventJoins.getLocation(); Join region = eventJoins.getRegion(); @@ -649,12 +652,13 @@ public Page getIndexPage(EventCriteria eventCriteria, Integer off } @Override + @RolesAllowed(UserRight._EVENT_EXPORT) public List getExportList(EventCriteria eventCriteria, Collection selectedRows, Integer first, Integer max) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(EventExportDto.class); Root event = cq.from(Event.class); EventQueryContext eventQueryContext = new EventQueryContext(cb, cq, event); - EventJoins eventJoins = (EventJoins) eventQueryContext.getJoins(); + EventJoins eventJoins = eventQueryContext.getJoins(); Join location = eventJoins.getLocation(); Join region = eventJoins.getRegion(); Join district = eventJoins.getDistrict(); @@ -879,6 +883,7 @@ public List getArchivedUuidsSince(Date since) { } @Override + @RolesAllowed(UserRight._EVENT_ARCHIVE) public void archive(String eventUuid, Date endOfProcessingDate) { super.archive(eventUuid, endOfProcessingDate); List eventParticipantList = eventParticipantService.getAllUuidsByEventUuids(Collections.singletonList(eventUuid)); @@ -886,6 +891,7 @@ public void archive(String eventUuid, Date endOfProcessingDate) { } @Override + @RolesAllowed(UserRight._EVENT_ARCHIVE) public void archive(List eventUuids) { super.archive(eventUuids); List eventParticipantList = eventParticipantService.getAllUuidsByEventUuids(eventUuids); @@ -893,6 +899,7 @@ public void archive(List eventUuids) { } @Override + @RolesAllowed(UserRight._EVENT_ARCHIVE) public void dearchive(List eventUuids, String dearchiveReason) { super.dearchive(eventUuids, dearchiveReason); List eventParticipantList = eventParticipantService.getAllUuidsByEventUuids(eventUuids); @@ -1012,6 +1019,10 @@ private void addSuperordinateEventToSet(Event event, Set uuids) { } public EventDto toDto(Event source) { + return toEventDto(source); + } + + public static EventDto toEventDto(Event source) { if (source == null) { return null; @@ -1206,6 +1217,7 @@ public void archiveAllArchivableEvents(int daysAfterEventGetsArchived) { archiveAllArchivableEvents(daysAfterEventGetsArchived, LocalDate.now()); } + @RolesAllowed(UserRight._SYSTEM) void archiveAllArchivableEvents(int daysAfterEventGetsArchived, @NotNull LocalDate referenceDate) { LocalDate notChangedSince = referenceDate.minusDays(daysAfterEventGetsArchived); @@ -1261,15 +1273,13 @@ public Set getAllRegionsRelatedToEventUuids(List uui } @Override + @RolesAllowed(UserRight._EVENT_EDIT) public void updateExternalData(@Valid List externalData) throws ExternalDataUpdateException { service.updateExternalData(externalData); } @Override public List getSubordinateEventUuids(List uuids) { - if (uuids.isEmpty()) { - return Collections.emptyList(); - } List subordinateEventUuids = new ArrayList<>(); IterableHelper.executeBatched(uuids, ModelConstants.PARAMETER_LIMIT, (batchedUuids) -> { @@ -1277,7 +1287,7 @@ public List getSubordinateEventUuids(List uuids) { CriteriaQuery cq = cb.createQuery(String.class); Root from = cq.from(Event.class); - EventJoins eventJoins = new EventJoins<>(from); + EventJoins eventJoins = new EventJoins(from); Predicate filters = CriteriaBuilderHelper.and( cb, @@ -1294,16 +1304,6 @@ public List getSubordinateEventUuids(List uuids) { return subordinateEventUuids; } - private User getRandomDistrictEventResponsible(District district) { - - return userService.getRandomDistrictUser(district, UserRight.EVENT_RESPONSIBLE); - } - - private User getRandomRegionEventResponsible(Region region) { - - return userService.getRandomRegionUser(region, UserRight.EVENT_RESPONSIBLE); - } - @Override public boolean hasRegionAndDistrict(String eventUuid) { return service.hasRegionAndDistrict(eventUuid); @@ -1315,6 +1315,7 @@ public boolean hasAnyEventParticipantWithoutJurisdiction(String eventUuid) { } @Override + @RolesAllowed(UserRight._EVENT_EDIT) public int saveBulkEvents( List eventUuidList, EventDto updatedTempEvent, diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventGroupFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventGroupFacadeEjb.java index c8aade53b67..8e61a104809 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventGroupFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventGroupFacadeEjb.java @@ -26,6 +26,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -82,6 +83,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "EventGroupFacade") +@RolesAllowed(UserRight._EVENT_VIEW) public class EventGroupFacadeEjb implements EventGroupFacade { private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -254,15 +256,18 @@ public Page getIndexPage( } @Override + @RolesAllowed({ + UserRight._EVENTGROUP_CREATE, + UserRight._EVENTGROUP_EDIT }) public EventGroupDto saveEventGroup(@Valid @NotNull EventGroupDto dto) { return saveEventGroup(dto, true); } + @RolesAllowed({ + UserRight._EVENTGROUP_CREATE, + UserRight._EVENTGROUP_EDIT }) public EventGroupDto saveEventGroup(@Valid @NotNull EventGroupDto dto, boolean checkChangeDate) { User currentUser = userService.getCurrentUser(); - if (!userService.hasRight(UserRight.EVENTGROUP_EDIT)) { - throw new UnsupportedOperationException("User " + currentUser.getUuid() + " is not allowed to edit event groups."); - } EventGroup eventGroup = fromDto(dto, checkChangeDate); @@ -283,26 +288,27 @@ public EventGroupDto saveEventGroup(@Valid @NotNull EventGroupDto dto, boolean c } @Override + @RolesAllowed(UserRight._EVENTGROUP_LINK) public void linkEventToGroup(EventReferenceDto eventReference, EventGroupReferenceDto eventGroupReference) { linkEventsToGroup(Collections.singletonList(eventReference), eventGroupReference); } @Override + @RolesAllowed(UserRight._EVENTGROUP_LINK) public void linkEventsToGroup(List eventReferences, EventGroupReferenceDto eventGroupReference) { linkEventsToGroups(eventReferences, Collections.singletonList(eventGroupReference)); } @Override + @RolesAllowed(UserRight._EVENTGROUP_LINK) public void linkEventToGroups(EventReferenceDto eventReference, List eventGroupReferences) { linkEventsToGroups(Collections.singletonList(eventReference), eventGroupReferences); } @Override + @RolesAllowed(UserRight._EVENTGROUP_LINK) public void linkEventsToGroups(List eventReferences, List eventGroupReferences) { User currentUser = userService.getCurrentUser(); - if (!userService.hasRight(UserRight.EVENTGROUP_LINK)) { - throw new UnsupportedOperationException("User " + currentUser.getUuid() + " is not allowed to link events."); - } if (CollectionUtils.isEmpty(eventReferences)) { return; @@ -353,11 +359,9 @@ public void linkEventsToGroups(List eventReferences, List getEventGroupRelatedRegions(String uuid) { } @Override + @RolesAllowed(UserRight._EVENTGROUP_CREATE) public void notifyEventEventGroupCreated(EventGroupReferenceDto eventGroupReference) { notifyModificationOfEventGroup( eventGroupReference, @@ -467,6 +467,7 @@ public void notifyEventEventGroupCreated(EventGroupReferenceDto eventGroupRefere } @Override + @RolesAllowed(UserRight._EVENTGROUP_LINK) public void notifyEventAddedToEventGroup(EventGroupReferenceDto eventGroupReference, List eventReferences) { notifyModificationOfEventGroup( eventGroupReference, @@ -477,6 +478,7 @@ public void notifyEventAddedToEventGroup(EventGroupReferenceDto eventGroupRefere } @Override + @RolesAllowed(UserRight._EVENTGROUP_LINK) public void notifyEventRemovedFromEventGroup(EventGroupReferenceDto eventGroupReference, List eventReferences) { notifyModificationOfEventGroup( eventGroupReference, diff --git a/sormas-backend/src/main/java/de/symeda/sormas/utils/EventJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJoins.java similarity index 64% rename from sormas-backend/src/main/java/de/symeda/sormas/utils/EventJoins.java rename to sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJoins.java index 2587479cc46..4d0ff653f60 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/utils/EventJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJoins.java @@ -13,45 +13,36 @@ * along with this program. If not, see . */ -package de.symeda.sormas.utils; +package de.symeda.sormas.backend.event; import javax.persistence.criteria.From; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; -import de.symeda.sormas.backend.event.Event; -import de.symeda.sormas.backend.event.EventGroup; -import de.symeda.sormas.backend.event.EventParticipant; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.facility.Facility; import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.location.Location; +import de.symeda.sormas.backend.location.LocationJoins; import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class EventJoins extends AbstractDomainObjectJoins { +public class EventJoins extends QueryJoins { private Join reportingUser; private Join responsibleUser; - private Join location; - private Join region; - private Join district; - private Join community; - private Join facility; - private Join eventParticipants; - private Join eventParticipantPersons; - private Join eventParticipantCases; - private Join eventGroup; - private Join superordinateEvent; - public EventJoins(From event) { + private LocationJoins locationJoins; + private EventParticipantJoins eventParticipantJoins; + + public EventJoins(From event) { super(event); } @@ -80,35 +71,19 @@ private void setLocation(Join location) { } public Join getRegion() { - return getOrCreate(region, Location.REGION, JoinType.LEFT, getLocation(), this::setRegion); - } - - private void setRegion(Join region) { - this.region = region; + return getLocationJoins().getRegion(); } public Join getDistrict() { - return getOrCreate(district, Location.DISTRICT, JoinType.LEFT, getLocation(), this::setDistrict); - } - - private void setDistrict(Join district) { - this.district = district; + return getLocationJoins().getDistrict(); } public Join getCommunity() { - return getOrCreate(community, Location.COMMUNITY, JoinType.LEFT, getLocation(), this::setCommunity); - } - - private void setCommunity(Join community) { - this.community = community; + return getLocationJoins().getCommunity(); } public Join getFacility() { - return getOrCreate(facility, Location.FACILITY, JoinType.LEFT, getLocation(), this::setFacility); - } - - private void setFacility(Join facility) { - this.facility = facility; + return getLocationJoins().getFacility(); } public Join getEventParticipants() { @@ -120,24 +95,11 @@ private void setEventParticipants(Join eventParticipant } public Join getEventParticipantPersons() { - return getOrCreate(eventParticipantPersons, EventParticipant.PERSON, JoinType.LEFT, getEventParticipants(), this::setEventParticipantPersons); - } - - private void setEventParticipantPersons(Join eventParticipantPersons) { - this.eventParticipantPersons = eventParticipantPersons; + return getEventParticipantJoins().getPerson(); } public Join getEventParticipantCases() { - return getOrCreate( - eventParticipantCases, - EventParticipant.RESULTING_CASE, - JoinType.LEFT, - getEventParticipants(), - this::setEventParticipantCases); - } - - private void setEventParticipantCases(Join eventParticipantCases) { - this.eventParticipantCases = eventParticipantCases; + return getEventParticipantJoins().getResultingCase(); } public Join getEventGroup() { @@ -155,4 +117,20 @@ public Join getSuperordinateEvent() { private void setSuperordinateEvent(Join superordinateEvent) { this.superordinateEvent = superordinateEvent; } + + public LocationJoins getLocationJoins() { + return getOrCreate(locationJoins, () -> new LocationJoins(getLocation()), this::setLocationJoins); + } + + private void setLocationJoins(LocationJoins locationJoins) { + this.locationJoins = locationJoins; + } + + public EventParticipantJoins getEventParticipantJoins() { + return getOrCreate(eventParticipantJoins, () -> new EventParticipantJoins(getEventParticipants()), this::setEventParticipantJoins); + } + + private void setEventParticipantJoins(EventParticipantJoins eventParticipantJoins) { + this.eventParticipantJoins = eventParticipantJoins; + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJurisdictionPredicateValidator.java index 713771006e6..0304494fd29 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventJurisdictionPredicateValidator.java @@ -25,22 +25,21 @@ import de.symeda.sormas.backend.location.Location; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.util.PredicateJurisdictionValidator; -import de.symeda.sormas.utils.EventJoins; public class EventJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final EventJoins joins; + private final EventJoins joins; private final CriteriaQuery cq; private EventJurisdictionPredicateValidator(EventQueryContext qc, User user) { super(qc.getCriteriaBuilder(), user, null, null); - this.joins = (EventJoins) qc.getJoins(); + this.joins = qc.getJoins(); this.cq = qc.getQuery(); } private EventJurisdictionPredicateValidator(EventQueryContext qc, Path userPath) { super(qc.getCriteriaBuilder(), null, userPath, null); - this.joins = (EventJoins) qc.getJoins(); + this.joins = qc.getJoins(); this.cq = qc.getQuery(); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjb.java index 581da6c0ccf..cb2a41acf73 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjb.java @@ -51,6 +51,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; +import de.symeda.sormas.backend.vaccination.VaccinationService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -137,9 +138,9 @@ import de.symeda.sormas.backend.util.QueryHelper; import de.symeda.sormas.backend.vaccination.Vaccination; import de.symeda.sormas.backend.vaccination.VaccinationFacadeEjb; -import de.symeda.sormas.utils.EventParticipantJoins; @Stateless(name = "EventParticipantFacade") +@RolesAllowed(UserRight._EVENTPARTICIPANT_VIEW) public class EventParticipantFacadeEjb extends AbstractCoreFacadeEjb @@ -169,6 +170,8 @@ public class EventParticipantFacadeEjb private SormasToSormasOriginInfoFacadeEjb.SormasToSormasOriginInfoFacadeEjbLocal sormasToSormasOriginInfoFacade; @EJB private VaccinationFacadeEjb.VaccinationFacadeEjbLocal vaccinationFacade; + @EJB + private VaccinationService vaccinationService; public EventParticipantFacadeEjb() { } @@ -273,6 +276,19 @@ private void archiveAllArchivableEventParticipants(int daysAfterEventParticipant } } + private List getRelevantSortedVaccinations(String eventUuid, List vaccinations) { + Event event = eventService.getByUuid(eventUuid); + + return vaccinations.stream() + .filter(v -> vaccinationService.isVaccinationRelevant(event, v)) + .sorted(Comparator.comparing(ImmunizationEntityHelper::getVaccinationDateForComparison)) + .collect(Collectors.toList()); + } + + private String getNumberOfDosesFromVaccinations(Vaccination vaccination) { + return vaccination != null ? vaccination.getVaccineDose() : ""; + } + @Override public List getDeletedUuidsSince(Date since) { @@ -307,10 +323,16 @@ public Page getIndexPage( } @Override - public EventParticipantDto saveEventParticipant(@Valid EventParticipantDto dto) { + @RolesAllowed({ + UserRight._EVENTPARTICIPANT_CREATE, + UserRight._EVENTPARTICIPANT_EDIT }) + public EventParticipantDto save(@Valid @NotNull EventParticipantDto dto) { return saveEventParticipant(dto, true, true); } + @RolesAllowed({ + UserRight._EVENTPARTICIPANT_CREATE, + UserRight._EVENTPARTICIPANT_EDIT }) public EventParticipantDto saveEventParticipant(@Valid EventParticipantDto dto, boolean checkChangeDate, boolean internal) { EventParticipant existingParticipant = dto.getUuid() != null ? service.getByUuid(dto.getUuid()) : null; @@ -433,12 +455,8 @@ public void validate(EventParticipantDto eventParticipant) throws ValidationRunt } @Override + @RolesAllowed(UserRight._EVENTPARTICIPANT_DELETE) public void delete(String uuid) throws ExternalSurveillanceToolException { - - if (!userService.hasRight(UserRight.EVENTPARTICIPANT_DELETE)) { - throw new UnsupportedOperationException("Your user is not allowed to delete event participants"); - } - EventParticipant eventParticipant = service.getByUuid(uuid); service.delete(eventParticipant); } @@ -458,7 +476,7 @@ public List getIndexList( final CriteriaQuery cq = cb.createQuery(EventParticipantIndexDto.class); final Root eventParticipant = cq.from(EventParticipant.class); final EventParticipantQueryContext queryContext = new EventParticipantQueryContext(cb, cq, eventParticipant); - EventParticipantJoins joins = (EventParticipantJoins) queryContext.getJoins(); + EventParticipantJoins joins = queryContext.getJoins(); Join person = joins.getPerson(); Join resultingCase = joins.getResultingCase(); @@ -615,7 +633,7 @@ public List getExportList( CriteriaQuery cq = cb.createQuery(EventParticipantExportDto.class); Root eventParticipant = cq.from(EventParticipant.class); EventParticipantQueryContext eventParticipantQueryContext = new EventParticipantQueryContext(cb, cq, eventParticipant); - EventParticipantJoins joins = (EventParticipantJoins) eventParticipantQueryContext.getJoins(); + EventParticipantJoins joins = eventParticipantQueryContext.getJoins(); Join person = joins.getPerson(); @@ -785,16 +803,16 @@ public List getExportList( epImmunizations.stream().filter(i -> i.getDisease() == exportDto.getEventDisease()).collect(Collectors.toList()); filteredImmunizations.sort(Comparator.comparing(i -> ImmunizationEntityHelper.getDateForComparison(i, false))); Immunization mostRecentImmunization = filteredImmunizations.get(filteredImmunizations.size() - 1); - exportDto.setVaccinationDoses(String.valueOf(mostRecentImmunization.getNumberOfDoses())); + Integer numberOfDoses = mostRecentImmunization.getNumberOfDoses(); - if (CollectionUtils.isNotEmpty(mostRecentImmunization.getVaccinations())) { - List sortedVaccinations = mostRecentImmunization.getVaccinations() - .stream() - .sorted(Comparator.comparing(ImmunizationEntityHelper::getVaccinationDateForComparison)) - .collect(Collectors.toList()); - Vaccination firstVaccination = sortedVaccinations.get(0); - Vaccination lastVaccination = sortedVaccinations.get(sortedVaccinations.size() - 1); + List relevantSortedVaccinations = + getRelevantSortedVaccinations(exportDto.getEventUuid(), mostRecentImmunization.getVaccinations()); + Vaccination firstVaccination = null; + Vaccination lastVaccination = null; + if (CollectionUtils.isNotEmpty(relevantSortedVaccinations)) { + firstVaccination = relevantSortedVaccinations.get(0); + lastVaccination = relevantSortedVaccinations.get(relevantSortedVaccinations.size() - 1); exportDto.setFirstVaccinationDate(firstVaccination.getVaccinationDate()); exportDto.setLastVaccinationDate(lastVaccination.getVaccinationDate()); exportDto.setVaccineName(lastVaccination.getVaccineName()); @@ -807,6 +825,9 @@ public List getExportList( exportDto.setVaccineUniiCode(lastVaccination.getVaccineUniiCode()); exportDto.setVaccineInn(lastVaccination.getVaccineInn()); } + + exportDto.setVaccinationDoses( + numberOfDoses != null ? String.valueOf(numberOfDoses) : getNumberOfDosesFromVaccinations(lastVaccination)); }); } @@ -968,6 +989,10 @@ protected void restorePseudonymizedDto( } public EventParticipantDto toDto(EventParticipant source) { + return toEventParticipantDto(source); + } + + public static EventParticipantDto toEventParticipantDto(EventParticipant source) { if (source == null) { return null; @@ -1104,6 +1129,18 @@ public List getByEventAndPersons(String eventUuid, List toDto(ep)).collect(Collectors.toList()); } + @Override + @RolesAllowed(UserRight._EVENTPARTICIPANT_ARCHIVE) + public void archive(String entityUuid, Date endOfProcessingDate) { + super.archive(entityUuid, endOfProcessingDate); + } + + @Override + @RolesAllowed(UserRight._EVENTPARTICIPANT_ARCHIVE) + public void dearchive(List entityUuids, String dearchiveReason) { + super.dearchive(entityUuids, dearchiveReason); + } + @LocalBean @Stateless public static class EventParticipantFacadeEjbLocal extends EventParticipantFacadeEjb { @@ -1121,4 +1158,5 @@ public EventParticipantFacadeEjbLocal(EventParticipantService service, UserServi protected CoreEntityType getCoreEntityType() { return CoreEntityType.EVENT_PARTICIPANT; } + } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJoins.java new file mode 100644 index 00000000000..f066a9104ef --- /dev/null +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJoins.java @@ -0,0 +1,188 @@ +package de.symeda.sormas.backend.event; + +import javax.persistence.criteria.From; +import javax.persistence.criteria.Join; +import javax.persistence.criteria.JoinType; + +import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; +import de.symeda.sormas.backend.infrastructure.community.Community; +import de.symeda.sormas.backend.infrastructure.district.District; +import de.symeda.sormas.backend.infrastructure.facility.Facility; +import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; +import de.symeda.sormas.backend.infrastructure.region.Region; +import de.symeda.sormas.backend.location.Location; +import de.symeda.sormas.backend.person.Person; +import de.symeda.sormas.backend.person.PersonJoins; +import de.symeda.sormas.backend.user.User; + +public class EventParticipantJoins extends QueryJoins { + + private Join eventParticipantReportingUser; + private Join person; + private Join eventParticipantResponsibleRegion; + private Join eventParticipantResponsibleDistrict; + private Join resultingCase; + private Join event; + + private CaseJoins caseJoins; + private PersonJoins personJoins; + private EventJoins eventJoins; + + public EventParticipantJoins(From eventParticipant) { + super(eventParticipant); + } + + public Join getEventParticipantReportingUser() { + return getOrCreate(eventParticipantReportingUser, EventParticipant.REPORTING_USER, JoinType.LEFT, this::setEventParticipantReportingUser); + } + + private void setEventParticipantReportingUser(Join eventParticipantReportingUser) { + this.eventParticipantReportingUser = eventParticipantReportingUser; + } + + public Join getPerson() { + return getOrCreate(person, EventParticipant.PERSON, JoinType.LEFT, this::setPerson); + } + + private void setPerson(Join person) { + this.person = person; + } + + public Join getEventParticipantResponsibleRegion() { + return getOrCreate(eventParticipantResponsibleRegion, EventParticipant.REGION, JoinType.LEFT, this::setEventParticipantResponsibleRegion); + } + + private void setEventParticipantResponsibleRegion(Join eventParticipantResponsibleRegion) { + this.eventParticipantResponsibleRegion = eventParticipantResponsibleRegion; + } + + public Join getEventParticipantResponsibleDistrict() { + return getOrCreate( + eventParticipantResponsibleDistrict, + EventParticipant.DISTRICT, + JoinType.LEFT, + this::setEventParticipantResponsibleDistrict); + } + + private void setEventParticipantResponsibleDistrict(Join eventParticipantResponsibleDistrict) { + this.eventParticipantResponsibleDistrict = eventParticipantResponsibleDistrict; + } + + public Join getAddress() { + return getPersonJoins().getAddress(); + } + + public Join getAddressRegion() { + return getPersonJoins().getAddressJoins().getRegion(); + } + + public Join getAddressDistrict() { + return getPersonJoins().getAddressJoins().getDistrict(); + } + + public Join getAddressCommunity() { + return getPersonJoins().getAddressJoins().getCommunity(); + } + + public Join getAddressFacility() { + return getPersonJoins().getAddressJoins().getFacility(); + } + + public Join getResultingCase() { + return getOrCreate(resultingCase, EventParticipant.RESULTING_CASE, JoinType.LEFT, this::setResultingCase); + } + + private void setResultingCase(Join resultingCase) { + this.resultingCase = resultingCase; + } + + public Join getCasePerson() { + return getCaseJoins().getPerson(); + } + + public Join getCaseReportingUser() { + return getCaseJoins().getReportingUser(); + } + + public Join getCaseResponsibleRegion() { + return getCaseJoins().getResponsibleRegion(); + } + + public Join getCaseResponsibleDistrict() { + return getCaseJoins().getResponsibleDistrict(); + } + + public Join getCaseResponsibleCommunity() { + return getCaseJoins().getResponsibleCommunity(); + } + + public Join getCaseRegion() { + return getCaseJoins().getRegion(); + } + + public Join getCaseDistrict() { + return getCaseJoins().getDistrict(); + } + + public Join getCaseCommunity() { + return getCaseJoins().getCommunity(); + } + + public Join getCaseHealthFacility() { + return getCaseJoins().getFacility(); + } + + public Join getCaseAsPointOfEntry() { + return getCaseJoins().getPointOfEntry(); + } + + public Join getEvent() { + return getOrCreate(event, EventParticipant.EVENT, JoinType.LEFT, this::setEvent); + } + + private void setEvent(Join event) { + this.event = event; + } + + public Join getEventAddress() { + return getEventJoins().getLocation(); + } + + public Join getEventAddressRegion() { + return getEventJoins().getLocationJoins().getRegion(); + } + + public Join getEventAddressDistrict() { + return getEventJoins().getLocationJoins().getDistrict(); + } + + public Join getEventAddressCommunity() { + return getEventJoins().getLocationJoins().getCommunity(); + } + + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getResultingCase()), this::setCaseJoins); + } + + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; + } + + public PersonJoins getPersonJoins() { + return getOrCreate(personJoins, () -> new PersonJoins(getPerson()), this::setPersonJoins); + } + + private void setPersonJoins(PersonJoins personJoins) { + this.personJoins = personJoins; + } + + public EventJoins getEventJoins() { + return getOrCreate(eventJoins, () -> new EventJoins(getEvent()), this::setEventJoins); + } + + private void setEventJoins(EventJoins eventJoins) { + this.eventJoins = eventJoins; + } +} diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJurisdictionPredicateValidator.java index 5436d4f2ffa..776507eae5a 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantJurisdictionPredicateValidator.java @@ -18,22 +18,21 @@ import de.symeda.sormas.backend.sample.SampleJurisdictionPredicateValidator; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.util.PredicateJurisdictionValidator; -import de.symeda.sormas.utils.EventParticipantJoins; public class EventParticipantJurisdictionPredicateValidator extends PredicateJurisdictionValidator { private final CriteriaQuery cq; - private EventParticipantJoins joins; + private EventParticipantJoins joins; private EventParticipantJurisdictionPredicateValidator(EventParticipantQueryContext qc, User user) { super(qc.getCriteriaBuilder(), user, null, null); - this.joins = (EventParticipantJoins) qc.getJoins(); + this.joins = qc.getJoins(); this.cq = qc.getQuery(); } private EventParticipantJurisdictionPredicateValidator(EventParticipantQueryContext qc, Path userPath) { super(qc.getCriteriaBuilder(), null, userPath, null); - this.joins = (EventParticipantJoins) qc.getJoins(); + this.joins = qc.getJoins(); this.cq = qc.getQuery(); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantQueryContext.java index e5d6c9dcaf1..4982504a513 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantQueryContext.java @@ -6,12 +6,15 @@ import javax.persistence.criteria.From; import de.symeda.sormas.backend.common.QueryContext; -import de.symeda.sormas.utils.EventParticipantJoins; -public class EventParticipantQueryContext extends QueryContext { +public class EventParticipantQueryContext extends QueryContext { - public EventParticipantQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { - super(cb, query, root, new EventParticipantJoins<>(root)); + public EventParticipantQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { + this(cb, query, new EventParticipantJoins(root)); + } + + public EventParticipantQueryContext(CriteriaBuilder cb, CriteriaQuery query, EventParticipantJoins joins) { + super(cb, query, joins.getRoot(), joins); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantService.java index 4f1b5d132d6..2cecd9dcd5e 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantService.java @@ -19,7 +19,6 @@ import java.sql.Timestamp; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -31,7 +30,6 @@ import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaUpdate; -import javax.persistence.criteria.Expression; import javax.persistence.criteria.From; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; @@ -39,8 +37,6 @@ import javax.persistence.criteria.Root; import javax.persistence.criteria.Subquery; -import org.apache.commons.collections.CollectionUtils; - import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.EditPermissionType; import de.symeda.sormas.api.EntityRelevanceStatus; @@ -172,7 +168,7 @@ public List getAllActiveByEvent(Event event) { public Predicate buildCriteriaFilter(EventParticipantCriteria criteria, EventParticipantQueryContext eventParticipantQueryContext) { CriteriaBuilder cb = eventParticipantQueryContext.getCriteriaBuilder(); - Root from = (Root) eventParticipantQueryContext.getRoot(); + From from = eventParticipantQueryContext.getRoot(); CriteriaQuery cq = eventParticipantQueryContext.getQuery(); Join event = from.join(EventParticipant.EVENT, JoinType.LEFT); Join person = from.join(EventParticipant.PERSON, JoinType.LEFT); @@ -196,10 +192,7 @@ public Predicate buildCriteriaFilter(EventParticipantCriteria criteria, EventPar Predicate likeFilters = cb.or( CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.LAST_NAME), textFilter), - phoneNumberPredicate( - cb, - (Expression) personQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), - textFilter)); + phoneNumberPredicate(cb, personQueryContext.getSubqueryExpression(ContactQueryContext.PERSON_PHONE_SUBQUERY), textFilter)); filter = CriteriaBuilderHelper.and(cb, filter, likeFilters); } } @@ -503,19 +496,13 @@ public EditPermissionType isEventParticipantEditAllowed(EventParticipant eventPa } public Collection getByPersonUuids(List personUuids) { - if (CollectionUtils.isEmpty(personUuids)) { - // Avoid empty IN clause - return Collections.emptyList(); - } else if (personUuids.size() > ModelConstants.PARAMETER_LIMIT) { - List eventParticipants = new LinkedList<>(); - IterableHelper.executeBatched( - personUuids, - ModelConstants.PARAMETER_LIMIT, - batchedPersonUuids -> eventParticipants.addAll(getEventParticipantsByPersonUuids(batchedPersonUuids))); - return eventParticipants; - } else { - return getEventParticipantsByPersonUuids(personUuids); - } + + List eventParticipants = new LinkedList<>(); + IterableHelper.executeBatched( + personUuids, + ModelConstants.PARAMETER_LIMIT, + batchedPersonUuids -> eventParticipants.addAll(getEventParticipantsByPersonUuids(batchedPersonUuids))); + return eventParticipants; } private List getEventParticipantsByPersonUuids(List personUuids) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventQueryContext.java index 009e6ae72ef..fc7f04c9e85 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventQueryContext.java @@ -6,12 +6,15 @@ import javax.persistence.criteria.From; import de.symeda.sormas.backend.common.QueryContext; -import de.symeda.sormas.utils.EventJoins; -public class EventQueryContext extends QueryContext { +public class EventQueryContext extends QueryContext { - public EventQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { - super(cb, query, root, new EventJoins<>(root)); + public EventQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { + this(cb, query, new EventJoins(root)); + } + + public EventQueryContext(CriteriaBuilder cb, CriteriaQuery query, EventJoins eventJoins) { + super(cb, query, eventJoins.getRoot(), eventJoins); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventService.java index 6aed314fe0c..5bd0166a7a1 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventService.java @@ -91,7 +91,6 @@ import de.symeda.sormas.backend.util.JurisdictionHelper; import de.symeda.sormas.backend.util.ModelConstants; import de.symeda.sormas.backend.util.QueryHelper; -import de.symeda.sormas.utils.EventJoins; @Stateless @LocalBean @@ -541,7 +540,7 @@ public Predicate buildCriteriaFilter(EventCriteria eventCriteria, EventQueryCont CriteriaBuilder cb = eventQueryContext.getCriteriaBuilder(); From from = eventQueryContext.getRoot(); - final EventJoins joins = (EventJoins) eventQueryContext.getJoins(); + final EventJoins joins = eventQueryContext.getJoins(); Predicate filter = null; if (eventCriteria.getReportingUserRole() != null) { @@ -653,14 +652,8 @@ public Predicate buildCriteriaFilter(EventCriteria eventCriteria, EventQueryCont CriteriaBuilderHelper.ilike(cb, eventParticipantJoin.get(EventParticipant.UUID), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, personJoin.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, personJoin.get(Person.LAST_NAME), textFilter), - CriteriaBuilderHelper.ilike( - cb, - (Expression) personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_PHONE_SUBQUERY), - textFilter), - CriteriaBuilderHelper.ilike( - cb, - (Expression) personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_EMAIL_SUBQUERY), - textFilter)); + CriteriaBuilderHelper.ilike(cb, personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_PHONE_SUBQUERY), textFilter), + CriteriaBuilderHelper.ilike(cb, personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_EMAIL_SUBQUERY), textFilter)); filter = CriteriaBuilderHelper.and(cb, filter, likeFilters); } filter = CriteriaBuilderHelper.and(cb, filter, cb.isFalse(eventParticipantJoin.get(EventParticipant.DELETED))); @@ -827,7 +820,7 @@ public String getUuidByCaseUuidOrPersonUuid(String searchTerm) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(String.class); Root root = cq.from(Event.class); - EventJoins joins = new EventJoins<>(root); + EventJoins joins = new EventJoins(root); Predicate filter = cb.or( cb.equal(cb.lower(joins.getEventParticipantCases().get(Case.UUID)), searchTerm.toLowerCase()), @@ -868,12 +861,8 @@ public List getEventSummaryDetailsByCases(List casesI } public List getEventSummaryDetailsByContacts(List contactUuids) { - if (contactUuids.isEmpty()) { - return Collections.emptyList(); - } List eventSummaryDetailsList = new ArrayList<>(); - IterableHelper.executeBatched(contactUuids, ModelConstants.PARAMETER_LIMIT, batchedContactUuids -> { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery eventsCq = cb.createQuery(ContactEventSummaryDetails.class); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/eventimport/EventImportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/eventimport/EventImportFacadeEjb.java index a11ab3918b7..db71baf2e08 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/event/eventimport/EventImportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/event/eventimport/EventImportFacadeEjb.java @@ -15,6 +15,7 @@ package de.symeda.sormas.backend.event.eventimport; +import de.symeda.sormas.api.user.UserRight; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; @@ -23,6 +24,7 @@ import java.util.List; import java.util.function.Function; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -71,6 +73,7 @@ import de.symeda.sormas.backend.user.UserService; @Stateless(name = "EventImportFacade") +@RolesAllowed(UserRight._EVENT_IMPORT) public class EventImportFacadeEjb implements EventImportFacade { private final Logger LOGGER = LoggerFactory.getLogger(EventImportFacadeEjb.class); @@ -151,7 +154,7 @@ public ImportLineResultDto saveImportedEntities(@Valid Even if (existingPerson == null) { personFacade.savePerson(eventParticipant.getPerson()); } - eventParticipantFacade.saveEventParticipant(eventParticipant); + eventParticipantFacade.save(eventParticipant); } eventGroupFacade.linkEventToGroups(event.toReference(), eventGroupReferences); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalFacadeEjb.java index 1bb5e9b44ce..7fb3e295753 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalFacadeEjb.java @@ -1,5 +1,6 @@ package de.symeda.sormas.backend.externaljournal; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.Stateless; @@ -10,9 +11,11 @@ import de.symeda.sormas.api.externaljournal.patientdiary.PatientDiaryResult; import de.symeda.sormas.api.person.PersonDto; import de.symeda.sormas.api.person.SymptomJournalStatus; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.backend.person.PersonFacadeEjb.PersonFacadeEjbLocal; @Stateless(name = "ExternalJournalFacade") +@RolesAllowed(UserRight._MANAGE_EXTERNAL_SYMPTOM_JOURNAL) public class ExternalJournalFacadeEjb implements ExternalJournalFacade { @EJB @@ -64,6 +67,9 @@ public PatientDiaryResult cancelPatientDiaryFollowUp(PersonDto person) { } @Override + @RolesAllowed({ + UserRight._MANAGE_EXTERNAL_SYMPTOM_JOURNAL, + UserRight._PERSON_EDIT }) public ExternalJournalSyncResponseDto notifyExternalJournal(PersonDto personDto) { return externalJournalService.handleExternalJournalPersonUpdateSync(personDto); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/geo/GeoShapeProviderEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/geo/GeoShapeProviderEjb.java index 60eb2445061..bbe4f1f7c31 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/geo/GeoShapeProviderEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/geo/GeoShapeProviderEjb.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.Optional; import javax.annotation.PostConstruct; @@ -386,12 +387,22 @@ private void buildCountryShape() { // fixme: Remove when the shapefiles are no longer part of the resources. // fixme: In this case the logic to build country shapes will have to be checked again to fix the problem this is a workaround for. if (configFacade.isConfiguredCountry(CountryHelper.COUNTRY_CODE_GERMANY) && !polygons.isEmpty()) { - polygons.add(getRegionPolygon(factory, "Bayern")); - polygons.add(getRegionPolygon(factory, "Berlin")); - polygons.add(getRegionPolygon(factory, "Bremen")); + Polygon polygon = getRegionPolygon(factory, "Bayern"); + if(polygon != null){ + polygons.add(polygon); + } + polygon = getRegionPolygon(factory, "Berlin"); + if(polygon != null){ + polygons.add(polygon); + } + + polygon = getRegionPolygon(factory, "Bremen"); + if(polygon != null){ + polygons.add(polygon); + } } - countryShape = polygons.stream() + countryShape = polygons.stream().filter(Objects::nonNull) .map( polygon -> Arrays.stream(polygon.getCoordinates()) .map(coordinate -> new GeoLatLon(coordinate.y, coordinate.x)) diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/BaseImmunizationJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/BaseImmunizationJoins.java similarity index 88% rename from sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/BaseImmunizationJoins.java rename to sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/BaseImmunizationJoins.java index c5b1d1104af..547199a4072 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/BaseImmunizationJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/BaseImmunizationJoins.java @@ -1,9 +1,10 @@ -package de.symeda.sormas.backend.immunization.joins; +package de.symeda.sormas.backend.immunization; import javax.persistence.criteria.From; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.immunization.entity.BaseImmunization; import de.symeda.sormas.backend.immunization.entity.Immunization; import de.symeda.sormas.backend.infrastructure.community.Community; @@ -11,9 +12,8 @@ import de.symeda.sormas.backend.infrastructure.facility.Facility; import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.person.Person; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class BaseImmunizationJoins extends AbstractDomainObjectJoins { +public class BaseImmunizationJoins extends QueryJoins { private Join person; private Join responsibleRegion; @@ -21,7 +21,7 @@ public class BaseImmunizationJoins extends Abstra private Join responsibleCommunity; private Join healthFacility; - public BaseImmunizationJoins(From root) { + public BaseImmunizationJoins(From root) { super(root); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/DirectoryImmunizationJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJoins.java similarity index 89% rename from sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/DirectoryImmunizationJoins.java rename to sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJoins.java index f6cd901cc49..7578cc90b40 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/DirectoryImmunizationJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJoins.java @@ -1,4 +1,4 @@ -package de.symeda.sormas.backend.immunization.joins; +package de.symeda.sormas.backend.immunization; import javax.persistence.criteria.From; import javax.persistence.criteria.Join; @@ -9,13 +9,13 @@ import de.symeda.sormas.backend.vaccination.LastVaccinationDate; import de.symeda.sormas.backend.vaccination.LastVaccineType; -public class DirectoryImmunizationJoins extends BaseImmunizationJoins { +public class DirectoryImmunizationJoins extends BaseImmunizationJoins { private Join lastVaccineType; private Join lastVaccinationDate; private Join firstVaccinationDate; - public DirectoryImmunizationJoins(From root) { + public DirectoryImmunizationJoins(From root) { super(root); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJurisdictionPredicateValidator.java index 8a57e654f56..c957140fd93 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationJurisdictionPredicateValidator.java @@ -7,7 +7,6 @@ import javax.persistence.criteria.Predicate; import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.immunization.joins.DirectoryImmunizationJoins; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; @@ -16,11 +15,11 @@ public final class DirectoryImmunizationJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final DirectoryImmunizationJoins joins; + private final DirectoryImmunizationJoins joins; private DirectoryImmunizationJurisdictionPredicateValidator( CriteriaBuilder cb, - DirectoryImmunizationJoins joins, + DirectoryImmunizationJoins joins, User user, List associatedJurisdictionValidators) { super(cb, user, null, associatedJurisdictionValidators); @@ -30,7 +29,7 @@ private DirectoryImmunizationJurisdictionPredicateValidator( public static DirectoryImmunizationJurisdictionPredicateValidator of(DirectoryImmunizationQueryContext qc, User user) { return new DirectoryImmunizationJurisdictionPredicateValidator( qc.getCriteriaBuilder(), - (DirectoryImmunizationJoins) qc.getJoins(), + qc.getJoins(), user, null); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationQueryContext.java index a29162e9e83..227d38ead4b 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationQueryContext.java @@ -7,9 +7,8 @@ import de.symeda.sormas.backend.common.QueryContext; import de.symeda.sormas.backend.immunization.entity.DirectoryImmunization; -import de.symeda.sormas.backend.immunization.joins.DirectoryImmunizationJoins; -public class DirectoryImmunizationQueryContext extends QueryContext { +public class DirectoryImmunizationQueryContext extends QueryContext { public DirectoryImmunizationQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { super(cb, query, root, new DirectoryImmunizationJoins(root)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationService.java index 850ac4b42f7..0d3855e6863 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/DirectoryImmunizationService.java @@ -21,7 +21,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import de.symeda.sormas.backend.contact.Contact; import org.apache.commons.collections4.CollectionUtils; import de.symeda.sormas.api.feature.FeatureType; @@ -36,10 +35,10 @@ import de.symeda.sormas.api.utils.SortProperty; import de.symeda.sormas.backend.common.AbstractDeletableAdoService; import de.symeda.sormas.backend.common.CriteriaBuilderHelper; +import de.symeda.sormas.backend.contact.Contact; import de.symeda.sormas.backend.feature.FeatureConfigurationFacadeEjb.FeatureConfigurationFacadeEjbLocal; import de.symeda.sormas.backend.immunization.entity.DirectoryImmunization; import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.immunization.joins.DirectoryImmunizationJoins; import de.symeda.sormas.backend.immunization.transformers.ImmunizationIndexDtoResultTransformer; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.location.Location; @@ -47,7 +46,6 @@ import de.symeda.sormas.backend.person.PersonJoins; import de.symeda.sormas.backend.person.PersonJurisdictionPredicateValidator; import de.symeda.sormas.backend.person.PersonQueryContext; -import de.symeda.sormas.backend.person.PersonService; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.user.UserService; import de.symeda.sormas.backend.util.JurisdictionHelper; @@ -78,10 +76,8 @@ public List getIndexList(ImmunizationCriteria criteria, In final CriteriaQuery cq = cb.createQuery(Object[].class); final Root immunization = cq.from(DirectoryImmunization.class); - DirectoryImmunizationQueryContext directoryImmunizationQueryContext = - new DirectoryImmunizationQueryContext<>(cb, cq, immunization); - DirectoryImmunizationJoins joins = - (DirectoryImmunizationJoins) directoryImmunizationQueryContext.getJoins(); + DirectoryImmunizationQueryContext directoryImmunizationQueryContext = new DirectoryImmunizationQueryContext(cb, cq, immunization); + DirectoryImmunizationJoins joins = directoryImmunizationQueryContext.getJoins(); final Join person = joins.getPerson(); @@ -175,8 +171,7 @@ public long count(ImmunizationCriteria criteria) { final CriteriaQuery cq = cb.createQuery(Long.class); final Root immunization = cq.from(DirectoryImmunization.class); - DirectoryImmunizationQueryContext immunizationQueryContext = - new DirectoryImmunizationQueryContext<>(cb, cq, immunization); + DirectoryImmunizationQueryContext immunizationQueryContext = new DirectoryImmunizationQueryContext(cb, cq, immunization); buildWhereCondition(criteria, cb, cq, immunizationQueryContext); @@ -188,7 +183,7 @@ private void buildWhereCondition( ImmunizationCriteria criteria, CriteriaBuilder cb, CriteriaQuery cq, - DirectoryImmunizationQueryContext directoryImmunizationQueryContext) { + DirectoryImmunizationQueryContext directoryImmunizationQueryContext) { Predicate filter = createUserFilter(directoryImmunizationQueryContext); if (criteria != null) { final Predicate criteriaFilter = buildCriteriaFilter(criteria, directoryImmunizationQueryContext); @@ -200,9 +195,8 @@ private void buildWhereCondition( } } - private Predicate buildCriteriaFilter( - ImmunizationCriteria criteria, - DirectoryImmunizationQueryContext directoryImmunizationQueryContext) { + private Predicate buildCriteriaFilter(ImmunizationCriteria criteria, DirectoryImmunizationQueryContext directoryImmunizationQueryContext) { + final DirectoryImmunizationJoins joins = (DirectoryImmunizationJoins) directoryImmunizationQueryContext.getJoins(); final CriteriaBuilder cb = directoryImmunizationQueryContext.getCriteriaBuilder(); final From from = directoryImmunizationQueryContext.getRoot(); @@ -231,14 +225,8 @@ private Predicate buildCriteriaFilter( CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, person.get(Person.LAST_NAME), textFilter), CriteriaBuilderHelper.ilike(cb, person.get(Person.UUID), textFilter), - CriteriaBuilderHelper.ilike( - cb, - (Expression) personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_EMAIL_SUBQUERY), - textFilter), - phoneNumberPredicate( - cb, - (Expression) personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_PHONE_SUBQUERY), - textFilter), + CriteriaBuilderHelper.ilike(cb, personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_EMAIL_SUBQUERY), textFilter), + phoneNumberPredicate(cb, personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_PHONE_SUBQUERY), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, location.get(Location.STREET), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, location.get(Location.CITY), textFilter), CriteriaBuilderHelper.ilike(cb, location.get(Location.POSTAL_CODE), textFilter), @@ -293,11 +281,11 @@ private Path buildPathForDateFilter( if (dateField != null) { if (LastVaccinationDate.VACCINATION_DATE.equals(dateField)) { final Join lastVaccinationDate = - ((DirectoryImmunizationJoins) directoryImmunizationQueryContext.getJoins()).getLastVaccinationDate(); + directoryImmunizationQueryContext.getJoins().getLastVaccinationDate(); path = lastVaccinationDate.get(LastVaccinationDate.VACCINATION_DATE); } else if (FirstVaccinationDate.VACCINATION_DATE.equals(dateField)) { final Join firstVaccinationDate = - ((DirectoryImmunizationJoins) directoryImmunizationQueryContext.getJoins()).getFirstVaccinationDate(); + directoryImmunizationQueryContext.getJoins().getFirstVaccinationDate(); path = firstVaccinationDate.get(FirstVaccinationDate.VACCINATION_DATE); } else { path = directoryImmunizationQueryContext.getRoot().get(dateField); @@ -324,7 +312,8 @@ private String getDateFieldFromDateType(ImmunizationDateType immunizationDateTyp return null; } - private Predicate createUserFilter(DirectoryImmunizationQueryContext qc) { + private Predicate createUserFilter(DirectoryImmunizationQueryContext qc) { + User currentUser = getCurrentUser(); if (currentUser == null) { return null; @@ -340,12 +329,7 @@ private Predicate createUserFilter(DirectoryImmunizationQueryContext(((DirectoryImmunizationJoins) qc.getJoins()).getPerson()), - currentUser, - false) + .of(qc.getQuery(), qc.getCriteriaBuilder(), new PersonJoins(qc.getJoins().getPerson()), currentUser, false) .inJurisdictionOrOwned()); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjb.java index 9cbcccf4e46..342268ce132 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjb.java @@ -115,6 +115,7 @@ import de.symeda.sormas.backend.vaccination.VaccinationFacadeEjb.VaccinationFacadeEjbLocal; @Stateless(name = "ImmunizationFacade") +@RolesAllowed(UserRight._IMMUNIZATION_VIEW) public class ImmunizationFacadeEjb extends AbstractCoreFacadeEjb @@ -288,11 +289,8 @@ public List getDeletedUuidsSince(Date since) { } @Override + @RolesAllowed(UserRight._IMMUNIZATION_DELETE) public void delete(String uuid) { - if (!userService.hasRight(UserRight.IMMUNIZATION_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete immunizations"); - } - Immunization immunization = service.getByUuid(uuid); service.delete(immunization); } @@ -319,10 +317,16 @@ public List getSimilarImmunizations(ImmunizationSimilarityCrite } @Override + @RolesAllowed({ + UserRight._IMMUNIZATION_CREATE, + UserRight._IMMUNIZATION_EDIT }) public ImmunizationDto save(@Valid @NotNull ImmunizationDto dto) { return save(dto, true, true); } + @RolesAllowed({ + UserRight._IMMUNIZATION_CREATE, + UserRight._IMMUNIZATION_EDIT }) public ImmunizationDto save(@Valid @NotNull ImmunizationDto dto, boolean checkChangeDate, boolean internal) { Immunization existingImmunization = service.getByUuid(dto.getUuid()); @@ -354,7 +358,7 @@ public ImmunizationDto save(@Valid @NotNull ImmunizationDto dto, boolean checkCh vaccinationFacade.updateVaccinationStatuses( vaccination.getVaccinationDate(), oldVaccinationDate, - immunization.getPersonId(), + immunization.getPerson().getId(), immunization.getDisease()); }); @@ -441,10 +445,8 @@ public Page getIndexPage( return new Page<>(immunizationIndexList, offset, size, totalElementCount); } + @RolesAllowed(UserRight._IMMUNIZATION_DELETE) public List deleteImmunizations(List immunizationUuids) { - if (!userService.hasRight(UserRight.IMMUNIZATION_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete immunizations."); - } List deletedImmunizationUuids = new ArrayList<>(); List immunizationsToBeDeleted = service.getByUuids(immunizationUuids); if (immunizationsToBeDeleted != null) { @@ -524,11 +526,13 @@ protected Immunization fillOrBuildEntity( } @Override + @RolesAllowed(UserRight._SYSTEM) public void updateImmunizationStatuses() { service.updateImmunizationStatuses(); } @Override + @RolesAllowed(UserRight._IMMUNIZATION_EDIT) public boolean linkRecoveryImmunizationToSearchedCase(String specificCaseSearchValue, ImmunizationDto immunization) { CaseCriteria criteria = new CaseCriteria(); @@ -582,6 +586,7 @@ public List getByPersonUuids(List uuids) { return service.getByPersonUuids(uuids).stream().map(i -> toDto(i)).collect(Collectors.toList()); } + @RolesAllowed(UserRight._IMMUNIZATION_EDIT) public void syncSharesAsync(Immunization immunization) { //sync case/contact/event this immunization was shared with List> syncParams = immunization.getSormasToSormasShares() @@ -629,6 +634,9 @@ public void syncSharesAsync(Immunization immunization) { }, 5, TimeUnit.SECONDS); } + @RolesAllowed({ + UserRight._IMMUNIZATION_CREATE, + UserRight._PERSON_EDIT }) public void copyImmunizationsToLeadPerson(ImmunizationDto immunizationDto, PersonDto leadPerson) { Immunization newImmunization = new Immunization(); newImmunization.setUuid(DataHelper.createUuid()); @@ -642,6 +650,18 @@ public void copyImmunizationsToLeadPerson(ImmunizationDto immunizationDto, Perso service.ensurePersisted(newImmunization); } + @Override + @RolesAllowed(UserRight._IMMUNIZATION_ARCHIVE) + public void archive(String entityUuid, Date endOfProcessingDate) { + super.archive(entityUuid, endOfProcessingDate); + } + + @Override + @RolesAllowed(UserRight._IMMUNIZATION_ARCHIVE) + public void dearchive(List entityUuids, String dearchiveReason) { + super.dearchive(entityUuids, dearchiveReason); + } + @LocalBean @Stateless public static class ImmunizationFacadeEjbLocal extends ImmunizationFacadeEjb { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJoins.java index 8921c96747f..d1f94f292cd 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJoins.java @@ -20,57 +20,16 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.infrastructure.community.Community; -import de.symeda.sormas.backend.infrastructure.district.District; -import de.symeda.sormas.backend.infrastructure.region.Region; -import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class ImmunizationJoins extends AbstractDomainObjectJoins { +public class ImmunizationJoins extends BaseImmunizationJoins { - private Join person; - private Join responsibleRegion; - private Join responsibleDistrict; - private Join responsibleCommunity; private Join reportingUser; - public ImmunizationJoins(From root) { + public ImmunizationJoins(From root) { super(root); } - public Join getPerson() { - return getOrCreate(person, Immunization.PERSON, JoinType.LEFT, this::setPerson); - } - - private void setPerson(Join person) { - this.person = person; - } - - public Join getResponsibleRegion() { - return getOrCreate(responsibleRegion, Immunization.RESPONSIBLE_REGION, JoinType.LEFT, this::setResponsibleRegion); - } - - private void setResponsibleRegion(Join responsibleRegion) { - this.responsibleRegion = responsibleRegion; - } - - public Join getResponsibleDistrict() { - return getOrCreate(responsibleDistrict, Immunization.RESPONSIBLE_DISTRICT, JoinType.LEFT, this::setResponsibleDistrict); - } - - private void setResponsibleDistrict(Join responsibleDistrict) { - this.responsibleDistrict = responsibleDistrict; - } - - public Join getResponsibleCommunity() { - return getOrCreate(responsibleCommunity, Immunization.RESPONSIBLE_COMMUNITY, JoinType.LEFT, this::setResponsibleCommunity); - } - - private void setResponsibleCommunity(Join responsibleCommunity) { - this.responsibleCommunity = responsibleCommunity; - } - public Join getReportingUser() { return getOrCreate(reportingUser, Immunization.REPORTING_USER, JoinType.LEFT, this::setReportingUser); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJurisdictionPredicateValidator.java index 50d9d9324b7..e80265d0715 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationJurisdictionPredicateValidator.java @@ -23,7 +23,6 @@ import javax.persistence.criteria.Predicate; import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.immunization.joins.ImmunizationJoins; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; @@ -32,25 +31,21 @@ public class ImmunizationJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final ImmunizationJoins joins; + private final ImmunizationJoins joins; private ImmunizationJurisdictionPredicateValidator( CriteriaQuery cq, CriteriaBuilder cb, - ImmunizationJoins joins, + ImmunizationJoins joins, User user, List associatedJurisdictionValidators) { + super(cb, user, null, associatedJurisdictionValidators); this.joins = joins; } public static ImmunizationJurisdictionPredicateValidator of(ImmunizationQueryContext qc, User user) { - return new ImmunizationJurisdictionPredicateValidator( - qc.getQuery(), - qc.getCriteriaBuilder(), - (ImmunizationJoins) qc.getJoins(), - user, - null); + return new ImmunizationJurisdictionPredicateValidator(qc.getQuery(), qc.getCriteriaBuilder(), qc.getJoins(), user, null); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationQueryContext.java index 3abb4b077b9..2e11967430f 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationQueryContext.java @@ -22,9 +22,8 @@ import de.symeda.sormas.backend.common.QueryContext; import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.immunization.joins.ImmunizationJoins; -public class ImmunizationQueryContext extends QueryContext { +public class ImmunizationQueryContext extends QueryContext { public ImmunizationQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { super(cb, query, root, new ImmunizationJoins(root)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationService.java index 2369a734f31..4c016f6edfb 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/ImmunizationService.java @@ -17,7 +17,6 @@ import java.sql.Timestamp; import java.time.Instant; -import java.util.Collections; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -37,8 +36,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.apache.commons.collections.CollectionUtils; - import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.EditPermissionType; import de.symeda.sormas.api.feature.FeatureType; @@ -59,12 +56,12 @@ import de.symeda.sormas.backend.contact.Contact; import de.symeda.sormas.backend.immunization.entity.DirectoryImmunization; import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.immunization.joins.ImmunizationJoins; import de.symeda.sormas.backend.immunization.transformers.ImmunizationListEntryDtoResultTransformer; import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.person.PersonJoins; import de.symeda.sormas.backend.person.PersonJurisdictionPredicateValidator; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfo; +import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoFacadeEjb.SormasToSormasShareInfoFacadeEjbLocal; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoService; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.user.UserService; @@ -82,6 +79,8 @@ public class ImmunizationService extends AbstractCoreAdoService { @EJB private UserService userService; @EJB + private SormasToSormasShareInfoFacadeEjbLocal sormasToSormasShareInfoFacade; + @EJB private SormasToSormasShareInfoService sormasToSormasShareInfoService; public ImmunizationService() { @@ -91,11 +90,15 @@ public ImmunizationService() { @Override public void deletePermanent(Immunization immunization) { - sormasToSormasShareInfoService.getByAssociatedEntity(SormasToSormasShareInfo.IMMUNIZATION, immunization.getUuid()) - .forEach(sormasToSormasShareInfo -> { - sormasToSormasShareInfo.setImmunization(null); - sormasToSormasShareInfoService.ensurePersisted(sormasToSormasShareInfo); - }); + // Remove the immunization from any S2S share info referencing it + sormasToSormasShareInfoService.getByAssociatedEntity(SormasToSormasShareInfo.IMMUNIZATION, immunization.getUuid()).forEach(s -> { + s.setImmunization(null); + if (sormasToSormasShareInfoFacade.hasAnyEntityReference(s)) { + sormasToSormasShareInfoService.ensurePersisted(s); + } else { + sormasToSormasShareInfoService.deletePermanent(s); + } + }); super.deletePermanent(immunization); } @@ -105,7 +108,7 @@ public List getEntriesList(Long personId, Disease dise final CriteriaQuery cq = cb.createQuery(Object[].class); final Root immunization = cq.from(Immunization.class); - ImmunizationQueryContext immunizationQueryContext = new ImmunizationQueryContext<>(cb, cq, immunization); + ImmunizationQueryContext immunizationQueryContext = new ImmunizationQueryContext(cb, cq, immunization); cq.multiselect( immunization.get(Immunization.UUID), @@ -137,7 +140,7 @@ public boolean inJurisdictionOrOwned(Immunization immunization) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Boolean.class); Root root = cq.from(Immunization.class); - cq.multiselect(JurisdictionHelper.booleanSelector(cb, createUserFilter(new ImmunizationQueryContext<>(cb, cq, root)))); + cq.multiselect(JurisdictionHelper.booleanSelector(cb, createUserFilter(new ImmunizationQueryContext(cb, cq, root)))); cq.where(cb.equal(root.get(Immunization.UUID), immunization.getUuid())); return em.createQuery(cq).getResultStream().anyMatch(isInJurisdiction -> isInJurisdiction); } @@ -285,8 +288,8 @@ public List getSimilarImmunizations(ImmunizationSimilarityCriteria cri final CriteriaQuery cq = cb.createQuery(Object[].class); final Root from = cq.from(Immunization.class); - ImmunizationQueryContext immunizationQueryContext = new ImmunizationQueryContext<>(cb, cq, from); - ImmunizationJoins joins = (ImmunizationJoins) immunizationQueryContext.getJoins(); + ImmunizationQueryContext immunizationQueryContext = new ImmunizationQueryContext(cb, cq, from); + ImmunizationJoins joins = immunizationQueryContext.getJoins(); cq.multiselect( from.get(Immunization.UUID), @@ -400,7 +403,7 @@ public List getByPersonIds(List personIds) { CriteriaQuery cq = cb.createQuery(Immunization.class); Root from = cq.from(Immunization.class); - ImmunizationQueryContext immunizationQueryContext = new ImmunizationQueryContext<>(cb, cq, from); + ImmunizationQueryContext immunizationQueryContext = new ImmunizationQueryContext(cb, cq, from); Predicate filter = createUserFilter(immunizationQueryContext); filter = CriteriaBuilderHelper.andInValues(personIds, filter, cb, from.get(Immunization.PERSON_ID)); @@ -447,28 +450,24 @@ public void unlinkRelatedCase(Case caze) { } public List getByPersonUuids(List personUuids) { - if (CollectionUtils.isEmpty(personUuids)) { - // Avoid empty IN clause - return Collections.emptyList(); - } else { - List immunizations = new LinkedList<>(); - IterableHelper.executeBatched(personUuids, ModelConstants.PARAMETER_LIMIT, batchedPersonUuids -> { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(Immunization.class); - Root immunizationRoot = cq.from(Immunization.class); - Join personJoin = immunizationRoot.join(Immunization.PERSON, JoinType.INNER); + List immunizations = new LinkedList<>(); + IterableHelper.executeBatched(personUuids, ModelConstants.PARAMETER_LIMIT, batchedPersonUuids -> { - cq.where(personJoin.get(AbstractDomainObject.UUID).in(batchedPersonUuids)); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Immunization.class); + Root immunizationRoot = cq.from(Immunization.class); + Join personJoin = immunizationRoot.join(Immunization.PERSON, JoinType.INNER); - immunizations.addAll(em.createQuery(cq).getResultList()); + cq.where(personJoin.get(AbstractDomainObject.UUID).in(batchedPersonUuids)); - }); - return immunizations; - } + immunizations.addAll(em.createQuery(cq).getResultList()); + }); + return immunizations; } - private Predicate createUserFilter(ImmunizationQueryContext qc) { + private Predicate createUserFilter(ImmunizationQueryContext qc) { + User currentUser = getCurrentUser(); if (currentUser == null) { return null; @@ -483,7 +482,7 @@ private Predicate createUserFilter(ImmunizationQueryContext qc) { cb, cb.equal(qc.getRoot().get(Immunization.REPORTING_USER), currentUser), PersonJurisdictionPredicateValidator - .of(qc.getQuery(), cb, new PersonJoins<>(((ImmunizationJoins) qc.getJoins()).getPerson()), currentUser, false) + .of(qc.getQuery(), cb, new PersonJoins(qc.getJoins().getPerson()), currentUser, false) .inJurisdictionOrOwned()); } @@ -527,7 +526,8 @@ private Predicate createDateFilter(CriteriaBuilder cb, Root from, } } - private Predicate buildCriteriaFilter(Long personId, Disease disease, ImmunizationQueryContext immunizationQueryContext) { + private Predicate buildCriteriaFilter(Long personId, Disease disease, ImmunizationQueryContext immunizationQueryContext) { + final CriteriaBuilder cb = immunizationQueryContext.getCriteriaBuilder(); final From from = immunizationQueryContext.getRoot(); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/ImmunizationJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/ImmunizationJoins.java deleted file mode 100644 index cace79f580a..00000000000 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/immunization/joins/ImmunizationJoins.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SORMAS® - Surveillance Outbreak Response Management & Analysis System - * Copyright © 2016-2021 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.backend.immunization.joins; - -import javax.persistence.criteria.From; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.JoinType; - -import de.symeda.sormas.backend.immunization.entity.Immunization; -import de.symeda.sormas.backend.user.User; - -public class ImmunizationJoins extends BaseImmunizationJoins { - - private Join reportingUser; - - public ImmunizationJoins(From root) { - super(root); - } - - public Join getReportingUser() { - return getOrCreate(reportingUser, Immunization.REPORTING_USER, JoinType.LEFT, this::setReportingUser); - } - - private void setReportingUser(Join reportingUser) { - this.reportingUser = reportingUser; - } -} diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/infrastructure/ClientInfraSyncFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/infrastructure/ClientInfraSyncFacadeEjb.java index d34b0ec4d56..30c01949749 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/infrastructure/ClientInfraSyncFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/infrastructure/ClientInfraSyncFacadeEjb.java @@ -99,10 +99,6 @@ public InfrastructureSyncDto getInfrastructureSyncData(InfrastructureChangeDates if (featureConfigurationFacade.isFeatureEnabled(FeatureType.INFRASTRUCTURE_TYPE_AREA)) { sync.setAreas(areaFacade.getAllAfter(changeDates.getAreaChangeDate())); } - if (featureConfigurationFacade.isFeatureEnabled(FeatureType.CAMPAIGNS)) { - sync.setCampaigns(campaignFacade.getAllAfter(changeDates.getCampaignChangeDate())); - sync.setCampaignFormMetas(campaignFormMetaFacade.getAllAfter(changeDates.getCampaignFormMetaChangeDate())); - } return sync; } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessage.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessage.java index 111410fc588..5a4ee3355d9 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessage.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessage.java @@ -19,21 +19,23 @@ import de.symeda.auditlog.api.Audited; import de.symeda.sormas.api.Disease; +import de.symeda.sormas.api.labmessage.ExternalMessageType; import de.symeda.sormas.api.labmessage.LabMessageStatus; import de.symeda.sormas.api.person.Sex; import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.sample.SampleMaterial; import de.symeda.sormas.api.sample.SpecimenCondition; -import de.symeda.sormas.backend.common.DeletableAdo; +import de.symeda.sormas.backend.common.AbstractDomainObject; import de.symeda.sormas.backend.sample.Sample; import de.symeda.sormas.backend.user.User; @Entity(name = "labmessage") @Audited -public class LabMessage extends DeletableAdo { +public class LabMessage extends AbstractDomainObject { public static final String TABLE_NAME = "labmessage"; + public static final String TYPE = "type"; public static final String TESTED_DISEASE = "testedDisease"; public static final String MESSAGE_DATE_TIME = "messageDateTime"; public static final String SAMPLE_DATE_TIME = "sampleDateTime"; @@ -65,6 +67,7 @@ public class LabMessage extends DeletableAdo { public static final String SAMPLE = "sample"; public static final String ASSIGNEE = "assignee"; + private ExternalMessageType type; private Disease testedDisease; private Date messageDateTime; private Date sampleDateTime; @@ -101,6 +104,15 @@ public class LabMessage extends DeletableAdo { private LabMessageStatus status = LabMessageStatus.UNPROCESSED; private User assignee; + @Enumerated(EnumType.STRING) + public ExternalMessageType getType() { + return type; + } + + public void setType(ExternalMessageType type) { + this.type = type; + } + @Enumerated(EnumType.STRING) public Disease getTestedDisease() { return testedDisease; @@ -381,4 +393,5 @@ public Sample getSample() { public void setSample(Sample sample) { this.sample = sample; } + } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjb.java index 0716a014324..319389e7328 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjb.java @@ -9,6 +9,8 @@ import java.util.List; import java.util.stream.Collectors; +import javax.annotation.security.PermitAll; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -28,12 +30,14 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; +import de.symeda.sormas.api.user.UserRight; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import de.symeda.sormas.api.ReferenceDto; import de.symeda.sormas.api.caze.CaseReferenceDto; +import de.symeda.sormas.api.common.Page; import de.symeda.sormas.api.contact.ContactReferenceDto; import de.symeda.sormas.api.event.EventParticipantReferenceDto; import de.symeda.sormas.api.i18n.I18nProperties; @@ -65,10 +69,12 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "LabMessageFacade") +@RolesAllowed(UserRight._LAB_MESSAGES) public class LabMessageFacadeEjb implements LabMessageFacade { public static final List VALID_SORT_PROPERTY_NAMES = Arrays.asList( LabMessageIndexDto.UUID, + LabMessageIndexDto.TYPE, LabMessageIndexDto.PERSON_FIRST_NAME, LabMessageIndexDto.PERSON_LAST_NAME, LabMessageIndexDto.PERSON_POSTAL_CODE, @@ -101,6 +107,7 @@ LabMessage fromDto(@NotNull LabMessageDto source, LabMessage target, boolean che target = DtoHelper.fillOrBuildEntity(source, target, LabMessage::new, checkChangeDate); + target.setType(source.getType()); target.setLabMessageDetails(source.getLabMessageDetails()); target.setLabSampleId(source.getLabSampleId()); target.setTestedDisease(source.getTestedDisease()); @@ -167,6 +174,7 @@ public LabMessageDto toDto(LabMessage source) { LabMessageDto target = new LabMessageDto(); DtoHelper.fillDto(target, source); + target.setType(source.getType()); target.setLabMessageDetails(source.getLabMessageDetails()); target.setLabSampleId(source.getLabSampleId()); target.setTestedDisease(source.getTestedDisease()); @@ -209,14 +217,13 @@ public LabMessageDto toDto(LabMessage source) { } @Override - // Also returns deleted lab messages public LabMessageDto getByUuid(String uuid) { return toDto(labMessageService.getByUuid(uuid)); } @Override public void deleteLabMessage(String uuid) { - labMessageService.delete(labMessageService.getByUuid(uuid)); + labMessageService.deletePermanent(labMessageService.getByUuid(uuid)); } @Override @@ -224,7 +231,7 @@ public void deleteLabMessages(List uuids) { List labMessages = labMessageService.getByUuids(uuids); for (LabMessage labMessage : labMessages) { if (labMessage.getStatus() != LabMessageStatus.PROCESSED) { - labMessageService.delete(labMessage); + labMessageService.deletePermanent(labMessage); } } } @@ -240,7 +247,6 @@ public void bulkAssignLabMessages(List uuids, UserReferenceDto userRef) } @Override - // Does not return deleted lab messages public List getForSample(SampleReferenceDto sample) { List labMessages = labMessageService.getForSample(sample); @@ -291,6 +297,7 @@ public List getIndexList(LabMessageCriteria criteria, Intege cq.multiselect( labMessage.get(LabMessage.UUID), + labMessage.get(LabMessage.TYPE), labMessage.get(LabMessage.MESSAGE_DATE_TIME), labMessage.get(LabMessage.LAB_NAME), labMessage.get(LabMessage.LAB_POSTAL_CODE), @@ -307,12 +314,15 @@ public List getIndexList(LabMessageCriteria criteria, Intege userJoin.get(User.FIRST_NAME), userJoin.get(User.LAST_NAME)); - Predicate whereFilter = null; + Predicate filter = null; + if (criteria != null) { - whereFilter = labMessageService.buildCriteriaFilter(cb, labMessage, criteria); + filter = labMessageService.buildCriteriaFilter(cb, labMessage, criteria); } - cq.where(whereFilter); + if (filter != null) { + cq.where(filter); + } // Distinct is necessary here to avoid duplicate results due to the user role join in taskService.createAssigneeFilter cq.distinct(true); @@ -341,6 +351,12 @@ public List getIndexList(LabMessageCriteria criteria, Intege return QueryHelper.getResultList(em, cq, first, max); } + public Page getIndexPage(LabMessageCriteria criteria, Integer offset, Integer size, List sortProperties) { + List labMessageIndexList = getIndexList(criteria, offset, size, sortProperties); + long totalElementCount = count(criteria); + return new Page<>(labMessageIndexList, offset, size, totalElementCount); + } + /** * This method marks the previously unfinished system events as UNCLEAR(if any exists) and creates a new event with status STARTED. * If the fetching succeeds, the status of the currentSync is changed to SUCCESS. @@ -349,6 +365,9 @@ public List getIndexList(LabMessageCriteria criteria, Intege * @return An indication whether the fetching of new labMessage was successful. If it was not, an error message meant for UI users. */ @Override + @RolesAllowed({ + UserRight._SYSTEM, + UserRight._LAB_MESSAGES }) public LabMessageFetchResult fetchAndSaveExternalLabMessages(Date since) { SystemEventDto currentSync = syncFacadeEjb.startSyncFor(SystemEventType.FETCH_LAB_MESSAGES); @@ -400,6 +419,7 @@ private ExternalLabResultsFacade getExternalLabResultsFacade() throws NamingExce } @Override + @PermitAll public String getLabMessagesAdapterVersion() throws NamingException { ExternalLabResultsFacade labResultsFacade = getExternalLabResultsFacade(); return labResultsFacade.getVersion(); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageService.java index cb175d08f30..35785d9df99 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageService.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.List; +import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.criteria.CriteriaBuilder; @@ -19,9 +20,8 @@ import de.symeda.sormas.api.sample.SampleReferenceDto; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.backend.caze.Case; -import de.symeda.sormas.backend.common.AbstractDeletableAdoService; import de.symeda.sormas.backend.common.AbstractDomainObject; -import de.symeda.sormas.backend.common.DeletableAdo; +import de.symeda.sormas.backend.common.AdoServiceWithUserFilter; import de.symeda.sormas.backend.common.CriteriaBuilderHelper; import de.symeda.sormas.backend.contact.Contact; import de.symeda.sormas.backend.event.EventParticipant; @@ -30,18 +30,21 @@ @Stateless @LocalBean -public class LabMessageService extends AbstractDeletableAdoService { +public class LabMessageService extends AdoServiceWithUserFilter { + + @EJB + private TestReportService testReportService; public LabMessageService() { super(LabMessage.class); } - /** - * Creates a default filter that should be used as the basis of queries that do not use {@link LabMessageCriteria}. - * This essentially removes {@link DeletableAdo#isDeleted()} lab messages from the queries. - */ - public Predicate createDefaultFilter(CriteriaBuilder cb, Root root) { - return cb.isFalse(root.get(LabMessage.DELETED)); + @Override + public void deletePermanent(LabMessage labMessage) { + + labMessage.getTestReports().forEach(t -> testReportService.deletePermanent(t)); + + super.deletePermanent(labMessage); } @Override @@ -54,6 +57,9 @@ public Predicate buildCriteriaFilter(CriteriaBuilder cb, Root labMes if (criteria.getUuid() != null) { filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(labMessage.get(LabMessage.UUID), criteria.getUuid())); } + if (criteria.getType() != null) { + filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(labMessage.get(LabMessage.TYPE), criteria.getType())); + } if (criteria.getLabMessageStatus() != null) { filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(labMessage.get(LabMessage.STATUS), criteria.getLabMessageStatus())); } @@ -129,13 +135,9 @@ public Predicate buildCriteriaFilter(CriteriaBuilder cb, Root labMes filter = CriteriaBuilderHelper.and(cb, filter, birthDateToFilter); } - if (criteria.getDeleted() != null) { - filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(labMessage.get(LabMessage.DELETED), criteria.getDeleted())); - } - if (criteria.getAssignee() != null) { if (ReferenceDto.NO_REFERENCE_UUID.equals(criteria.getAssignee().getUuid())) { - filter = cb.and(filter, labMessage.get(LabMessage.ASSIGNEE).isNull()); + filter = CriteriaBuilderHelper.and(cb, filter, labMessage.get(LabMessage.ASSIGNEE).isNull()); } else { filter = CriteriaBuilderHelper .and(cb, filter, cb.equal(labMessage.join(LabMessage.ASSIGNEE, JoinType.LEFT).get(User.UUID), criteria.getAssignee().getUuid())); @@ -169,10 +171,7 @@ public long countForCase(String caseUuid) { Join sampleJoin = labMessageRoot.join(LabMessage.SAMPLE, JoinType.LEFT); Join caseJoin = sampleJoin.join(Sample.ASSOCIATED_CASE, JoinType.LEFT); - Predicate filter = - cb.and(createDefaultFilter(cb, labMessageRoot), caseJoin.get(AbstractDomainObject.UUID).in(Collections.singleton(caseUuid))); - - cq.where(filter); + cq.where(caseJoin.get(AbstractDomainObject.UUID).in(Collections.singleton(caseUuid))); cq.select(cb.countDistinct(labMessageRoot)); return em.createQuery(cq).getSingleResult(); @@ -185,10 +184,7 @@ public long countForContact(String contactUuid) { Join sampleJoin = labMessageRoot.join(LabMessage.SAMPLE, JoinType.LEFT); Join contactJoin = sampleJoin.join(Sample.ASSOCIATED_CONTACT, JoinType.LEFT); - Predicate filter = - cb.and(createDefaultFilter(cb, labMessageRoot), contactJoin.get(AbstractDomainObject.UUID).in(Collections.singleton(contactUuid))); - - cq.where(filter); + cq.where(contactJoin.get(AbstractDomainObject.UUID).in(Collections.singleton(contactUuid))); cq.select(cb.countDistinct(labMessageRoot)); return em.createQuery(cq).getSingleResult(); @@ -201,11 +197,7 @@ public long countForEventParticipant(String eventParticipantUuid) { Join sampleJoin = labMessageRoot.join(LabMessage.SAMPLE, JoinType.LEFT); Join eventParticipantJoin = sampleJoin.join(Sample.ASSOCIATED_EVENT_PARTICIPANT, JoinType.LEFT); - Predicate filter = cb.and( - createDefaultFilter(cb, labMessageRoot), - eventParticipantJoin.get(AbstractDomainObject.UUID).in(Collections.singleton(eventParticipantUuid))); - - cq.where(filter); + cq.where(eventParticipantJoin.get(AbstractDomainObject.UUID).in(Collections.singleton(eventParticipantUuid))); cq.select(cb.countDistinct(labMessageRoot)); return em.createQuery(cq).getSingleResult(); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReport.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReport.java index d9bd20a209b..67fc82b9b5b 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReport.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReport.java @@ -19,11 +19,11 @@ import de.symeda.sormas.api.sample.PCRTestSpecification; import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.sample.PathogenTestType; -import de.symeda.sormas.backend.common.DeletableAdo; +import de.symeda.sormas.backend.common.AbstractDomainObject; @Entity(name = TestReport.TABLE_NAME) @Audited -public class TestReport extends DeletableAdo { +public class TestReport extends AbstractDomainObject { private static final long serialVersionUID = -9164498173635523905L; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportFacadeEjb.java index 539b9ea9b87..2122c96c94c 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportFacadeEjb.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -13,9 +14,11 @@ import de.symeda.sormas.api.labmessage.LabMessageReferenceDto; import de.symeda.sormas.api.labmessage.TestReportDto; import de.symeda.sormas.api.labmessage.TestReportFacade; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.backend.util.DtoHelper; @Stateless(name = "TestReportFacade") +@RolesAllowed(UserRight._LAB_MESSAGES) public class TestReportFacadeEjb implements TestReportFacade { @EJB diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportService.java index a4991226bc3..2746a71467b 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/TestReportService.java @@ -1,14 +1,15 @@ package de.symeda.sormas.backend.labmessage; -import de.symeda.sormas.backend.common.BaseAdoService; -import de.symeda.sormas.backend.common.DeletableAdo; - import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; +import de.symeda.sormas.backend.common.BaseAdoService; +import de.symeda.sormas.backend.common.DeletableAdo; + @Stateless @LocalBean public class TestReportService extends BaseAdoService { @@ -22,7 +23,7 @@ public TestReportService() { * This essentially removes {@link DeletableAdo#deleted} test reports from the queries. */ public Predicate createDefaultFilter(CriteriaBuilder cb, Root root) { - return cb.isFalse(root.get(TestReport.DELETED)); + return cb.isFalse(root.join(TestReport.LAB_MESSAGE, JoinType.LEFT).get(DeletableAdo.DELETED)); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/location/LocationJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/location/LocationJoins.java index 73aae85d618..96a0aea97fd 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/location/LocationJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/location/LocationJoins.java @@ -20,19 +20,19 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.infrastructure.facility.Facility; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class LocationJoins extends AbstractDomainObjectJoins { +public class LocationJoins extends QueryJoins { private Join region; private Join district; private Join community; private Join facility; - public LocationJoins(From root) { + public LocationJoins(From root) { super(root); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/outbreak/OutbreakFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/outbreak/OutbreakFacadeEjb.java index 48a3fe8d273..0fa34b40ae9 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/outbreak/OutbreakFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/outbreak/OutbreakFacadeEjb.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -35,6 +36,7 @@ import de.symeda.sormas.api.outbreak.OutbreakDto; import de.symeda.sormas.api.outbreak.OutbreakFacade; import de.symeda.sormas.api.user.UserReferenceDto; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.SortProperty; import de.symeda.sormas.backend.infrastructure.district.DistrictFacadeEjb; import de.symeda.sormas.backend.infrastructure.district.DistrictService; @@ -44,6 +46,7 @@ import de.symeda.sormas.backend.util.DtoHelper; @Stateless(name = "OutbreakFacade") +@RolesAllowed(UserRight._OUTBREAK_VIEW) public class OutbreakFacadeEjb implements OutbreakFacade { @EJB @@ -108,6 +111,9 @@ public Page getIndexPage(OutbreakCriteria criteria, Integer offset, } @Override + @RolesAllowed({ + UserRight._CASE_VIEW, + UserRight._OUTBREAK_VIEW }) public boolean hasOutbreak(DistrictReferenceDto district, Disease disease) { Long count = outbreakService.countByCriteria(new OutbreakCriteria().district(district).disease(disease).active(true), null); @@ -115,6 +121,7 @@ public boolean hasOutbreak(DistrictReferenceDto district, Disease disease) { } @Override + @RolesAllowed(UserRight._OUTBREAK_EDIT) public OutbreakDto startOutbreak(DistrictReferenceDto district, Disease disease) { OutbreakDto outbreak = getActiveByDistrictAndDisease(district, disease); @@ -130,6 +137,7 @@ public OutbreakDto startOutbreak(DistrictReferenceDto district, Disease disease) } @Override + @RolesAllowed(UserRight._OUTBREAK_EDIT) public OutbreakDto endOutbreak(DistrictReferenceDto district, Disease disease) { OutbreakDto outbreak = getActiveByDistrictAndDisease(district, disease); @@ -141,6 +149,7 @@ public OutbreakDto endOutbreak(DistrictReferenceDto district, Disease disease) { } @Override + @RolesAllowed(UserRight._OUTBREAK_EDIT) public OutbreakDto saveOutbreak(@Valid OutbreakDto outbreakDto) { final User currentUser = userService.getCurrentUser(); outbreakDto.setReportingUser(currentUser.toReference()); @@ -150,6 +159,7 @@ public OutbreakDto saveOutbreak(@Valid OutbreakDto outbreakDto) { } @Override + @RolesAllowed(UserRight._OUTBREAK_EDIT) public void deleteOutbreak(OutbreakDto outbreakDto) { Outbreak outbreak = outbreakService.getByUuid(outbreakDto.getUuid()); @@ -192,6 +202,9 @@ public static OutbreakDto toDto(Outbreak source) { return target; } + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public Map getOutbreakDistrictCountByDisease(OutbreakCriteria criteria) { User user = userService.getCurrentUser(); @@ -199,6 +212,9 @@ public Map getOutbreakDistrictCountByDisease(OutbreakCriteria cri } @Override + @RolesAllowed({ + UserRight._DASHBOARD_SURVEILLANCE_VIEW, + UserRight._DASHBOARD_CONTACT_VIEW }) public Long getOutbreakDistrictCount(OutbreakCriteria criteria) { User user = userService.getCurrentUser(); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java index dc6d04f9076..a26855fe2fd 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java @@ -18,6 +18,8 @@ import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.maxBy; +import de.symeda.sormas.backend.event.EventFacadeEjb; +import de.symeda.sormas.backend.event.EventParticipantFacadeEjb; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -82,6 +84,7 @@ import de.symeda.sormas.api.feature.FeatureTypeProperty; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.i18n.Validations; import de.symeda.sormas.api.immunization.ImmunizationDto; import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; @@ -109,6 +112,7 @@ import de.symeda.sormas.api.person.SymptomJournalStatus; import de.symeda.sormas.api.user.UserReferenceDto; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.utils.AccessDeniedException; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DataHelper.Pair; import de.symeda.sormas.api.utils.DateHelper; @@ -273,7 +277,7 @@ public List getByUuids(List uuids) { @Override public List getByExternalIds(List externalIds) { - return toPseudonymizedDtos(personService.getByExternalIdsBatched(externalIds)); + return toPseudonymizedDtos(personService.getByExternalIds(externalIds)); } @Override @@ -440,6 +444,7 @@ public PersonDto savePerson(@Valid PersonDto source, boolean checkChangeDate, bo restorePseudonymizedDto(source, person, existingPerson); + validateUserRights(source, existingPerson); if (!skipValidation) { validate(source); } @@ -535,6 +540,18 @@ private void computeApproximateAgeReferenceDate(PersonDto existingPerson, Person } } + private void validateUserRights(PersonDto person, PersonDto existingPerson) { + if (existingPerson != null) { + if (person.getSymptomJournalStatus() != existingPerson.getSymptomJournalStatus() + && !(userService.hasRight(UserRight.MANAGE_EXTERNAL_SYMPTOM_JOURNAL) || userService.hasRight(UserRight.EXTERNAL_VISITS))) { + throw new AccessDeniedException( + String.format( + I18nProperties.getString(Strings.errorNoRightsForChangingField), + I18nProperties.getPrefixCaption(PersonDto.I18N_PREFIX, Person.SYMPTOM_JOURNAL_STATUS))); + } + } + } + @Override public void validate(PersonDto source) throws ValidationRuntimeException { @@ -1120,8 +1137,8 @@ public void onPersonChanged(PersonDto existingPerson, Person newPerson, boolean for (EventParticipant personEventParticipant : personEventParticipants) { eventParticipantFacade.onEventParticipantChanged( - eventFacade.toDto(personEventParticipant.getEvent()), - eventParticipantFacade.toDto(personEventParticipant), + EventFacadeEjb.toEventDto(personEventParticipant.getEvent()), + EventParticipantFacadeEjb.toEventParticipantDto(personEventParticipant), personEventParticipant, syncShares); } @@ -1715,7 +1732,7 @@ public PersonDto getByContext(PersonContext context, String contextUuid) { CriteriaQuery cq = cb.createQuery(Person.class); Root root = cq.from(Person.class); - PersonJoins joins = new PersonJoins<>(root); + PersonJoins joins = new PersonJoins(root); Join contextJoin; switch (context) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJoins.java index e49a6526eb2..be0cd787160 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJoins.java @@ -15,6 +15,7 @@ package de.symeda.sormas.backend.person; +import java.util.List; import java.util.Optional; import javax.persistence.criteria.From; @@ -24,18 +25,22 @@ import de.symeda.sormas.api.person.PersonAssociation; import de.symeda.sormas.api.person.PersonCriteria; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.contact.Contact; +import de.symeda.sormas.backend.contact.ContactJoins; import de.symeda.sormas.backend.event.EventParticipant; +import de.symeda.sormas.backend.event.EventParticipantJoins; import de.symeda.sormas.backend.immunization.entity.Immunization; +import de.symeda.sormas.backend.infrastructure.country.Country; import de.symeda.sormas.backend.location.Location; import de.symeda.sormas.backend.location.LocationJoins; -import de.symeda.sormas.backend.infrastructure.country.Country; import de.symeda.sormas.backend.travelentry.TravelEntry; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class PersonJoins extends AbstractDomainObjectJoins { +public class PersonJoins extends QueryJoins { private PersonAssociation personAssociation; + private Join caze; private Join contact; private Join eventParticipant; @@ -44,13 +49,15 @@ public class PersonJoins extends AbstractDomainObjectJoins { private Join address; private Join birthCountry; private Join citizenship; + private Join> addresses; - private final LocationJoins addressJoins; + private LocationJoins addressJoins; + private CaseJoins caseJoins; + private ContactJoins contactJoins; + private EventParticipantJoins eventParticipantJoins; - public PersonJoins(From root) { + public PersonJoins(From root) { super(root); - - addressJoins = new LocationJoins<>(getAddress()); } public void configure(PersonCriteria criteria) { @@ -77,6 +84,14 @@ private void setCaze(Join caze) { this.caze = caze; } + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); + } + + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; + } + public Join getContact() { return getOrCreate(contact, Person.CONTACTS, getJoinType(PersonAssociation.CONTACT), this::setContact); } @@ -85,6 +100,14 @@ private void setContact(Join contact) { this.contact = contact; } + public ContactJoins getContactJoins() { + return getOrCreate(contactJoins, () -> new ContactJoins(getContact()), this::setContactJoins); + } + + private void setContactJoins(ContactJoins contactJoins) { + this.contactJoins = contactJoins; + } + public Join getEventParticipant() { return getOrCreate(eventParticipant, Person.EVENT_PARTICIPANTS, getJoinType(PersonAssociation.EVENT_PARTICIPANT), this::setEventParticipant); } @@ -93,6 +116,14 @@ private void setEventParticipant(Join eventParticipant this.eventParticipant = eventParticipant; } + public EventParticipantJoins getEventParticipantJoins() { + return getOrCreate(eventParticipantJoins, () -> new EventParticipantJoins(getEventParticipant()), this::setEventParticipantJoins); + } + + private void setEventParticipantJoins(EventParticipantJoins eventParticipantJoins) { + this.eventParticipantJoins = eventParticipantJoins; + } + public Join getImmunization() { return getOrCreate(immunization, Person.IMMUNIZATIONS, getJoinType(PersonAssociation.IMMUNIZATION), this::setImmunization); } @@ -109,10 +140,6 @@ public void setTravelEntry(Join travelEntry) { this.travelEntry = travelEntry; } - public LocationJoins getAddressJoins() { - return addressJoins; - } - public Join getAddress() { return getOrCreate(address, Person.ADDRESS, JoinType.LEFT, this::setAddress); } @@ -136,4 +163,20 @@ public Join getCitizenship() { private void setCitizenship(Join citizenship) { this.citizenship = citizenship; } + + public Join> getAddresses() { + return getOrCreate(addresses, Person.ADDRESSES, JoinType.LEFT, this::setAddresses); + } + + private void setAddresses(Join> personAddresses) { + this.addresses = personAddresses; + } + + public LocationJoins getAddressJoins() { + return getOrCreate(addressJoins, () -> new LocationJoins(getAddress()), this::setAddressJoins); + } + + private void setAddressJoins(LocationJoins addressJoins) { + this.addressJoins = addressJoins; + } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJurisdictionPredicateValidator.java index e01710fcfa2..4d8dd4a877d 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonJurisdictionPredicateValidator.java @@ -56,15 +56,15 @@ public static PersonJurisdictionPredicateValidator of( boolean includeImmunizations) { final List associatedJurisdictionValidators = new ArrayList<>(); - associatedJurisdictionValidators.add(CaseJurisdictionPredicateValidator.of(new CaseQueryContext(cb, cq, joins.getCaze()), user)); - associatedJurisdictionValidators.add(ContactJurisdictionPredicateValidator.of(new ContactQueryContext<>(cb, cq, joins.getContact()), user)); + associatedJurisdictionValidators.add(CaseJurisdictionPredicateValidator.of(new CaseQueryContext(cb, cq, joins.getCaseJoins()), user)); + associatedJurisdictionValidators.add(ContactJurisdictionPredicateValidator.of(new ContactQueryContext(cb, cq, joins.getContactJoins()), user)); associatedJurisdictionValidators - .add(EventParticipantJurisdictionPredicateValidator.of(new EventParticipantQueryContext<>(cb, cq, joins.getEventParticipant()), user)); + .add(EventParticipantJurisdictionPredicateValidator.of(new EventParticipantQueryContext(cb, cq, joins.getEventParticipantJoins()), user)); associatedJurisdictionValidators .add(TravelEntryJurisdictionPredicateValidator.of(new TravelEntryQueryContext(cb, cq, joins.getTravelEntry()), user)); if (includeImmunizations) { associatedJurisdictionValidators - .add(ImmunizationJurisdictionPredicateValidator.of(new ImmunizationQueryContext<>(cb, cq, joins.getImmunization()), user)); + .add(ImmunizationJurisdictionPredicateValidator.of(new ImmunizationQueryContext(cb, cq, joins.getImmunization()), user)); } return new PersonJurisdictionPredicateValidator(cb, joins, user, associatedJurisdictionValidators); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonQueryContext.java index 01224b62c4d..5f49cd25230 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonQueryContext.java @@ -8,15 +8,15 @@ import de.symeda.sormas.api.person.PersonContactDetailType; import de.symeda.sormas.backend.common.QueryContext; -public class PersonQueryContext extends QueryContext { +public class PersonQueryContext extends QueryContext { public static final String PERSON_PHONE_SUBQUERY = "personPhoneSubquery"; public static final String PERSON_EMAIL_SUBQUERY = "personEmailSubquery"; public static final String PERSON_PHONE_OWNER_SUBQUERY = "personPhoneOwnerSubquery"; public static final String PERSON_OTHER_CONTACT_DETAILS_SUBQUERY = "personOtherContactDetailsSubQuery"; - public PersonQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { - super(cb, query, root, new PersonJoins<>(root)); + public PersonQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { + super(cb, query, root, new PersonJoins(root)); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonService.java index 43dbad7a781..f67ff0b60b7 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonService.java @@ -55,7 +55,6 @@ import javax.transaction.Transactional; import javax.validation.constraints.NotNull; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import de.symeda.sormas.api.Disease; @@ -256,7 +255,7 @@ public Predicate createUserFilter(PersonQueryContext personQueryContext, PersonC caseService.createDefaultFilter(cb, joins.getCaze())); final Supplier contactFilter = () -> { final Predicate contactUserFilter = contactService.createUserFilterForJoin( - new ContactQueryContext(cb, cq, joins.getContact()), + new ContactQueryContext(cb, cq, joins.getContactJoins()), new ContactCriteria().includeContactsFromOtherJurisdictions(false)); return CriteriaBuilderHelper.and(cb, contactUserFilter, contactService.createDefaultFilter(cb, joins.getContact())); }; @@ -340,14 +339,8 @@ public Predicate buildCriteriaFilter(PersonCriteria personCriteria, PersonQueryC CriteriaBuilderHelper.unaccentedIlike(cb, personFrom.get(Person.FIRST_NAME), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, personFrom.get(Person.LAST_NAME), textFilter), CriteriaBuilderHelper.ilike(cb, personFrom.get(Person.UUID), textFilter), - CriteriaBuilderHelper.ilike( - cb, - (Expression) personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_EMAIL_SUBQUERY), - textFilter), - phoneNumberPredicate( - cb, - (Expression) personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_PHONE_SUBQUERY), - textFilter), + CriteriaBuilderHelper.ilike(cb, personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_EMAIL_SUBQUERY), textFilter), + phoneNumberPredicate(cb, personQueryContext.getSubqueryExpression(PersonQueryContext.PERSON_PHONE_SUBQUERY), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, location.get(Location.STREET), textFilter), CriteriaBuilderHelper.unaccentedIlike(cb, location.get(Location.CITY), textFilter), CriteriaBuilderHelper.ilike(cb, location.get(Location.POSTAL_CODE), textFilter), @@ -868,20 +861,6 @@ public void updateExternalData(List externalData) throws Extern ExternalDataUtil.updateExternalData(externalData, this::getByUuids, this::ensurePersisted); } - public List getByExternalIdsBatched(List externalIds) { - if (CollectionUtils.isEmpty(externalIds)) { - // Avoid empty IN clause - return Collections.emptyList(); - } else if (externalIds.size() > ModelConstants.PARAMETER_LIMIT) { - List persons = new LinkedList<>(); - IterableHelper - .executeBatched(externalIds, ModelConstants.PARAMETER_LIMIT, batchedPersonUuids -> persons.addAll(getByExternalIds(externalIds))); - return persons; - } else { - return getByExternalIds(externalIds); - } - } - public Long getIdByUuid(@NotNull String uuid) { if (uuid == null) { @@ -900,24 +879,22 @@ public Long getIdByUuid(@NotNull String uuid) { return q.getResultList().stream().findFirst().orElse(null); } - private List getByExternalIds(List externalIds) { - if (externalIds == null || externalIds.isEmpty()) { - return null; - } + public List getByExternalIds(List externalIds) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(getElementClass()); - Root from = cq.from(getElementClass()); - cq.where(from.get(Person.EXTERNAL_ID).in(externalIds)); + List persons = new LinkedList<>(); + IterableHelper.executeBatched(externalIds, ModelConstants.PARAMETER_LIMIT, batchedPersonUuids -> { + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(getElementClass()); + Root from = cq.from(getElementClass()); - return em.createQuery(cq).getResultList(); - } + cq.where(from.get(Person.EXTERNAL_ID).in(externalIds)); - public void executePermanentDeletion(int batchSize) { - IterableHelper.executeBatched(getAllNonReferencedPersonUuids(), batchSize, batchedUuids -> deletePermanent(batchedUuids)); + persons.addAll(em.createQuery(cq).getResultList()); + }); + return persons; } - private List getAllNonReferencedPersonUuids() { + public List getAllNonReferencedPersonUuids() { final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery cq = cb.createQuery(String.class); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/report/AggregateReportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/report/AggregateReportFacadeEjb.java index 4de5909bb8b..4eb2b9d03fb 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/report/AggregateReportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/report/AggregateReportFacadeEjb.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -45,6 +46,7 @@ import de.symeda.sormas.backend.util.ModelConstants; @Stateless(name = "AggregateReportFacade") +@RolesAllowed(UserRight._AGGREGATE_REPORT_VIEW) public class AggregateReportFacadeEjb implements AggregateReportFacade { @PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME) @@ -79,6 +81,7 @@ public List getByUuids(List uuids) { } @Override + @RolesAllowed(UserRight._AGGREGATE_REPORT_EDIT) public AggregateReportDto saveAggregateReport(@Valid AggregateReportDto dto) { AggregateReport report = fromDto(dto, true); @@ -195,6 +198,7 @@ public static AggregateReportDto toDto(AggregateReport source) { } @Override + @RolesAllowed(UserRight._AGGREGATE_REPORT_EDIT) public void deleteReport(String reportUuid) { if (!userService.hasRight(UserRight.AGGREGATE_REPORT_EDIT)) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/report/WeeklyReportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/report/WeeklyReportFacadeEjb.java index ed17816259c..d6af42988e0 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/report/WeeklyReportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/report/WeeklyReportFacadeEjb.java @@ -77,6 +77,7 @@ import de.symeda.sormas.backend.util.DtoHelper; @Stateless(name = "WeeklyReportFacade") +@RolesAllowed(UserRight._WEEKLYREPORT_VIEW) public class WeeklyReportFacadeEjb implements WeeklyReportFacade { private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -125,6 +126,7 @@ public WeeklyReportDto getByUuid(String uuid) { } @Override + @RolesAllowed(UserRight._WEEKLYREPORT_CREATE) public WeeklyReportDto saveWeeklyReport(@Valid WeeklyReportDto dto) { // Don't create a new report if there already is one in the database for the user/epi week combination diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/AdditionalTestFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/AdditionalTestFacadeEjb.java index 821073b895b..777b28b9719 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/AdditionalTestFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/AdditionalTestFacadeEjb.java @@ -167,7 +167,7 @@ public AdditionalTest fromDto(@NotNull AdditionalTestDto source, boolean checkCh target.setConjBilirubin(source.getConjBilirubin()); target.setWbcCount(source.getWbcCount()); target.setPlatelets(source.getPlatelets()); - target.setProthrombinTime(source.getPlatelets()); + target.setProthrombinTime(source.getProthrombinTime()); target.setOtherTestResults(source.getOtherTestResults()); return target; @@ -202,7 +202,7 @@ public static AdditionalTestDto toDto(AdditionalTest source) { target.setConjBilirubin(source.getConjBilirubin()); target.setWbcCount(source.getWbcCount()); target.setPlatelets(source.getPlatelets()); - target.setProthrombinTime(source.getPlatelets()); + target.setProthrombinTime(source.getProthrombinTime()); target.setOtherTestResults(source.getOtherTestResults()); return target; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/PathogenTestFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/PathogenTestFacadeEjb.java index 276b9e39b14..9d0fc8445f4 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/PathogenTestFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/PathogenTestFacadeEjb.java @@ -1,20 +1,18 @@ -/******************************************************************************* +/* * SORMAS® - Surveillance Outbreak Response Management & Analysis System - * Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) - * + * Copyright © 2016-2022 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.backend.sample; import java.util.ArrayList; @@ -58,6 +56,7 @@ import de.symeda.sormas.api.utils.ValidationRuntimeException; import de.symeda.sormas.backend.caze.Case; import de.symeda.sormas.backend.caze.CaseFacadeEjb.CaseFacadeEjbLocal; +import de.symeda.sormas.backend.common.CoreAdo; import de.symeda.sormas.backend.common.NotificationService; import de.symeda.sormas.backend.common.messaging.MessageContents; import de.symeda.sormas.backend.common.messaging.MessageSubject; @@ -190,7 +189,7 @@ public PathogenTestDto getLatestPathogenTest(String sampleUuid) { Root pathogenTestRoot = cq.from(PathogenTest.class); Join sampleJoin = pathogenTestRoot.join(PathogenTest.SAMPLE); - Predicate filter = cb.equal(sampleJoin.get(Sample.UUID), sampleUuid); + Predicate filter = cb.and(cb.equal(sampleJoin.get(Sample.UUID), sampleUuid), cb.isFalse(pathogenTestRoot.get(CoreAdo.DELETED))); cq.where(filter); cq.orderBy(cb.desc(pathogenTestRoot.get(PathogenTest.CREATION_DATE))); @@ -352,7 +351,7 @@ public List getPositiveOrLatest(List sampleUuids) { .collect( Collectors.toMap( s -> s.getSample().getUuid(), - (s) -> s, + s -> s, (s1, s2) -> { // keep the positive one diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java index 79eceb34065..001e5576291 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java @@ -23,6 +23,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -67,7 +68,6 @@ import de.symeda.sormas.api.sample.SampleSimilarityCriteria; import de.symeda.sormas.api.user.NotificationType; import de.symeda.sormas.api.user.UserRight; -import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.AccessDeniedException; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DateHelper; @@ -110,7 +110,6 @@ import de.symeda.sormas.backend.sormastosormas.share.shareinfo.ShareInfoHelper; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.user.UserFacadeEjb; -import de.symeda.sormas.backend.user.UserRoleConfigFacadeEjb.UserRoleConfigFacadeEjbLocal; import de.symeda.sormas.backend.user.UserService; import de.symeda.sormas.backend.util.DtoHelper; import de.symeda.sormas.backend.util.IterableHelper; @@ -119,6 +118,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "SampleFacade") +@RolesAllowed(UserRight._SAMPLE_VIEW) public class SampleFacadeEjb implements SampleFacade { private static final int DELETED_BATCH_SIZE = 1000; @@ -164,15 +164,12 @@ public class SampleFacadeEjb implements SampleFacade { @EJB private NotificationService notificationService; @EJB - private UserRoleConfigFacadeEjbLocal userRoleConfigFacade; - @EJB private PathogenTestFacadeEjbLocal pathogenTestFacade; @EJB private SormasToSormasOriginInfoFacadeEjbLocal originInfoFacade; @Override public List getAllActiveUuids() { - User user = userService.getCurrentUser(); if (user == null) { return Collections.emptyList(); @@ -188,7 +185,6 @@ public List getAllActiveSamplesAfter(Date date) { @Override public List getAllActiveSamplesAfter(Date date, Integer batchSize, String lastSynchronizedUuid) { - User user = userService.getCurrentUser(); if (user == null) { return Collections.emptyList(); @@ -226,7 +222,7 @@ public List getSimilarSamples(SampleSimilarityCriteria criteria) { final Root root = cq.from(Sample.class); cq.distinct(true); - SampleJoins joins = new SampleJoins<>(root); + SampleJoins joins = new SampleJoins(root); SampleCriteria sampleCriteria = new SampleCriteria(); sampleCriteria.caze(criteria.getCaze()).contact(criteria.getContact()).eventParticipant(criteria.getEventParticipant()); @@ -274,7 +270,7 @@ private List getByCriteria(SampleCriteria criteria) { final CriteriaQuery cq = cb.createQuery(Sample.class); final Root root = cq.from(Sample.class); - SampleJoins joins = new SampleJoins<>(root); + SampleJoins joins = new SampleJoins(root); Predicate filter = sampleService.createUserFilter(cq, cb, joins, criteria); filter = CriteriaBuilderHelper.and(cb, filter, sampleService.buildCriteriaFilter(criteria, cb, joins)); @@ -325,7 +321,6 @@ public List getByLabSampleId(String labSampleId) { @Override public List getDeletedUuidsSince(Date since) { - User user = userService.getCurrentUser(); if (user == null) { return Collections.emptyList(); @@ -340,10 +335,16 @@ public SampleDto getSampleByUuid(String uuid) { } @Override + @RolesAllowed({ + UserRight._SAMPLE_CREATE, + UserRight._SAMPLE_EDIT }) public SampleDto saveSample(@Valid SampleDto dto) { return saveSample(dto, true, true, true); } + @RolesAllowed({ + UserRight._SAMPLE_CREATE, + UserRight._SAMPLE_EDIT }) public SampleDto saveSample(@Valid SampleDto dto, boolean handleChanges, boolean checkChangeDate, boolean internal) { Sample existingSample = sampleService.getByUuid(dto.getUuid()); @@ -401,22 +402,18 @@ public List getPositiveOrLatest(SampleCriteria criteria, Function associatedObjectFn.apply(s).getUuid(), - s -> s, - (s1, s2) -> { - - // keep the positive one - if (s1.getPathogenTestResult() == PathogenTestResultType.POSITIVE) { - return s1; - } else if (s2.getPathogenTestResult() == PathogenTestResultType.POSITIVE) { - return s2; - } - - // ordered by creation date by default, so always keep the first one - return s1; - })) + .collect(Collectors.toMap(s -> associatedObjectFn.apply(s).getUuid(), s -> s, (s1, s2) -> { + + // keep the positive one + if (s1.getPathogenTestResult() == PathogenTestResultType.POSITIVE) { + return s1; + } else if (s2.getPathogenTestResult() == PathogenTestResultType.POSITIVE) { + return s2; + } + + // ordered by creation date by default, so always keep the first one + return s1; + })) .values() .stream() .map(s -> convertToDto(s, pseudonymizer)) @@ -466,9 +463,8 @@ private List getExportList( CriteriaQuery cq = cb.createQuery(SampleExportDto.class); Root sampleRoot = cq.from(Sample.class); - SampleQueryContext sampleQueryContext = new SampleQueryContext<>(cb, cq, sampleRoot); - - SampleJoins joins = (SampleJoins) sampleQueryContext.getJoins(); + SampleQueryContext sampleQueryContext = new SampleQueryContext(cb, cq, sampleRoot); + SampleJoins joins = sampleQueryContext.getJoins(); cq.distinct(true); @@ -580,7 +576,7 @@ private List getExportList( filter = CriteriaBuilderHelper.and(cb, filter, criteriaFilter); filter = CriteriaBuilderHelper.andInValues(selectedRows, filter, cb, sampleRoot.get(AbstractDomainObject.UUID)); } else if (caseCriteria != null) { - Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, new CaseQueryContext<>(cb, cq, joins.getCaze())); + Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, new CaseQueryContext(cb, cq, joins.getCaseJoins())); filter = CriteriaBuilderHelper.and(cb, filter, criteriaFilter); filter = CriteriaBuilderHelper.and(cb, filter, cb.isFalse(sampleRoot.get(CoreAdo.DELETED))); filter = CriteriaBuilderHelper.andInValues(selectedRows, filter, cb, joins.getCaze().get(AbstractDomainObject.UUID)); @@ -659,11 +655,13 @@ private List getExportList( } @Override + @RolesAllowed(UserRight._SAMPLE_EXPORT) public List getExportList(SampleCriteria criteria, Collection selectedRows, int first, int max) { return getExportList(criteria, null, selectedRows, first, max); } @Override + @RolesAllowed(UserRight._SAMPLE_EXPORT) public List getExportList(CaseCriteria criteria, Collection selectedRows, int first, int max) { return getExportList(null, criteria, selectedRows, first, max); } @@ -675,7 +673,7 @@ public long count(SampleCriteria sampleCriteria) { final CriteriaQuery cq = cb.createQuery(Long.class); final Root root = cq.from(Sample.class); - SampleJoins joins = new SampleJoins<>(root); + SampleJoins joins = new SampleJoins(root); Predicate filter = sampleService.createUserFilter(cq, cb, joins, sampleCriteria); if (sampleCriteria != null) { @@ -697,14 +695,8 @@ public SampleReferenceDto getReferredFrom(String sampleUuid) { } @Override + @RolesAllowed(UserRight._SAMPLE_DELETE) public void deleteSample(SampleReferenceDto sampleRef) { - - User user = userService.getCurrentUser(); - if (!userRoleConfigFacade.getEffectiveUserRights(user.getUserRoles().toArray(new UserRole[user.getUserRoles().size()])) - .contains(UserRight.SAMPLE_DELETE)) { - throw new UnsupportedOperationException("User " + user.getUuid() + " is not allowed to delete samples."); - } - Sample sample = sampleService.getByReferenceDto(sampleRef); sampleService.delete(sample); @@ -712,24 +704,16 @@ public void deleteSample(SampleReferenceDto sampleRef) { } @Override + @RolesAllowed(UserRight._SAMPLE_DELETE) public void deleteAllSamples(List sampleUuids) { - User user = userService.getCurrentUser(); - if (!userRoleConfigFacade.getEffectiveUserRights(user.getUserRoles().toArray(new UserRole[user.getUserRoles().size()])) - .contains(UserRight.SAMPLE_DELETE)) { - throw new UnsupportedOperationException("User " + user.getUuid() + " is not allowed to delete samples."); - } long startTime = DateHelper.startTime(); IterableHelper.executeBatched(sampleUuids, DELETED_BATCH_SIZE, batchedSampleUuids -> sampleService.deleteAll(batchedSampleUuids)); logger.debug("deleteAllSamples(sampleUuids) finished. samplesCount = {}, {}ms", sampleUuids.size(), DateHelper.durationMillies(startTime)); } + @RolesAllowed(UserRight._SAMPLE_DELETE) public List deleteSamples(List sampleUuids) { - User user = userService.getCurrentUser(); - if (!userRoleConfigFacade.getEffectiveUserRights(user.getUserRoles().toArray(new UserRole[user.getUserRoles().size()])) - .contains(UserRight.SAMPLE_DELETE)) { - throw new UnsupportedOperationException("User " + user.getUuid() + " is not allowed to delete samples."); - } List deletedSampleUuids = new ArrayList<>(); List samplesToBeDeleted = sampleService.getByUuids(sampleUuids); if (samplesToBeDeleted != null) { @@ -743,11 +727,6 @@ public List deleteSamples(List sampleUuids) { return deletedSampleUuids; } - @Override - public Map getNewTestResultCountByResultType(List caseIds) { - return sampleService.getNewTestResultCountByResultType(caseIds); - } - public Sample fromDto(@NotNull SampleDto source, boolean checkChangeDate) { Sample target = DtoHelper.fillOrBuildEntity(source, sampleService.getByUuid(source.getUuid()), Sample::new, checkChangeDate); @@ -931,7 +910,6 @@ public static SampleReferenceDto toReferenceDto(Sample entity) { } private void onSampleChanged(SampleDto existingSample, Sample newSample, boolean syncShares) { - // Change pathogenTestResultChangeDate if the pathogen test result has changed if (existingSample != null && existingSample.getPathogenTestResult() != null @@ -1022,6 +1000,7 @@ public Boolean isSampleEditAllowed(String sampleUuid) { return sampleService.isSampleEditAllowed(sample); } + @RolesAllowed(UserRight._SAMPLE_CREATE) public void cloneSampleForCase(Sample sample, Case caze) { SampleDto newSample = SampleDto.build(sample.getReportingUser().toReference(), caze.toReference()); DtoHelper.copyDtoValues(newSample, SampleFacadeEjb.toDto(sample), true); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJoins.java index 4b192176337..4e194e0b2e5 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJoins.java @@ -22,9 +22,13 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.contact.Contact; +import de.symeda.sormas.backend.contact.ContactJoins; import de.symeda.sormas.backend.event.Event; import de.symeda.sormas.backend.event.EventParticipant; +import de.symeda.sormas.backend.event.EventParticipantJoins; import de.symeda.sormas.backend.infrastructure.facility.Facility; import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; import de.symeda.sormas.backend.location.Location; @@ -33,9 +37,8 @@ import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class SampleJoins extends AbstractDomainObjectJoins { +public class SampleJoins extends QueryJoins { private Join reportingUser; private Join referredSample; @@ -43,49 +46,12 @@ public class SampleJoins extends AbstractDomainObjectJoins { private Join caze; private Join eventParticipant; private Join contact; - private Join casePerson; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseFacility; - private Join casePointOfEntry; - private Join contactCaseReportingUser; - private Join contactCaseResponsibleRegion; - private Join contactCaseResponsibleDistrict; - private Join contactCaseResponsibleCommunity; - private Join contactCaseRegion; - private Join contactCaseDistrict; - private Join contactCaseCommunity; - private Join contactCaseHealthFacility; - private Join contactCasePointOfEntry; - private Join contactPerson; - private Join contactReportingUser; - private Join contactRegion; - private Join contactDistrict; - private Join contactCommunity; - private Join contactCase; - private Join casePersonAddress; - private Join contactPersonAddress; - private Join casePersonAddressRegion; - private Join casePersonAddressDistrict; - private Join casePersonAddressCommunity; - private Join contactPersonAddressRegion; - private Join contactPersonAddressDistrict; - private Join contactPersonAddressCommunity; - private Join eventRegion; - private Join eventDistrict; - private Join eventCommunity; - private Join eventParticipantPerson; - private Join event; - private Join eventLocation; - private Join eventReportingUser; - private Join eventResponsibleUser; - - public SampleJoins(From root) { + + private CaseJoins caseJoins; + private ContactJoins contactJoins; + private EventParticipantJoins eventParticipantJoins; + + public SampleJoins(From root) { super(root); } @@ -121,84 +87,52 @@ private void setCaze(Join caze) { this.caze = caze; } - public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getCaze(), this::setCasePerson); + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); } - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; } - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCaze(), this::setCaseReportingUser); + public Join getCasePerson() { + return getCaseJoins().getPerson(); } - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; + public Join getCaseReportingUser() { + return getCaseJoins().getReportingUser(); } public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCaze(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + return getCaseJoins().getResponsibleRegion(); } public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCaze(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + return getCaseJoins().getResponsibleDistrict(); } public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + return getCaseJoins().getResponsibleCommunity(); } public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCaze(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + return getCaseJoins().getRegion(); } public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCaze(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + return getCaseJoins().getDistrict(); } public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; + return getCaseJoins().getCommunity(); } public Join getCaseFacility() { - return getOrCreate(caseFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCaze(), this::setCaseFacility); - } - - private void setCaseFacility(Join caseFacility) { - this.caseFacility = caseFacility; + return getCaseJoins().getFacility(); } public Join getCasePointOfEntry() { - return getOrCreate(casePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCaze(), this::setCasePointOfEntry); - } - - private void setCasePointOfEntry(Join casePointOfEntry) { - this.casePointOfEntry = casePointOfEntry; + return getCaseJoins().getPointOfEntry(); } public Join getContact() { @@ -209,6 +143,14 @@ private void setContact(Join contact) { this.contact = contact; } + public ContactJoins getContactJoins() { + return getOrCreate(contactJoins, () -> new ContactJoins(getContact()), this::setContactJoins); + } + + public void setContactJoins(ContactJoins contactJoins) { + this.contactJoins = contactJoins; + } + public Join getEventParticipant() { return getOrCreate(eventParticipant, Sample.ASSOCIATED_EVENT_PARTICIPANT, JoinType.LEFT, this::setEventParticipant); } @@ -217,288 +159,135 @@ private void setEventParticipant(Join eventParticipant this.eventParticipant = eventParticipant; } - public Join getEventParticipantPerson() { - return getOrCreate(eventParticipantPerson, EventParticipant.PERSON, JoinType.LEFT, getEventParticipant(), this::setEventParticipantPerson); + public EventParticipantJoins getEventParticipantJoins() { + return getOrCreate(eventParticipantJoins, () -> new EventParticipantJoins(getEventParticipant()), this::setEventParticipantJoins); } - public void setEventParticipantPerson(Join eventParticipantPerson) { - this.eventParticipantPerson = eventParticipantPerson; + public void setEventParticipantJoins(EventParticipantJoins eventParticipantJoins) { + this.eventParticipantJoins = eventParticipantJoins; } - public Join getEvent() { - return getOrCreate(event, EventParticipant.EVENT, JoinType.LEFT, getEventParticipant(), this::setEvent); + public Join getEventParticipantPerson() { + return getEventParticipantJoins().getPerson(); } - public void setEvent(Join event) { - this.event = event; + public Join getEvent() { + return getEventParticipantJoins().getEvent(); } public Join getEventLocation() { - return getOrCreate(eventLocation, Event.EVENT_LOCATION, JoinType.LEFT, getEvent(), this::setEventLocation); - } - - public void setEventLocation(Join eventLocation) { - this.eventLocation = eventLocation; + return getEventParticipantJoins().getEventJoins().getLocation(); } public Join getEventRegion() { - return getOrCreate(eventRegion, Location.REGION, JoinType.LEFT, getEventLocation(), this::setEventRegion); - } - - public void setEventRegion(Join eventRegion) { - this.eventRegion = eventRegion; + return getEventParticipantJoins().getEventJoins().getRegion(); } public Join getEventDistrict() { - return getOrCreate(eventDistrict, Location.DISTRICT, JoinType.LEFT, getEventLocation(), this::setEventDistrict); + return getEventParticipantJoins().getEventJoins().getDistrict(); } public Join getEventCommunity() { - return getOrCreate(eventCommunity, Location.COMMUNITY, JoinType.LEFT, getEventLocation(), this::setEventCommunity); - } - - public void setEventCommunity(Join eventCommunity) { - this.eventCommunity = eventCommunity; - } - - public void setEventDistrict(Join eventDistrict) { - this.eventDistrict = eventDistrict; + return getEventParticipantJoins().getEventJoins().getCommunity(); } public Join getEventReportingUser() { - return getOrCreate(eventReportingUser, Event.REPORTING_USER, JoinType.LEFT, getEvent(), this::setEventReportingUser); - } - - private void setEventReportingUser(Join eventReportingUser) { - this.eventReportingUser = eventReportingUser; + return getEventParticipantJoins().getEventJoins().getReportingUser(); } public Join getEventResponsibleUser() { - return getOrCreate(eventResponsibleUser, Event.RESPONSIBLE_USER, JoinType.LEFT, getEvent(), this::setEventResponsibleUser); - } - - private void setEventResponsibleUser(Join eventResponsibleUser) { - this.eventResponsibleUser = eventResponsibleUser; + return getEventParticipantJoins().getEventJoins().getResponsibleUser(); } public Join getContactPerson() { - return getOrCreate(contactPerson, Contact.PERSON, JoinType.LEFT, getContact(), this::setContactPerson); - } - - private void setContactPerson(Join contactPerson) { - this.contactPerson = contactPerson; + return getContactJoins().getPerson(); } public Join getContactReportingUser() { - return getOrCreate(contactReportingUser, Contact.REPORTING_USER, JoinType.LEFT, getContact(), this::setContactReportingUser); - } - - private void setContactReportingUser(Join contactReportingUser) { - this.contactReportingUser = contactReportingUser; + return getContactJoins().getReportingUser(); } public Join getContactRegion() { - return getOrCreate(contactRegion, Contact.REGION, JoinType.LEFT, getContact(), this::setContactRegion); - } - - private void setContactRegion(Join contactRegion) { - this.contactRegion = contactRegion; + return getContactJoins().getRegion(); } public Join getContactDistrict() { - return getOrCreate(contactDistrict, Contact.DISTRICT, JoinType.LEFT, getContact(), this::setContactDistrict); - } - - private void setContactDistrict(Join contactDistrict) { - this.contactDistrict = contactDistrict; + return getContactJoins().getDistrict(); } public Join getContactCommunity() { - return getOrCreate(contactCommunity, Contact.COMMUNITY, JoinType.LEFT, getContact(), this::setContactCommunity); - } - - private void setContactCommunity(Join contactCommunity) { - this.contactCommunity = contactCommunity; + return getContactJoins().getCommunity(); } public Join getContactCase() { - return getOrCreate(contactCase, Contact.CAZE, JoinType.LEFT, getContact(), this::setContactCase); - } - - private void setContactCase(Join contactCase) { - this.contactCase = contactCase; + return getContactJoins().getCaze(); } public Join getContactCaseReportingUser() { - return getOrCreate(contactCaseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getContactCase(), this::setContactCaseReportingUser); - } - - private void setContactCaseReportingUser(Join contactCaseReportingUser) { - this.contactCaseReportingUser = contactCaseReportingUser; + return getContactJoins().getCaseJoins().getReportingUser(); } public Join getContactCaseResponsibleRegion() { - return getOrCreate( - contactCaseResponsibleRegion, - Case.RESPONSIBLE_REGION, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleRegion); - } - - private void setContactCaseResponsibleRegion(Join contactCaseResponsibleRegion) { - this.contactCaseResponsibleRegion = contactCaseResponsibleRegion; + return getContactJoins().getCaseJoins().getResponsibleRegion(); } public Join getContactCaseResponsibleDistrict() { - return getOrCreate( - contactCaseResponsibleDistrict, - Case.RESPONSIBLE_DISTRICT, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleDistrict); - } - - private void setContactCaseResponsibleDistrict(Join contactCaseResponsibleDistrict) { - this.contactCaseResponsibleDistrict = contactCaseResponsibleDistrict; + return getContactJoins().getCaseJoins().getResponsibleDistrict(); } public Join getContactCaseResponsibleCommunity() { - return getOrCreate( - contactCaseResponsibleCommunity, - Case.RESPONSIBLE_COMMUNITY, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleCommunity); - } - - private void setContactCaseResponsibleCommunity(Join contactCaseResponsibleCommunity) { - this.contactCaseResponsibleCommunity = contactCaseResponsibleCommunity; + return getContactJoins().getCaseJoins().getResponsibleCommunity(); } public Join getContactCaseRegion() { - return getOrCreate(contactCaseRegion, Case.REGION, JoinType.LEFT, getContactCase(), this::setContactCaseRegion); - } - - private void setContactCaseRegion(Join contactCaseRegion) { - this.contactCaseRegion = contactCaseRegion; + return getContactJoins().getCaseJoins().getRegion(); } public Join getContactCaseDistrict() { - return getOrCreate(contactCaseDistrict, Case.DISTRICT, JoinType.LEFT, getContactCase(), this::setContactCaseDistrict); - } - - private void setContactCaseDistrict(Join contactCaseDistrict) { - this.contactCaseDistrict = contactCaseDistrict; + return getContactJoins().getCaseJoins().getDistrict(); } public Join getContactCaseCommunity() { - return getOrCreate(contactCaseCommunity, Case.COMMUNITY, JoinType.LEFT, getContactCase(), this::setContactCaseCommunity); - } - - private void setContactCaseCommunity(Join contactCaseCommunity) { - this.contactCaseCommunity = contactCaseCommunity; + return getContactJoins().getCaseJoins().getCommunity(); } public Join getContactCaseHealthFacility() { - return getOrCreate(contactCaseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getContactCase(), this::setContactCaseHealthFacility); - } - - private void setContactCaseHealthFacility(Join contactCaseHealthFacility) { - this.contactCaseHealthFacility = contactCaseHealthFacility; + return getContactJoins().getCaseJoins().getFacility(); } public Join getContactCasePointOfEntry() { - return getOrCreate(contactCasePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getContactCase(), this::setContactCasePointOfEntry); - } - - private void setContactCasePointOfEntry(Join contactCasePointOfEntry) { - this.contactCasePointOfEntry = contactCasePointOfEntry; + return getContactJoins().getCaseJoins().getPointOfEntry(); } public Join getCasePersonAddress() { - return getOrCreate(casePersonAddress, Person.ADDRESS, JoinType.LEFT, getCasePerson(), this::setCasePersonAddress); - } - - private void setCasePersonAddress(Join casePersonAddress) { - this.casePersonAddress = casePersonAddress; + return getCaseJoins().getPersonJoins().getAddress(); } public Join getCasePersonAddressRegion() { - return getOrCreate(casePersonAddressRegion, Location.REGION, JoinType.LEFT, getCasePersonAddress(), this::setCasePersonAddressRegion); - } - - private void setCasePersonAddressRegion(Join casePersonAddressRegion) { - this.casePersonAddressRegion = casePersonAddressRegion; + return getCaseJoins().getPersonJoins().getAddressJoins().getRegion(); } public Join getCasePersonAddressDistrict() { - return getOrCreate(casePersonAddressDistrict, Location.DISTRICT, JoinType.LEFT, getCasePersonAddress(), this::setCasePersonAddressDistrict); - } - - private void setCasePersonAddressDistrict(Join casePersonAddressDistrict) { - this.casePersonAddressDistrict = casePersonAddressDistrict; + return getCaseJoins().getPersonJoins().getAddressJoins().getDistrict(); } public Join getCasePersonAddressCommunity() { - - return getOrCreate( - casePersonAddressCommunity, - Location.COMMUNITY, - JoinType.LEFT, - getCasePersonAddress(), - this::setCasePersonAddressCommunity); - } - - private void setCasePersonAddressCommunity(Join casePersonAddressCommunity) { - this.casePersonAddressCommunity = casePersonAddressCommunity; + return getCaseJoins().getPersonJoins().getAddressJoins().getCommunity(); } public Join getContactPersonAddress() { - return getOrCreate(contactPersonAddress, Person.ADDRESS, JoinType.LEFT, getContactPerson(), this::setContactPersonAddress); - } - - public void setContactPersonAddress(Join contactPersonAddress) { - this.contactPersonAddress = contactPersonAddress; + return getContactJoins().getPersonJoins().getAddress(); } public Join getContactPersonAddressRegion() { - return getOrCreate( - contactPersonAddressRegion, - Location.REGION, - JoinType.LEFT, - getContactPersonAddress(), - this::setContactPersonAddressRegion); - } - - public void setContactPersonAddressRegion(Join contactPersonAddressRegion) { - this.contactPersonAddressRegion = contactPersonAddressRegion; + return getContactJoins().getPersonJoins().getAddressJoins().getRegion(); } public Join getContactPersonAddressDistrict() { - return getOrCreate( - contactPersonAddressDistrict, - Location.DISTRICT, - JoinType.LEFT, - getContactPersonAddress(), - this::setContactPersonAddressDistrict); - } - - public void setContactPersonAddressDistrict(Join contactPersonAddressDistrict) { - this.contactPersonAddressDistrict = contactPersonAddressDistrict; + return getContactJoins().getPersonJoins().getAddressJoins().getDistrict(); } public Join getContactPersonAddressCommunity() { - return getOrCreate( - contactPersonAddressCommunity, - Location.COMMUNITY, - JoinType.LEFT, - getContactPersonAddress(), - this::setContactPersonAddressCommunity); + return getContactJoins().getPersonJoins().getAddressJoins().getCommunity(); } - - public void setContactPersonAddressCommunity(Join contactPersonAddressCommunity) { - this.contactPersonAddressCommunity = contactPersonAddressCommunity; - } - } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJurisdictionPredicateValidator.java index 5fe32092873..8c032e1fcbb 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleJurisdictionPredicateValidator.java @@ -35,14 +35,22 @@ public class SampleJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final SampleJoins joins; + private final SampleJoins joins; - private SampleJurisdictionPredicateValidator(CriteriaBuilder cb, SampleJoins joins, User user, List associatedJurisdictionValidators) { + private SampleJurisdictionPredicateValidator( + CriteriaBuilder cb, + SampleJoins joins, + User user, + List associatedJurisdictionValidators) { super(cb, user, null, associatedJurisdictionValidators); this.joins = joins; } - private SampleJurisdictionPredicateValidator(CriteriaBuilder cb, SampleJoins joins, Path userPath, List associatedJurisdictionValidators) { + private SampleJurisdictionPredicateValidator( + CriteriaBuilder cb, + SampleJoins joins, + Path userPath, + List associatedJurisdictionValidators) { super(cb, null, userPath, associatedJurisdictionValidators); this.joins = joins; } @@ -51,23 +59,24 @@ public static SampleJurisdictionPredicateValidator of(SampleQueryContext qc, Use final List associatedJurisdictionValidators = new ArrayList<>(); final CriteriaBuilder cb = qc.getCriteriaBuilder(); - final SampleJoins joins = (SampleJoins) qc.getJoins(); + final SampleJoins joins = qc.getJoins(); associatedJurisdictionValidators - .add(CaseJurisdictionPredicateValidator.of(new CaseQueryContext(cb, qc.getQuery(), joins.getCaze()), user)); + .add(CaseJurisdictionPredicateValidator.of(new CaseQueryContext(cb, qc.getQuery(), joins.getCaseJoins()), user)); associatedJurisdictionValidators - .add(ContactJurisdictionPredicateValidator.of(new ContactQueryContext(cb, qc.getQuery(), joins.getContact()), user)); + .add(ContactJurisdictionPredicateValidator.of(new ContactQueryContext(cb, qc.getQuery(), joins.getContactJoins()), user)); associatedJurisdictionValidators.add( EventParticipantJurisdictionPredicateValidator - .of(new EventParticipantQueryContext(cb, qc.getQuery(), joins.getEventParticipant()), user)); + .of(new EventParticipantQueryContext(cb, qc.getQuery(), joins.getEventParticipantJoins()), user)); return new SampleJurisdictionPredicateValidator(cb, joins, user, associatedJurisdictionValidators); } - public static SampleJurisdictionPredicateValidator withoutAssociations(CriteriaBuilder cb, SampleJoins joins, User user) { + public static SampleJurisdictionPredicateValidator withoutAssociations(CriteriaBuilder cb, SampleJoins joins, User user) { return new SampleJurisdictionPredicateValidator(cb, joins, user, null); } - public static SampleJurisdictionPredicateValidator withoutAssociations(CriteriaBuilder cb, SampleJoins joins, Path userPath) { + + public static SampleJurisdictionPredicateValidator withoutAssociations(CriteriaBuilder cb, SampleJoins joins, Path userPath) { return new SampleJurisdictionPredicateValidator(cb, joins, userPath, null); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleQueryContext.java index ed28da6710d..4f6f5b5e96d 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleQueryContext.java @@ -23,7 +23,7 @@ import de.symeda.sormas.backend.common.QueryContext; -public class SampleQueryContext extends QueryContext { +public class SampleQueryContext extends QueryContext { public SampleQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { super(cb, query, root, new SampleJoins(root)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleService.java index 83fc1d26552..d998e63ca21 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleService.java @@ -22,6 +22,7 @@ import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -54,8 +55,6 @@ import javax.persistence.criteria.Selection; import javax.persistence.criteria.Subquery; -import org.apache.commons.collections.CollectionUtils; - import de.symeda.sormas.api.EntityRelevanceStatus; import de.symeda.sormas.api.caze.CaseReferenceDto; import de.symeda.sormas.api.contact.ContactReferenceDto; @@ -69,6 +68,7 @@ import de.symeda.sormas.api.sample.SampleIndexDto; import de.symeda.sormas.api.sample.SampleJurisdictionFlagsDto; import de.symeda.sormas.api.sample.SampleListEntryDto; +import de.symeda.sormas.api.sample.SampleReferenceDto; import de.symeda.sormas.api.sample.SpecimenCondition; import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.utils.DataHelper; @@ -83,7 +83,6 @@ import de.symeda.sormas.backend.common.CriteriaBuilderHelper; import de.symeda.sormas.backend.common.DeletableAdo; import de.symeda.sormas.backend.contact.Contact; -import de.symeda.sormas.backend.contact.ContactJoins; import de.symeda.sormas.backend.contact.ContactQueryContext; import de.symeda.sormas.backend.contact.ContactService; import de.symeda.sormas.backend.event.Event; @@ -92,9 +91,12 @@ import de.symeda.sormas.backend.event.EventParticipantService; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.facility.Facility; +import de.symeda.sormas.backend.labmessage.LabMessageService; import de.symeda.sormas.backend.location.Location; import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.sample.transformers.SampleListEntryDtoResultTransformer; +import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfo; +import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoFacadeEjb.SormasToSormasShareInfoFacadeEjbLocal; import de.symeda.sormas.backend.sormastosormas.share.shareinfo.SormasToSormasShareInfoService; import de.symeda.sormas.backend.user.User; import de.symeda.sormas.backend.user.UserService; @@ -123,7 +125,11 @@ public class SampleService extends AbstractDeletableAdoService { @EJB private AdditionalTestService additionalTestService; @EJB + private SormasToSormasShareInfoFacadeEjbLocal sormasToSormasShareInfoFacade; + @EJB private SormasToSormasShareInfoService sormasToSormasShareInfoService; + @EJB + private LabMessageService labMessageService; public SampleService() { super(Sample.class); @@ -164,7 +170,7 @@ public List getIndexList(SampleCriteria sampleCriteria, Integer final Root sample = cq.from(Sample.class); SampleQueryContext sampleQueryContext = new SampleQueryContext(cb, cq, sample); - SampleJoins joins = (SampleJoins) sampleQueryContext.getJoins(); + SampleJoins joins = sampleQueryContext.getJoins(); final Join caze = joins.getCaze(); final Join caseDistrict = joins.getCaseDistrict(); @@ -385,7 +391,7 @@ public List getEntriesList(SampleCriteria sampleCriteria, In final Root sample = cq.from(Sample.class); SampleQueryContext sampleQueryContext = new SampleQueryContext(cb, cq, sample); - SampleJoins joins = (SampleJoins) sampleQueryContext.getJoins(); + SampleJoins joins = sampleQueryContext.getJoins(); cq.distinct(true); @@ -563,55 +569,11 @@ public List getByEventParticipantUuids(List eventParticipantUuid return em.createQuery(cq).getResultList(); } - public Map getNewTestResultCountByResultType(List caseIds) { - - if (CollectionUtils.isEmpty(caseIds)) { - // Avoid empty IN clause - return new HashMap<>(); - } - - // Avoid parameter limit by joining caseIds to a String instead of n parameters - StringBuilder queryBuilder = new StringBuilder(); - //@formatter:off - queryBuilder.append("WITH sortedsamples AS (SELECT DISTINCT ON (").append(Sample.ASSOCIATED_CASE).append("_id) ") - .append(Sample.ASSOCIATED_CASE).append("_id, ").append(Sample.PATHOGEN_TEST_RESULT).append(", ").append(Sample.SAMPLE_DATE_TIME) - .append(" FROM ").append(Sample.TABLE_NAME).append(" WHERE (").append(Sample.SPECIMEN_CONDITION).append(" IS NULL OR ") - .append(Sample.SPECIMEN_CONDITION).append(" = '").append(SpecimenCondition.ADEQUATE.name()).append("') AND ").append(Sample.TABLE_NAME) - .append(".").append(Sample.DELETED).append(" = false ORDER BY ").append(Sample.ASSOCIATED_CASE).append("_id, ") - .append(Sample.SAMPLE_DATE_TIME).append(" desc) SELECT sortedsamples.").append(Sample.PATHOGEN_TEST_RESULT).append(", COUNT(") - .append(Sample.ASSOCIATED_CASE).append("_id) FROM sortedsamples JOIN ").append(Case.TABLE_NAME).append(" ON sortedsamples.") - .append(Sample.ASSOCIATED_CASE).append("_id = ").append(Case.TABLE_NAME).append(".id ") - .append(" WHERE sortedsamples.").append(Sample.ASSOCIATED_CASE).append("_id IN (:caseIds)") - .append(" GROUP BY sortedsamples." + Sample.PATHOGEN_TEST_RESULT); - //@formatter:on - - if (caseIds.size() < ModelConstants.PARAMETER_LIMIT) { - List results; - Query query = em.createNativeQuery(queryBuilder.toString()); - query.setParameter("caseIds", caseIds); - results = query.getResultList(); - - return results.stream() - .filter(e -> e[0] != null) - .collect(Collectors.toMap(e -> PathogenTestResultType.valueOf((String) e[0]), e -> ((BigInteger) e[1]).longValue())); - } else { - List results = new LinkedList<>(); - IterableHelper.executeBatched(caseIds, ModelConstants.PARAMETER_LIMIT, batchedCaseIds -> { - Query query = em.createNativeQuery(queryBuilder.toString()); - query.setParameter("caseIds", batchedCaseIds); - results.addAll(query.getResultList()); - }); - return results.stream() - .filter(e -> e[0] != null) - .collect(Collectors.toMap(e -> PathogenTestResultType.valueOf((String) e[0]), e -> ((BigInteger) e[1]).longValue(), Long::sum)); - } - } - @Override @SuppressWarnings("rawtypes") @Deprecated public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From samplePath) { - return createUserFilter(cq, cb, new SampleJoins<>(samplePath), new SampleCriteria()); + return createUserFilter(cq, cb, new SampleJoins(samplePath), new SampleCriteria()); } @SuppressWarnings("rawtypes") @@ -706,29 +668,30 @@ public SampleJurisdictionFlagsDto inJurisdictionOrOwned(Sample sample) { public List> getJurisdictionSelections(SampleQueryContext qc) { - CriteriaBuilder cb = qc.getCriteriaBuilder(); - SampleJoins joins = (SampleJoins) qc.getJoins(); - CriteriaQuery cq = qc.getQuery(); - ContactJoins contactJoins = new ContactJoins(joins.getContact()); + final CriteriaBuilder cb = qc.getCriteriaBuilder(); + final SampleJoins joins = qc.getJoins(); + final CriteriaQuery cq = qc.getQuery(); return Arrays.asList( JurisdictionHelper.booleanSelector(cb, inJurisdictionOrOwned(qc)), JurisdictionHelper.booleanSelector( cb, - cb.and(cb.isNotNull(joins.getCaze()), caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaze())))), + cb.and(cb.isNotNull(joins.getCaze()), caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaseJoins())))), JurisdictionHelper.booleanSelector( cb, - cb.and(cb.isNotNull(joins.getContact()), contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, cq, joins.getContact())))), + cb.and( + cb.isNotNull(joins.getContact()), + contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, cq, joins.getContactJoins())))), JurisdictionHelper.booleanSelector( cb, cb.and( cb.isNotNull(joins.getContact()), - cb.isNotNull(contactJoins.getCaze()), - caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, contactJoins.getCaze())))), + cb.isNotNull(joins.getContactJoins().getCaze()), + caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getContactJoins().getCaseJoins())))), JurisdictionHelper.booleanSelector( cb, cb.and( cb.isNotNull(joins.getEventParticipant()), - eventParticipantService.inJurisdictionOrOwned(new EventParticipantQueryContext(cb, cq, joins.getEventParticipant()))))); + eventParticipantService.inJurisdictionOrOwned(new EventParticipantQueryContext(cb, cq, joins.getEventParticipantJoins()))))); } public Predicate inJurisdictionOrOwned(SampleQueryContext qc) { @@ -918,11 +881,11 @@ private Predicate buildSampleListCriteriaFilter(SampleCriteria criteria, Criteri } @Override - public void delete(Sample sample) { + public void deletePermanent(Sample sample) { - // Mark all pathogen tests of this sample as deleted + // Delete all pathogen tests of this sample for (PathogenTest pathogenTest : sample.getPathogenTests()) { - pathogenTestService.delete(pathogenTest); + pathogenTestService.deletePermanent(pathogenTest); } // Delete all additional tests of this sample @@ -930,6 +893,36 @@ public void delete(Sample sample) { additionalTestService.deletePermanent(additionalTest); } + // Remove the case from any S2S share info referencing it + sormasToSormasShareInfoService.getByAssociatedEntity(SormasToSormasShareInfo.SAMPLE, sample.getUuid()).forEach(s -> { + s.setSample(null); + if (sormasToSormasShareInfoFacade.hasAnyEntityReference(s)) { + sormasToSormasShareInfoService.ensurePersisted(s); + } else { + sormasToSormasShareInfoService.deletePermanent(s); + } + }); + + deleteSampleLinks(sample); + + super.deletePermanent(sample); + } + + @Override + public void delete(Sample sample) { + + // Mark all pathogen tests of this sample as deleted + for (PathogenTest pathogenTest : sample.getPathogenTests()) { + pathogenTestService.delete(pathogenTest); + } + + deleteSampleLinks(sample); + + super.delete(sample); + } + + private void deleteSampleLinks(Sample sample) { + // Remove the reference from another sample to this sample if existing Sample referralSample = getReferredFrom(sample.getUuid()); if (referralSample != null) { @@ -937,10 +930,11 @@ public void delete(Sample sample) { ensurePersisted(referralSample); } - // Remove the case association because the case might be permanently deleted - sample.setAssociatedCase(null); - - super.delete(sample); + // Remove the reference from all lab messages + labMessageService.getForSample(new SampleReferenceDto(sample.getUuid())).forEach(labMessage -> { + labMessage.setSample(null); + labMessageService.ensurePersisted(labMessage); + }); } /** @@ -1068,6 +1062,18 @@ public Boolean isSampleEditAllowed(Sample sample) { return inJurisdictionOrOwned(sample).getInJurisdiction() && !sormasToSormasShareInfoService.isSamlpeOwnershipHandedOver(sample); } + public Date getEarliestSampleDate(Collection samples) { + Date earliestSampleDate = null; + for (Sample sample : samples) { + if (!sample.isDeleted() + && sample.getPathogenTestResult() == PathogenTestResultType.POSITIVE + && (earliestSampleDate == null || sample.getSampleDateTime().before(earliestSampleDate))) { + earliestSampleDate = sample.getSampleDateTime(); + } + } + return earliestSampleDate; + } + private java.util.function.Predicate distinctByKey(Function keyExtractor) { Set seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtractor.apply(t)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/sormastosormas/AbstractSormasToSormasInterface.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/sormastosormas/AbstractSormasToSormasInterface.java index 0023dcba46f..c7e2c8ddfb1 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/sormastosormas/AbstractSormasToSormasInterface.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/sormastosormas/AbstractSormasToSormasInterface.java @@ -48,6 +48,7 @@ import de.symeda.sormas.api.sormastosormas.validation.ValidationErrorGroup; import de.symeda.sormas.api.sormastosormas.validation.ValidationErrorMessage; import de.symeda.sormas.api.sormastosormas.validation.ValidationErrors; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.backend.caze.Case; import de.symeda.sormas.backend.caze.CaseService; @@ -100,6 +101,7 @@ import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.inject.Inject; import javax.transaction.Transactional; @@ -195,6 +197,7 @@ public AbstractSormasToSormasInterface( @Override @Transactional(rollbackOn = { Exception.class }) + @RolesAllowed(UserRight._SORMAS_TO_SORMAS_SHARE) public void share(List entityUuids, @Valid SormasToSormasOptionsDto options) throws SormasToSormasException { if (featureConfigurationFacade.isFeatureEnabled(FeatureType.SORMAS_TO_SORMAS_ACCEPT_REJECT)) { sendShareRequest(entityUuids, options); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/Task.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/Task.java index 8b9777b6e22..096b8386257 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/Task.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/Task.java @@ -74,6 +74,7 @@ public class Task extends AbstractDomainObject { public static final String CLOSED_LON = "closedLon"; public static final String ARCHIVED = "archived"; public static final String TRAVEL_ENTRY = "travelEntry"; + public static final String OBSERVER_USER = "observerUsers"; public static final String TASK_OBSERVER_TABLE = "task_observer"; public static final String TASK_OBSERVER_JOIN_COLUMN = "task_id"; diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskFacadeEjb.java index 2ca93bcab57..04963eef4db 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskFacadeEjb.java @@ -1,20 +1,17 @@ -/******************************************************************************* +/* * SORMAS® - Surveillance Outbreak Response Management & Analysis System - * Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) - * + * Copyright © 2016-2022 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.backend.task; import java.util.ArrayList; @@ -32,6 +29,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -120,6 +118,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "TaskFacade") +@RolesAllowed(UserRight._TASK_VIEW) public class TaskFacadeEjb implements TaskFacade { private static final int ARCHIVE_BATCH_SIZE = 1000; @@ -294,6 +293,9 @@ public TaskDto toDto(Task source, Pseudonymizer pseudonymizer) { } @Override + @RolesAllowed({ + UserRight._TASK_CREATE, + UserRight._TASK_EDIT }) public TaskDto saveTask(@Valid TaskDto dto) { // Let's retrieve the old assignee before updating the task User oldAssignee = taskService.getTaskAssigneeByUuid(dto.getUuid()); @@ -363,10 +365,7 @@ private void notifyAboutNewAssignee(Task task, User newAssignee, User oldAssigne MessageContents.CONTENT_TASK_GENERAL_UPDATED_ASSIGNEE_TARGET, MessageContents.CONTENT_TASK_SPECIFIC_UPDATED_ASSIGNEE_TARGET)); } - notificationService.sendNotifications( - NotificationType.TASK_UPDATED_ASSIGNEE, - MessageSubject.TASK_UPDATED_ASSIGNEE, - () -> userMessages); + notificationService.sendNotifications(NotificationType.TASK_UPDATED_ASSIGNEE, MessageSubject.TASK_UPDATED_ASSIGNEE, () -> userMessages); } catch (NotificationDeliveryFailedException e) { logger.error(String.format("EmailDeliveryFailedException when trying to notify a user about an updated task assignee.")); } @@ -428,7 +427,7 @@ public long count(TaskCriteria taskCriteria) { Predicate filter = null; if (taskCriteria == null || !taskCriteria.hasContextCriteria()) { - filter = taskService.createUserFilterForJoin(new TaskQueryContext<>(cb, cq, task)); + filter = taskService.createUserFilterForJoin(new TaskQueryContext(cb, cq, task)); } else { filter = CriteriaBuilderHelper.and(cb, filter, taskService.createAssigneeFilter(cb, joins.getAssignee())); } @@ -454,7 +453,7 @@ public List getIndexList(TaskCriteria taskCriteria, Integer first, Root task = cq.from(Task.class); TaskQueryContext taskQueryContext = new TaskQueryContext(cb, cq, task); - TaskJoins joins = (TaskJoins) taskQueryContext.getJoins(); + TaskJoins joins = taskQueryContext.getJoins(); // Filter select based on case/contact/event region/district/community Expression region = cb.selectCase() @@ -668,18 +667,18 @@ public List getIndexList(TaskCriteria taskCriteria, Integer first, } @Override + @RolesAllowed(UserRight._TASK_EXPORT) public List getExportList(TaskCriteria criteria, Collection selectedRows, int first, int max) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(TaskExportDto.class); Root task = cq.from(Task.class); - TaskQueryContext taskQueryContext = new TaskQueryContext<>(cb, cq, task); - TaskJoins joins = (TaskJoins) taskQueryContext.getJoins(); - CaseQueryContext caseQueryContext = new CaseQueryContext<>(cb, cq, joins.getCaze()); - ContactQueryContext contactQueryContext = new ContactQueryContext<>(cb, cq, joins.getContact()); - - LocationJoins casePersonAddressJoins = joins.getCasePersonJoins().getAddressJoins(); - LocationJoins contactPersonAddressJoins = joins.getContactPersonJoins().getAddressJoins(); + TaskQueryContext taskQueryContext = new TaskQueryContext(cb, cq, task); + TaskJoins joins = taskQueryContext.getJoins(); + CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, joins.getCaseJoins()); + ContactQueryContext contactQueryContext = new ContactQueryContext(cb, cq, joins.getContactJoins()); + LocationJoins casePersonAddressJoins = caseQueryContext.getJoins().getPersonJoins().getAddressJoins(); + LocationJoins contactPersonAddressJoins = contactQueryContext.getJoins().getPersonJoins().getAddressJoins(); //@formatter:off cq.multiselect(task.get(Task.UUID), task.get(Task.TASK_CONTEXT), @@ -710,7 +709,7 @@ public List getExportList(TaskCriteria criteria, Collection(cb, cq, task)); + filter = taskService.createUserFilterForJoin(new TaskQueryContext(cb, cq, task)); } else { filter = CriteriaBuilderHelper.and(cb, filter, taskService.createAssigneeFilter(cb, joins.getAssignee())); } @@ -741,11 +740,11 @@ public List getExportList(TaskCriteria criteria, Collection getPersonFieldPath(CriteriaBuilder cb, TaskJoins joins, String fieldName) { + private Expression getPersonFieldPath(CriteriaBuilder cb, TaskJoins joins, String fieldName) { return CriteriaBuilderHelper.coalesce(cb, joins.getCasePerson().get(fieldName), joins.getContactPerson().get(fieldName)); } - private Expression getPersonAddressFieldPath(CriteriaBuilder cb, TaskJoins joins, String fieldName) { + private Expression getPersonAddressFieldPath(CriteriaBuilder cb, TaskJoins joins, String fieldName) { return CriteriaBuilderHelper.coalesce(cb, joins.getCasePersonAddress().get(fieldName), joins.getContactPersonAddress().get(fieldName)); } @@ -865,20 +864,14 @@ public TaskDto getByUuid(String uuid) { } @Override + @RolesAllowed(UserRight._TASK_DELETE) public void deleteTask(TaskDto taskDto) { - - if (!userService.hasRight(UserRight.TASK_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete tasks."); - } - Task task = taskService.getByUuid(taskDto.getUuid()); taskService.deletePermanent(task); } + @RolesAllowed(UserRight._TASK_DELETE) public List deleteTasks(List tasksUuids) { - if (!userService.hasRight(UserRight.TASK_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete tasks."); - } List deletedTaskUuids = new ArrayList<>(); List tasksToBeDeleted = taskService.getByUuids(tasksUuids); if (tasksToBeDeleted != null) { @@ -891,6 +884,7 @@ public List deleteTasks(List tasksUuids) { } @Override + @RolesAllowed(UserRight._SYSTEM) @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void sendNewAndDueTaskMessages() { @@ -901,7 +895,10 @@ public void sendNewAndDueTaskMessages() { final Date before = calendar.getTime(); try { - notificationService.sendNotifications(NotificationType.TASK_START, MessageSubject.TASK_START, () -> buildTaskUserMessages( + notificationService.sendNotifications( + NotificationType.TASK_START, + MessageSubject.TASK_START, + () -> buildTaskUserMessages( taskService.findBy(new TaskCriteria().taskStatus(TaskStatus.PENDING).startDateBetween(before, now), true), MessageContents.CONTENT_TASK_START_GENERAL, MessageContents.CONTENT_TASK_START_SPECIFIC)); @@ -961,6 +958,7 @@ private void validate(TaskDto task) throws ValidationRuntimeException { } @Override + @RolesAllowed(UserRight._TASK_EDIT) public void updateArchived(List taskUuids, boolean archived) { IterableHelper.executeBatched(taskUuids, ARCHIVE_BATCH_SIZE, e -> taskService.updateArchived(e, archived)); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJoins.java index 7aa19380a1b..02af0928fb6 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJoins.java @@ -22,81 +22,38 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.contact.Contact; +import de.symeda.sormas.backend.contact.ContactJoins; import de.symeda.sormas.backend.event.Event; -import de.symeda.sormas.backend.infrastructure.facility.Facility; -import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; -import de.symeda.sormas.backend.location.Location; -import de.symeda.sormas.backend.person.Person; -import de.symeda.sormas.backend.person.PersonJoins; +import de.symeda.sormas.backend.event.EventJoins; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; +import de.symeda.sormas.backend.location.Location; +import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.travelentry.TravelEntry; +import de.symeda.sormas.backend.travelentry.TravelEntryJoins; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -import de.symeda.sormas.utils.CaseJoins; -public class TaskJoins extends AbstractDomainObjectJoins { +public class TaskJoins extends QueryJoins { private Join caze; - private Join casePerson; private Join event; - private Join eventReportingUser; - private Join eventResponsibleUser; - private Join eventLocation; - private Join eventRegion; - private Join eventDistrict; - private Join eventCommunity; private Join contact; - private Join contactPerson; - private Join contactCase; - private Join contactCasePerson; private Join creator; private Join assignee; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseFacility; - private Join casePointOfEntry; - private Join contactReportingUser; - private Join contactRegion; - private Join contactDistrict; - private Join contactCommunity; - private Join contactCaseReportingUser; - private Join contactCaseResponsibleRegion; - private Join contactCaseResponsibleDistrict; - private Join contactCaseResponsibleCommunity; - private Join contactCaseRegion; - private Join contactCaseDistrict; - private Join contactCaseCommunity; - private Join contactCaseHealthFacility; - private Join contactCasePointOfEntry; - private Join casePersonAddress; - private Join contactPersonAddress; - private final CaseJoins caseJoins; - private final PersonJoins contactPersonJoins; - private final PersonJoins casePersonJoins; private Join travelEntry; - private Join travelEntryResponsibleRegion; - private Join travelEntryResponsibleDistrict; - private Join travelEntryResponsibleCommunity; - private Join travelEntryPerson; + private Join taskObservers; - public TaskJoins(From root) { - super(root); - - caseJoins = new CaseJoins<>(getCaze()); - casePersonJoins = new PersonJoins<>(getCasePerson()); - contactPersonJoins = new PersonJoins<>(getContactPerson()); - } + private CaseJoins caseJoins; + private ContactJoins contactJoins; + private EventJoins eventJoins; + private TravelEntryJoins travelEntryJoins; - public CaseJoins getCaseJoins() { - return caseJoins; + public TaskJoins(From root) { + super(root); } public Join getCaze() { @@ -108,11 +65,7 @@ private void setCaze(Join caze) { } public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getCaze(), this::setCasePerson); - } - - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; + return getCaseJoins().getPerson(); } public Join getEvent() { @@ -123,6 +76,14 @@ private void setEvent(Join event) { this.event = event; } + public EventJoins getEventJoins() { + return getOrCreate(eventJoins, () -> new EventJoins(getEvent()), this::setEventJoins); + } + + private void setEventJoins(EventJoins eventJoins) { + this.eventJoins = eventJoins; + } + public Join getTravelEntry() { return getOrCreate(travelEntry, Task.TRAVEL_ENTRY, JoinType.LEFT, this::setTravelEntry); } @@ -131,99 +92,52 @@ private void setTravelEntry(Join travelEntry) { this.travelEntry = travelEntry; } - public Join getTravelEntryResponsibleRegion() { - return getOrCreate( - travelEntryResponsibleRegion, - TravelEntry.RESPONSIBLE_REGION, - JoinType.LEFT, - getTravelEntry(), - this::setTravelEntryResponsibleRegion); + public TravelEntryJoins getTravelEntryJoins() { + return getOrCreate(travelEntryJoins, () -> new TravelEntryJoins(getTravelEntry()), this::setTravelEntryJoins); } - public void setTravelEntryResponsibleRegion(Join travelEntryResponsibleRegion) { - this.travelEntryResponsibleRegion = travelEntryResponsibleRegion; + private void setTravelEntryJoins(TravelEntryJoins travelEntryJoins) { + this.travelEntryJoins = travelEntryJoins; } - public Join getTravelEntryResponsibleDistrict() { - return getOrCreate( - travelEntryResponsibleDistrict, - TravelEntry.RESPONSIBLE_DISTRICT, - JoinType.LEFT, - getTravelEntry(), - this::setTravelEntryResponsibleDistrict); + public Join getTravelEntryResponsibleRegion() { + return getTravelEntryJoins().getResponsibleRegion(); } - public void setTravelEntryResponsibleDistrict(Join travelEntryResponsibleDistrict) { - this.travelEntryResponsibleDistrict = travelEntryResponsibleDistrict; + public Join getTravelEntryResponsibleDistrict() { + return getTravelEntryJoins().getResponsibleDistrict(); } public Join getTravelEntryResponsibleCommunity() { - return getOrCreate( - travelEntryResponsibleCommunity, - TravelEntry.RESPONSIBLE_COMMUNITY, - JoinType.LEFT, - getTravelEntry(), - this::setTravelEntryResponsibleCommunity); - } - - public void setTravelEntryResponsibleCommunity(Join travelEntryResponsibleCommunity) { - this.travelEntryResponsibleCommunity = travelEntryResponsibleCommunity; + return getTravelEntryJoins().getResponsibleCommunity(); } public Join getTravelEntryPerson() { - return getOrCreate(travelEntryPerson, TravelEntry.PERSON, JoinType.LEFT, getTravelEntry(), this::setTravelEntryPerson); - } - - public void setTravelEntryPerson(Join travelEntryPerson) { - this.travelEntryPerson = travelEntryPerson; + return getTravelEntryJoins().getPerson(); } public Join getEventReportingUser() { - return getOrCreate(eventReportingUser, Event.REPORTING_USER, JoinType.LEFT, getEvent(), this::setEventReportingUser); - } - - private void setEventReportingUser(Join eventReportingUser) { - this.eventReportingUser = eventReportingUser; + return getEventJoins().getReportingUser(); } public Join getEventResponsibleUser() { - return getOrCreate(eventResponsibleUser, Event.RESPONSIBLE_USER, JoinType.LEFT, getEvent(), this::setEventResponsibleUser); - } - - private void setEventResponsibleUser(Join eventResponsibleUser) { - this.eventResponsibleUser = eventResponsibleUser; + return getEventJoins().getResponsibleUser(); } public Join getEventLocation() { - return getOrCreate(eventLocation, Event.EVENT_LOCATION, JoinType.LEFT, getEvent(), this::setEventLocation); - } - - private void setEventLocation(Join eventLocation) { - this.eventLocation = eventLocation; + return getEventJoins().getLocation(); } public Join getEventRegion() { - return getOrCreate(eventRegion, Location.REGION, JoinType.LEFT, getEventLocation(), this::setEventRegion); - } - - private void setEventRegion(Join eventRegion) { - this.eventRegion = eventRegion; + return getEventJoins().getRegion(); } public Join getEventDistrict() { - return getOrCreate(eventDistrict, Location.DISTRICT, JoinType.LEFT, getEventLocation(), this::setEventDistrict); - } - - private void setEventDistrict(Join eventDistrict) { - this.eventDistrict = eventDistrict; + return getEventJoins().getDistrict(); } public Join getEventCommunity() { - return getOrCreate(eventCommunity, Location.COMMUNITY, JoinType.LEFT, getEventLocation(), this::setEventCommunity); - } - - private void setEventCommunity(Join eventCommunity) { - this.eventCommunity = eventCommunity; + return getEventJoins().getCommunity(); } public Join getContact() { @@ -235,27 +149,15 @@ private void setContact(Join contact) { } public Join getContactPerson() { - return getOrCreate(contactPerson, Contact.PERSON, JoinType.LEFT, getContact(), this::setContactPerson); - } - - private void setContactPerson(Join contactPerson) { - this.contactPerson = contactPerson; + return getContactJoins().getPerson(); } public Join getContactCase() { - return getOrCreate(contactCase, Contact.CAZE, JoinType.LEFT, getContact(), this::setContactCase); - } - - private void setContactCase(Join contactCase) { - this.contactCase = contactCase; + return getContactJoins().getCaze(); } public Join getContactCasePerson() { - return getOrCreate(contactCasePerson, Case.PERSON, JoinType.LEFT, getContactCase(), this::setContactCasePerson); - } - - private void setContactCasePerson(Join contactCasePerson) { - this.contactCasePerson = contactCasePerson; + return getContactJoins().getCaseJoins().getPerson(); } public Join getCreator() { @@ -274,218 +176,71 @@ private void setAssignee(Join assignee) { this.assignee = assignee; } - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCaze(), this::setCaseReportingUser); - } - - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; - } - public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCaze(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + return getCaseJoins().getResponsibleRegion(); } public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCaze(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + return getCaseJoins().getResponsibleDistrict(); } public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + return getCaseJoins().getResponsibleCommunity(); } public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCaze(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + return getCaseJoins().getRegion(); } public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCaze(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + return getCaseJoins().getDistrict(); } public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; - } - - public Join getCaseFacility() { - return getOrCreate(caseFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCaze(), this::setCaseFacility); - } - - private void setCaseFacility(Join caseFacility) { - this.caseFacility = caseFacility; - } - - public Join getCasePointOfEntry() { - return getOrCreate(casePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCaze(), this::setCasePointOfEntry); - } - - private void setCasePointOfEntry(Join casePointOfEntry) { - this.casePointOfEntry = casePointOfEntry; - } - - public Join getContactReportingUser() { - return getOrCreate(contactReportingUser, Contact.REPORTING_USER, JoinType.LEFT, getContact(), this::setContactReportingUser); - } - - private void setContactReportingUser(Join contactReportingUser) { - this.contactReportingUser = contactReportingUser; + return getCaseJoins().getCommunity(); } public Join getContactRegion() { - return getOrCreate(contactRegion, Contact.REGION, JoinType.LEFT, getContact(), this::setContactRegion); - } - - private void setContactRegion(Join contactRegion) { - this.contactRegion = contactRegion; + return getContactJoins().getRegion(); } public Join getContactDistrict() { - return getOrCreate(contactDistrict, Contact.DISTRICT, JoinType.LEFT, getContact(), this::setContactDistrict); - } - - private void setContactDistrict(Join contactDistrict) { - this.contactDistrict = contactDistrict; + return getContactJoins().getDistrict(); } public Join getContactCommunity() { - return getOrCreate(contactCommunity, Contact.COMMUNITY, JoinType.LEFT, getContact(), this::setContactCommunity); - } - - public void setContactCommunity(Join contactCommunity) { - this.contactCommunity = contactCommunity; - } - - public Join getContactCaseReportingUser() { - return getOrCreate(contactCaseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getContactCase(), this::setContactCaseReportingUser); + return getContactJoins().getCommunity(); } - private void setContactCaseReportingUser(Join contactCaseReportingUser) { - this.contactCaseReportingUser = contactCaseReportingUser; - } - - public Join getContactCaseResponsibleRegion() { - return getOrCreate( - contactCaseResponsibleRegion, - Case.RESPONSIBLE_REGION, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleRegion); - } - - private void setContactCaseResponsibleRegion(Join contactCaseResponsibleRegion) { - this.contactCaseResponsibleRegion = contactCaseResponsibleRegion; - } - - public Join getContactCaseResponsibleDistrict() { - return getOrCreate( - contactCaseResponsibleDistrict, - Case.RESPONSIBLE_DISTRICT, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleDistrict); - } - - private void setContactCaseResponsibleDistrict(Join contactCaseResponsibleDistrict) { - this.contactCaseResponsibleDistrict = contactCaseResponsibleDistrict; - } - - public Join getContactCaseResponsibleCommunity() { - return getOrCreate( - contactCaseResponsibleCommunity, - Case.RESPONSIBLE_COMMUNITY, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleCommunity); - } - - private void setContactCaseResponsibleCommunity(Join contactCaseResponsibleCommunity) { - this.contactCaseResponsibleCommunity = contactCaseResponsibleCommunity; - } - - public Join getContactCaseRegion() { - return getOrCreate(contactCaseRegion, Case.REGION, JoinType.LEFT, getContactCase(), this::setContactCaseRegion); - } - - private void setContactCaseRegion(Join contactCaseRegion) { - this.contactCaseRegion = contactCaseRegion; - } - - public Join getContactCaseDistrict() { - return getOrCreate(contactCaseDistrict, Case.DISTRICT, JoinType.LEFT, getContactCase(), this::setContactCaseDistrict); - } - - private void setContactCaseDistrict(Join contactCaseDistrict) { - this.contactCaseDistrict = contactCaseDistrict; - } - - public Join getContactCaseCommunity() { - return getOrCreate(contactCaseCommunity, Case.COMMUNITY, JoinType.LEFT, getContactCase(), this::setContactCaseCommunity); - } - - private void setContactCaseCommunity(Join contactCaseCommunity) { - this.contactCaseCommunity = contactCaseCommunity; - } - - public Join getContactCaseHealthFacility() { - return getOrCreate(contactCaseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getContactCase(), this::setContactCaseHealthFacility); - } - - private void setContactCaseHealthFacility(Join contactCaseHealthFacility) { - this.contactCaseHealthFacility = contactCaseHealthFacility; - } - - public Join getContactCasePointOfEntry() { - return getOrCreate(contactCasePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getContactCase(), this::setContactCasePointOfEntry); + public Join getCasePersonAddress() { + return getCaseJoins().getPersonJoins().getAddress(); } - private void setContactCasePointOfEntry(Join contactCasePointOfEntry) { - this.contactCasePointOfEntry = contactCasePointOfEntry; + public Join getContactPersonAddress() { + return getContactJoins().getPersonJoins().getAddress(); } - public PersonJoins getCasePersonJoins() { - return casePersonJoins; + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); } - public PersonJoins getContactPersonJoins() { - return contactPersonJoins; + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; } - public Join getCasePersonAddress() { - return getOrCreate(casePersonAddress, Person.ADDRESS, JoinType.LEFT, getCasePerson(), this::setCasePersonAddress); + public ContactJoins getContactJoins() { + return getOrCreate(contactJoins, () -> new ContactJoins(getContact()), this::setContactJoins); } - private void setCasePersonAddress(Join casePersonAddress) { - this.casePersonAddress = casePersonAddress; + private void setContactJoins(ContactJoins contactJoins) { + this.contactJoins = contactJoins; } - public Join getContactPersonAddress() { - return getOrCreate(contactPersonAddress, Person.ADDRESS, JoinType.LEFT, getContactPerson(), this::setContactPersonAddress); + public Join getTaskObservers() { + return getOrCreate(taskObservers, Task.OBSERVER_USER, JoinType.LEFT, this::setTaskObservers); } - private void setContactPersonAddress(Join contactPersonAddress) { - this.contactPersonAddress = contactPersonAddress; + public void setTaskObservers(Join taskObservers) { + this.taskObservers = taskObservers; } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJurisdictionPredicateValidator.java index f71330fadd7..7af82042460 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskJurisdictionPredicateValidator.java @@ -47,13 +47,13 @@ public static TaskJurisdictionPredicateValidator of(TaskQueryContext qc, User us final List associatedJurisdictionValidators = new ArrayList<>(); final CriteriaBuilder cb = qc.getCriteriaBuilder(); - final TaskJoins joins = (TaskJoins) qc.getJoins(); + final TaskJoins joins = qc.getJoins(); - associatedJurisdictionValidators.add(CaseJurisdictionPredicateValidator.of(new CaseQueryContext(cb, qc.getQuery(), joins.getCaze()), user)); + associatedJurisdictionValidators.add(CaseJurisdictionPredicateValidator.of(new CaseQueryContext(cb, qc.getQuery(), joins.getCaseJoins()), user)); associatedJurisdictionValidators - .add(ContactJurisdictionPredicateValidator.of(new ContactQueryContext(cb, qc.getQuery(), joins.getContact()), user)); + .add(ContactJurisdictionPredicateValidator.of(new ContactQueryContext(cb, qc.getQuery(), joins.getContactJoins()), user)); associatedJurisdictionValidators - .add(EventJurisdictionPredicateValidator.of(new EventQueryContext(cb, qc.getQuery(), joins.getEvent()), user)); + .add(EventJurisdictionPredicateValidator.of(new EventQueryContext(cb, qc.getQuery(), joins.getEventJoins()), user)); return new TaskJurisdictionPredicateValidator(cb, joins, user, associatedJurisdictionValidators); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskQueryContext.java index 8c5df24551d..74a91ea0bdf 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskQueryContext.java @@ -22,7 +22,7 @@ import de.symeda.sormas.backend.common.QueryContext; -public class TaskQueryContext extends QueryContext { +public class TaskQueryContext extends QueryContext { public TaskQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { super(cb, query, root, new TaskJoins(root)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskService.java index 4ddf7fe9ca7..41d17e70017 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskService.java @@ -164,6 +164,12 @@ public Predicate createUserFilterForJoin(TaskQueryContext taskQueryContext) { Predicate assigneeFilter = createAssigneeFilter(cb, ((TaskJoins) taskQueryContext.getJoins()).getAssignee()); + Predicate contactRightsPredicate = this.createContactFilter(cb ,taskQueryContext.getRoot(), (taskQueryContext.getJoins()).getAssignee(), + (taskQueryContext.getJoins()).getTaskObservers(), currentUser); + if(contactRightsPredicate != null){ + assigneeFilter = cb.and(assigneeFilter, contactRightsPredicate); + } + final JurisdictionLevel jurisdictionLevel = currentUser.getJurisdictionLevel(); if ((jurisdictionLevel == JurisdictionLevel.NATION && !UserRole.isPortHealthUser(currentUser.getUserRoles())) || currentUser.hasUserRole(UserRole.REST_USER)) { @@ -198,6 +204,27 @@ public Predicate createAssigneeFilter(CriteriaBuilder cb, Join assignee .or(cb, cb.isNull(assigneeUserJoin.get(User.UUID)), userService.createCurrentUserJurisdictionFilter(cb, assigneeUserJoin)); } + /* + A user that not have CONTACT_VIEW or CONTACT_EDIT rights is allowed to see the tasks assign to it or where it is + set as an observer. This restriction should be applied only for tasks of type CONTACT. + */ + private Predicate createContactFilter( + CriteriaBuilder cb, + From task, + Join assigneeUserJoin, + Join observersJoin, + User user) { + Predicate predicate = null; + if (!userService.hasRight(UserRight.CONTACT_VIEW) && !userService.hasRight(UserRight.CONTACT_EDIT)) { + predicate = cb.or( + cb.notEqual(task.get(Task.TASK_CONTEXT), TaskContext.CONTACT), + cb.equal(assigneeUserJoin.get(User.UUID), user.getUuid()), + cb.equal(observersJoin.get(User.UUID), user.getUuid())); + } + + return predicate; + } + public long getCount(TaskCriteria taskCriteria) { CriteriaBuilder cb = em.getCriteriaBuilder(); @@ -340,7 +367,9 @@ public Predicate buildCriteriaFilter(TaskCriteria taskCriteria, CriteriaBuilder cb.selectCase() .when(cb.isNotNull(joins.getContactRegion()), joins.getContactRegion().get(Region.UUID)) .otherwise(joins.getEventRegion().get(Region.UUID))); - filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(region, taskCriteria.getRegion().getUuid())); + String regionUuid = taskCriteria.getRegion().getUuid(); + filter = CriteriaBuilderHelper + .and(cb, filter, cb.or(cb.equal(region, regionUuid), cb.equal(joins.getCaseResponsibleRegion().get(Region.UUID), regionUuid))); } if (taskCriteria.getDistrict() != null) { Expression district = cb.selectCase() @@ -349,7 +378,11 @@ public Predicate buildCriteriaFilter(TaskCriteria taskCriteria, CriteriaBuilder cb.selectCase() .when(cb.isNotNull(joins.getContactDistrict()), joins.getContactDistrict().get(District.UUID)) .otherwise(joins.getEventDistrict().get(District.UUID))); - filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(district, taskCriteria.getDistrict().getUuid())); + String districtUuid = taskCriteria.getDistrict().getUuid(); + filter = CriteriaBuilderHelper.and( + cb, + filter, + cb.or(cb.equal(district, districtUuid), cb.equal(joins.getCaseResponsibleDistrict().get(District.UUID), districtUuid))); } if (taskCriteria.getFreeText() != null) { String[] textFilters = taskCriteria.getFreeText().split("\\s+"); @@ -546,31 +579,30 @@ public TaskJurisdictionFlagsDto inJurisdictionOrOwned(Task task) { } public List> getJurisdictionSelections(TaskQueryContext qc) { - CriteriaBuilder cb = qc.getCriteriaBuilder(); - TaskJoins joins = (TaskJoins) qc.getJoins(); + final CriteriaBuilder cb = qc.getCriteriaBuilder(); + final TaskJoins joins = qc.getJoins(); - ContactJoins contactJoins = new ContactJoins<>(joins.getContact()); return Arrays.asList( JurisdictionHelper.booleanSelector(cb, inJurisdictionOrOwned(qc)), JurisdictionHelper.booleanSelector( cb, - cb.and(cb.isNotNull(joins.getCaze()), caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, qc.getQuery(), joins.getCaze())))), + cb.and(cb.isNotNull(joins.getCaze()), caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, qc.getQuery(), joins.getCaseJoins())))), JurisdictionHelper.booleanSelector( cb, cb.and( cb.isNotNull(joins.getContact()), - contactService.inJurisdictionOrOwned(new ContactQueryContext<>(cb, qc.getQuery(), joins.getContact())))), + contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, qc.getQuery(), joins.getContactJoins())))), JurisdictionHelper.booleanSelector( cb, cb.and( cb.isNotNull(joins.getContact()), - cb.isNotNull(contactJoins.getCaze()), - caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, qc.getQuery(), contactJoins.getCaze())))), + cb.isNotNull(joins.getContactJoins().getCaze()), + caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, qc.getQuery(), joins.getContactJoins().getCaseJoins())))), JurisdictionHelper.booleanSelector( cb, cb.and( cb.isNotNull(joins.getEvent()), - eventService.inJurisdictionOrOwned(new EventQueryContext<>(cb, qc.getQuery(), joins.getEvent())))), + eventService.inJurisdictionOrOwned(new EventQueryContext(cb, qc.getQuery(), joins.getEventJoins())))), JurisdictionHelper.booleanSelector( cb, cb.and( diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionFacadeEjb.java index 5ab6997d7f6..133f673acf5 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionFacadeEjb.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -42,6 +43,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "PrescriptionFacade") +@RolesAllowed(UserRight._CASE_VIEW) public class PrescriptionFacadeEjb implements PrescriptionFacade { @PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME) @@ -76,7 +78,7 @@ public List getIndexList(PrescriptionCriteria criteria) { prescription.get(Prescription.ROUTE), prescription.get(Prescription.ROUTE_DETAILS), prescription.get(Prescription.PRESCRIBING_CLINICIAN), - JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaze())))); + JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaseJoins())))); if (criteria != null) { cq.where(service.buildCriteriaFilter(criteria, cb, prescription)); @@ -101,6 +103,7 @@ public PrescriptionDto getPrescriptionByUuid(String uuid) { } @Override + @RolesAllowed({UserRight._PRESCRIPTION_CREATE, UserRight._PRESCRIPTION_EDIT}) public PrescriptionDto savePrescription(@Valid PrescriptionDto prescription) { Prescription existingPrescription = service.getByUuid(prescription.getUuid()); PrescriptionDto existingPrescriptionDto = toDto(existingPrescription); @@ -115,12 +118,8 @@ public PrescriptionDto savePrescription(@Valid PrescriptionDto prescription) { } @Override + @RolesAllowed(UserRight._PRESCRIPTION_DELETE) public void deletePrescription(String prescriptionUuid) { - - if (!userService.hasRight(UserRight.PRESCRIPTION_DELETE)) { - throw new UnsupportedOperationException("Your user is not allowed to delete prescriptions"); - } - Prescription prescription = service.getByUuid(prescriptionUuid); service.deletePermanent(prescription); } @@ -174,7 +173,7 @@ public List getExportList(CaseCriteria criteria, Collecti PrescriptionJoins joins = new PrescriptionJoins(prescription); - CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, joins.getCaze()); + CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, joins.getCaseJoins()); cq.multiselect( joins.getCaze().get(Case.UUID), joins.getCasePerson().get(Person.FIRST_NAME), diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionJoins.java index ddfeeb643d2..d2e958f1d30 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/PrescriptionJoins.java @@ -23,6 +23,8 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.infrastructure.facility.Facility; import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; import de.symeda.sormas.backend.person.Person; @@ -30,24 +32,14 @@ import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class PrescriptionJoins extends AbstractDomainObjectJoins { +public class PrescriptionJoins extends QueryJoins { + private Join therapy; private Join caze; - private Join casePerson; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseFacility; - private Join casePointOfEntry; - - - public PrescriptionJoins(From root) { + private CaseJoins caseJoins; + + public PrescriptionJoins(From root) { super(root); } @@ -67,83 +59,51 @@ private void setCaze(Join caze) { this.caze = caze; } - public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getCaze(), this::setCasePerson); + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); } - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; } - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCaze(), this::setCaseReportingUser); + public Join getCasePerson() { + return getCaseJoins().getPerson(); } - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; + public Join getCaseReportingUser() { + return getCaseJoins().getReportingUser(); } public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCaze(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + return getCaseJoins().getResponsibleRegion(); } public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCaze(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + return getCaseJoins().getResponsibleDistrict(); } public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + return getCaseJoins().getResponsibleCommunity(); } public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCaze(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + return getCaseJoins().getRegion(); } public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCaze(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + return getCaseJoins().getDistrict(); } public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; + return getCaseJoins().getCommunity(); } public Join getCaseFacility() { - return getOrCreate(caseFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCaze(), this::setCaseFacility); - } - - private void setCaseFacility(Join caseFacility) { - this.caseFacility = caseFacility; + return getCaseJoins().getFacility(); } public Join getCasePointOfEntry() { - return getOrCreate(casePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCaze(), this::setCasePointOfEntry); - } - - private void setCasePointOfEntry(Join casePointOfEntry) { - this.casePointOfEntry = casePointOfEntry; + return getCaseJoins().getPointOfEntry(); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentFacadeEjb.java index d7dbbf8d320..ebcc2970ef7 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentFacadeEjb.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -41,6 +42,7 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "TreatmentFacade") +@RolesAllowed(UserRight._CASE_VIEW) public class TreatmentFacadeEjb implements TreatmentFacade { @PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME) @@ -75,7 +77,7 @@ public List getIndexList(TreatmentCriteria criteria) { treatment.get(Treatment.ROUTE), treatment.get(Treatment.ROUTE_DETAILS), treatment.get(Treatment.EXECUTING_CLINICIAN), - JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaze())))); + JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaseJoins())))); if (criteria != null) { cq.where(service.buildCriteriaFilter(criteria, cb, treatment)); @@ -100,6 +102,7 @@ public TreatmentDto getTreatmentByUuid(String uuid) { } @Override + @RolesAllowed({UserRight._TREATMENT_CREATE, UserRight._TREATMENT_EDIT}) public TreatmentDto saveTreatment(@Valid TreatmentDto source) { Treatment existingTreatment = service.getByUuid(source.getUuid()); TreatmentDto existingDto = toDto(existingTreatment); @@ -112,12 +115,8 @@ public TreatmentDto saveTreatment(@Valid TreatmentDto source) { } @Override + @RolesAllowed(UserRight._TREATMENT_DELETE) public void deleteTreatment(String treatmentUuid) { - - if (!userService.hasRight(UserRight.TREATMENT_DELETE)) { - throw new UnsupportedOperationException("Your user is not allowed to delete treatments"); - } - Treatment treatment = service.getByUuid(treatmentUuid); service.deletePermanent(treatment); } @@ -166,6 +165,8 @@ public List getExportList(CaseCriteria criteria, Collection< Root treatment = cq.from(Treatment.class); TreatmentJoins joins = new TreatmentJoins(treatment); + CaseQueryContext caseQueryContext = new CaseQueryContext(cb, cq, joins.getCaseJoins()); + cq.multiselect( joins.getCaze().get(Case.UUID), joins.getCasePerson().get(Person.FIRST_NAME), @@ -179,10 +180,10 @@ public List getExportList(CaseCriteria criteria, Collection< treatment.get(Treatment.ROUTE), treatment.get(Treatment.ROUTE_DETAILS), treatment.get(Treatment.ADDITIONAL_NOTES), - JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, joins.getCaze())))); + JurisdictionHelper.booleanSelector(cb, caseService.inJurisdictionOrOwned(caseQueryContext))); Predicate filter = service.createUserFilter(cb, cq, treatment); - Predicate criteriaFilter = caseService.createCriteriaFilter(criteria, new CaseQueryContext(cb, cq, joins.getCaze())); + Predicate criteriaFilter = caseService.createCriteriaFilter(criteria, caseQueryContext); filter = CriteriaBuilderHelper.and(cb, filter, criteriaFilter); filter = CriteriaBuilderHelper.andInValues(selectedRows, filter, cb, joins.getCaze().get(Case.UUID)); cq.where(filter); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentJoins.java index e4c43787e4d..ccd8de30407 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/therapy/TreatmentJoins.java @@ -20,6 +20,8 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.infrastructure.facility.Facility; import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; import de.symeda.sormas.backend.person.Person; @@ -27,24 +29,14 @@ import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class TreatmentJoins extends AbstractDomainObjectJoins { +public class TreatmentJoins extends QueryJoins { private Join therapy; private Join caze; - private Join casePerson; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseFacility; - private Join casePointOfEntry; - - public TreatmentJoins(From root) { + private CaseJoins caseJoins; + + public TreatmentJoins(From root) { super(root); } @@ -64,83 +56,51 @@ private void setCaze(Join caze) { this.caze = caze; } - public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getCaze(), this::setCasePerson); + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCaze()), this::setCaseJoins); } - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; } - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCaze(), this::setCaseReportingUser); + public Join getCasePerson() { + return getCaseJoins().getPerson(); } - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; + public Join getCaseReportingUser() { + return getCaseJoins().getReportingUser(); } public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCaze(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + return getCaseJoins().getResponsibleRegion(); } public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCaze(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + return getCaseJoins().getResponsibleDistrict(); } public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + return getCaseJoins().getResponsibleCommunity(); } public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCaze(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + return getCaseJoins().getRegion(); } public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCaze(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + return getCaseJoins().getDistrict(); } public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCaze(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; + return getCaseJoins().getCommunity(); } public Join getCaseFacility() { - return getOrCreate(caseFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCaze(), this::setCaseFacility); - } - - private void setCaseFacility(Join caseFacility) { - this.caseFacility = caseFacility; + return getCaseJoins().getFacility(); } public Join getCasePointOfEntry() { - return getOrCreate(casePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCaze(), this::setCasePointOfEntry); - } - - private void setCasePointOfEntry(Join casePointOfEntry) { - this.casePointOfEntry = casePointOfEntry; + return getCaseJoins().getPointOfEntry(); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryFacadeEjb.java index 12b495b536f..6473c486a4d 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryFacadeEjb.java @@ -2,6 +2,7 @@ import java.sql.Timestamp; import java.time.LocalDate; +import java.util.Date; import java.util.List; import javax.annotation.security.RolesAllowed; @@ -14,6 +15,7 @@ import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; +import javax.validation.Valid; import javax.validation.constraints.NotNull; import de.symeda.sormas.api.EditPermissionType; @@ -55,6 +57,7 @@ import de.symeda.sormas.backend.util.Pseudonymizer; @Stateless(name = "TravelEntryFacade") +@RolesAllowed(UserRight._TRAVEL_ENTRY_VIEW) public class TravelEntryFacadeEjb extends AbstractCoreFacadeEjb implements TravelEntryFacade { @@ -108,11 +111,8 @@ public EditPermissionType isTravelEntryEditAllowed(String travelEntryUuid) { } @Override + @RolesAllowed(UserRight._TRAVEL_ENTRY_DELETE) public void delete(String travelEntryUuid) { - if (!userService.hasRight(UserRight.TRAVEL_ENTRY_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete travel entries"); - } - TravelEntry travelEntry = service.getByUuid(travelEntryUuid); service.delete(travelEntry); @@ -382,6 +382,30 @@ protected String getDeleteReferenceField(DeletionReference deletionReference) { return super.getDeleteReferenceField(deletionReference); } + @Override + @RolesAllowed(UserRight._TRAVEL_ENTRY_ARCHIVE) + public void archive(String entityUuid, Date endOfProcessingDate) { + super.archive(entityUuid, endOfProcessingDate); + } + + @Override + @RolesAllowed(UserRight._TRAVEL_ENTRY_ARCHIVE) + public void archive(List entityUuids) { + super.archive(entityUuids); + } + + @Override + @RolesAllowed(UserRight._TRAVEL_ENTRY_ARCHIVE) + public void dearchive(List entityUuids, String dearchiveReason) { + super.dearchive(entityUuids, dearchiveReason); + } + + @Override + @RolesAllowed(UserRight._TRAVEL_ENTRY_EDIT) + public TravelEntryDto save(@Valid @NotNull TravelEntryDto travelEntryDto) { + return doSave(travelEntryDto); + } + @LocalBean @Stateless public static class TravelEntryFacadeEjbLocal extends TravelEntryFacadeEjb { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJoins.java index 32dead5c742..07a0059dc6e 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJoins.java @@ -5,15 +5,15 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; import de.symeda.sormas.backend.infrastructure.region.Region; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class TravelEntryJoins extends AbstractDomainObjectJoins { +public class TravelEntryJoins extends QueryJoins { private Join person; private Join responsibleRegion; @@ -25,7 +25,7 @@ public class TravelEntryJoins extends AbstractDomainObjectJoins pointOfEntry; private Join resultingCase; - public TravelEntryJoins(From root) { + public TravelEntryJoins(From root) { super(root); } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJurisdictionPredicateValidator.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJurisdictionPredicateValidator.java index add070630c5..f12e332e798 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJurisdictionPredicateValidator.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryJurisdictionPredicateValidator.java @@ -20,12 +20,12 @@ public class TravelEntryJurisdictionPredicateValidator extends PredicateJurisdictionValidator { - private final TravelEntryJoins joins; + private final TravelEntryJoins joins; private TravelEntryJurisdictionPredicateValidator( CriteriaQuery cq, CriteriaBuilder cb, - TravelEntryJoins joins, + TravelEntryJoins joins, User user, List associatedJurisdictionValidators) { super(cb, user, null, associatedJurisdictionValidators); @@ -35,7 +35,7 @@ private TravelEntryJurisdictionPredicateValidator( private TravelEntryJurisdictionPredicateValidator( CriteriaQuery cq, CriteriaBuilder cb, - TravelEntryJoins joins, + TravelEntryJoins joins, Path userPath, List associatedJurisdictionValidators) { super(cb, null, userPath, associatedJurisdictionValidators); @@ -46,24 +46,23 @@ public static TravelEntryJurisdictionPredicateValidator of(TravelEntryQueryConte return new TravelEntryJurisdictionPredicateValidator( qc.getQuery(), qc.getCriteriaBuilder(), - (TravelEntryJoins) qc.getJoins(), + qc.getJoins(), user, Collections.singletonList( - CaseJurisdictionPredicateValidator.of( - new CaseQueryContext<>(qc.getCriteriaBuilder(), qc.getQuery(), ((TravelEntryJoins) qc.getJoins()).getResultingCase()), - user))); + CaseJurisdictionPredicateValidator + .of(new CaseQueryContext(qc.getCriteriaBuilder(), qc.getQuery(), ((TravelEntryJoins) qc.getJoins()).getResultingCase()), user))); } - + public static TravelEntryJurisdictionPredicateValidator of(TravelEntryQueryContext qc, Path userPath) { return new TravelEntryJurisdictionPredicateValidator( qc.getQuery(), qc.getCriteriaBuilder(), - (TravelEntryJoins) qc.getJoins(), + qc.getJoins(), userPath, Collections.singletonList( CaseJurisdictionPredicateValidator.of( - new CaseQueryContext<>(qc.getCriteriaBuilder(), qc.getQuery(), ((TravelEntryJoins) qc.getJoins()).getResultingCase()), - userPath))); + new CaseQueryContext(qc.getCriteriaBuilder(), qc.getQuery(), ((TravelEntryJoins) qc.getJoins()).getResultingCase()), + userPath))); } @Override diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryQueryContext.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryQueryContext.java index ebc7522a8ee..2b4a746cf9c 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryQueryContext.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/TravelEntryQueryContext.java @@ -7,7 +7,7 @@ import de.symeda.sormas.backend.common.QueryContext; -public class TravelEntryQueryContext extends QueryContext { +public class TravelEntryQueryContext extends QueryContext { public TravelEntryQueryContext(CriteriaBuilder cb, CriteriaQuery query, From root) { super(cb, query, root, new TravelEntryJoins(root)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryListService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryListService.java index 6349a497631..3f353e57f5e 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryListService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryListService.java @@ -31,7 +31,7 @@ public List getEntriesList(Long personId, Long caseId, final TravelEntryQueryContext travelEntryQueryContext = new TravelEntryQueryContext(cb, cq, travelEntry); - final TravelEntryJoins joins = (TravelEntryJoins) travelEntryQueryContext.getJoins(); + final TravelEntryJoins joins = travelEntryQueryContext.getJoins(); final Join pointOfEntry = joins.getPointOfEntry(); cq.multiselect( diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryService.java index 26708d803a3..9ab1495dc92 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/travelentry/services/TravelEntryService.java @@ -62,7 +62,7 @@ public List getIndexList(TravelEntryCriteria criteria, Inte final Root travelEntry = cq.from(TravelEntry.class); TravelEntryQueryContext travelEntryQueryContext = new TravelEntryQueryContext(cb, cq, travelEntry); - TravelEntryJoins joins = (TravelEntryJoins) travelEntryQueryContext.getJoins(); + TravelEntryJoins joins = travelEntryQueryContext.getJoins(); final Join person = joins.getPerson(); final Join pointOfEntry = joins.getPointOfEntry(); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserFacadeEjb.java index 28bb59a2ebe..8bf485d8e09 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserFacadeEjb.java @@ -407,7 +407,7 @@ public List getUsersHavingContactInJurisdiction(ContactReferen final Subquery contactJurisdictionSubquery = cq.subquery(Contact.class); final Root contactRoot = contactJurisdictionSubquery.from(Contact.class); final ContactJurisdictionPredicateValidator contactJurisdictionPredicateValidator = - ContactJurisdictionPredicateValidator.of(new ContactQueryContext<>(cb, cq, contactRoot), userRoot); + ContactJurisdictionPredicateValidator.of(new ContactQueryContext(cb, cq, contactRoot), userRoot); contactJurisdictionSubquery.select(contactRoot) .where( @@ -429,7 +429,7 @@ public List getUsersHavingEventInJurisdiction(EventReferenceDt final Subquery eventJurisdictionSubquery = cq.subquery(de.symeda.sormas.backend.event.Event.class); final Root eventRoot = eventJurisdictionSubquery.from(de.symeda.sormas.backend.event.Event.class); final EventJurisdictionPredicateValidator eventJurisdictionPredicateValidator = - EventJurisdictionPredicateValidator.of(new EventQueryContext<>(cb, cq, eventRoot), userRoot); + EventJurisdictionPredicateValidator.of(new EventQueryContext(cb, cq, eventRoot), userRoot); eventJurisdictionSubquery.select(eventRoot) .where( @@ -451,7 +451,7 @@ public List getUsersHavingTravelEntryInJurisdiction(TravelEntr final Subquery travelEntrySubquery = cq.subquery(TravelEntry.class); final Root travelEntryRoot = travelEntrySubquery.from(TravelEntry.class); final TravelEntryJurisdictionPredicateValidator travelEntryJurisdictionPredicateValidator = - TravelEntryJurisdictionPredicateValidator.of(new TravelEntryQueryContext<>(cb, cq, travelEntryRoot), userRoot); + TravelEntryJurisdictionPredicateValidator.of(new TravelEntryQueryContext(cb, cq, travelEntryRoot), userRoot); travelEntrySubquery.select(travelEntryRoot) .where( diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserRightsFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserRightsFacadeEjb.java index c7e69f6bef5..4f6950bbfbe 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserRightsFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserRightsFacadeEjb.java @@ -1,6 +1,6 @@ /* * SORMAS® - Surveillance Outbreak Response Management & Analysis System - * Copyright © 2016-2021 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) + * Copyright © 2016-2022 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 @@ -131,17 +131,22 @@ private void generateUserRightsDocument(Map> userRoleRi Cell userRightHeadlineCell = headerRow.createCell(0); userRightHeadlineCell.setCellValue(I18nProperties.getCaption(Captions.userRight)); userRightHeadlineCell.setCellStyle(boldStyle); - Cell descHeadlineCell = headerRow.createCell(1); + Cell captionHeadlineCell = headerRow.createCell(1); + captionHeadlineCell.setCellValue(I18nProperties.getCaption(Captions.UserRight_caption)); + captionHeadlineCell.setCellStyle(boldStyle); + Cell descHeadlineCell = headerRow.createCell(2); descHeadlineCell.setCellValue(I18nProperties.getCaption(Captions.UserRight_description)); descHeadlineCell.setCellStyle(boldStyle); sheet.setColumnWidth(0, 256 * 35); sheet.setColumnWidth(1, 256 * 50); + sheet.setColumnWidth(2, 256 * 75); + sheet.createFreezePane(2,2,2,2); for (UserRole userRole : UserRole.values()) { String columnCaption = userRole.toString(); - Cell headerCell = headerRow.createCell(userRole.ordinal() + 2); + Cell headerCell = headerRow.createCell(userRole.ordinal() + 3); headerCell.setCellValue(columnCaption); headerCell.setCellStyle(boldStyle); - sheet.setColumnWidth(userRole.ordinal() + 2, 256 * 14); + sheet.setColumnWidth(userRole.ordinal() + 3, 256 * 14); } // Jurisdiction row (header) @@ -154,7 +159,7 @@ private void generateUserRightsDocument(Map> userRoleRi jurDescHeadlineCell.setCellStyle(boldStyle); for (UserRole userRole : UserRole.values()) { final String columnCaption = userRole.getJurisdictionLevel().toString(); - final Cell headerCell = jurisdictionRow.createCell(userRole.ordinal() + 2); + final Cell headerCell = jurisdictionRow.createCell(userRole.ordinal() + 3); headerCell.setCellValue(columnCaption); headerCell.setCellStyle(boldStyle); } @@ -168,13 +173,17 @@ private void generateUserRightsDocument(Map> userRoleRi nameCell.setCellValue(userRight.name()); nameCell.setCellStyle(boldStyle); + // User right caption + Cell captionCell = row.createCell(1); + captionCell.setCellValue(userRight.toString()); + // User right description - Cell descCell = row.createCell(1); - descCell.setCellValue(userRight.toString()); + Cell descCell = row.createCell(2); + descCell.setCellValue(userRight.getDescription()); // Add styled cells for all user roles for (UserRole userRole : UserRole.values()) { - Cell roleRightCell = row.createCell(userRole.ordinal() + 2); + Cell roleRightCell = row.createCell(userRole.ordinal() + 3); if (userRoleRights.containsKey(userRole) && userRoleRights.get(userRole).contains(userRight) || userRole.hasDefaultRight(userRight)) { roleRightCell.setCellStyle(authorizedStyle); roleRightCell.setCellValue(I18nProperties.getString(Strings.yes)); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/util/IterableHelper.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/util/IterableHelper.java index 3fc59c8950f..454a68bf81f 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/util/IterableHelper.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/util/IterableHelper.java @@ -32,9 +32,7 @@ private IterableHelper() { */ public static void executeBatched(List entries, int batchSize, Consumer> batchFunction) { - if (CollectionUtils.isNotEmpty(entries) && entries.size() <= batchSize) { - batchFunction.accept(entries); - } else { + if (CollectionUtils.isNotEmpty(entries)) { for (List batch : ListUtils.partition(new ArrayList<>(entries), batchSize)) { if (CollectionUtils.isNotEmpty(batch)) { batchFunction.accept(batch); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/util/QueryHelper.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/util/QueryHelper.java index aa24a79514a..5c1185f5e59 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/util/QueryHelper.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/util/QueryHelper.java @@ -7,7 +7,9 @@ import javax.persistence.EntityManager; import javax.persistence.NonUniqueResultException; import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.apache.commons.lang3.StringUtils; @@ -236,4 +238,79 @@ public static T getSingleResult(TypedQuery typedQuery) { } } + /** + * Loads at most one entity based on the restriction on a WHERE clause. + * + * @param + * Entity type. + * @param em + * The entity manager to use. + * @param clazz + * Class used as the query root. + * @param propertyName + * Attribute name in dot notation starting from clazz. + * @param propertyValue + * This value will be inserted into the WHERE clause. + * @throws NonUniqueResultException + * In case there's more than one entity in the result. + * @return The requested entity or {@code null}. + * @see #simpleQuery(EntityManager, Class, String, Object) + * @see #single(TypedQuery) + */ + public static E simpleSingleQuery(EntityManager em, Class clazz, String propertyName, Object propertyValue) { + return single(simpleQuery(em, clazz, propertyName, propertyValue)); + } + + /** + * Loads at most one entity based on the specified query. + * + * @param + * Return type of the {@code query}. + * @param query + * @return null if there is no entity adhering to the specified query. + * @throws NonUniqueResultException + * In case there's more than one entity in the result. + */ + public static V single(TypedQuery query) { + // Query loads at most two elements to decide whether the query returns a non-unique result. + final int maxResults = 2; + List list = query.setMaxResults(maxResults).getResultList(); + switch (list.size()) { + case 0: + return null; + case 1: + return list.get(0); + default: + throw new NonUniqueResultException("More than one Entity found. Query was: " + query + "."); + } + } + + /** + * Creates a query with a WHERE clause. + * + * @param + * Entity type. + * @param em + * The entity manager to use. + * @param clazz + * Class used as the query root. + * @param propertyName + * Attribute name in dot notation starting from clazz. + * @param propertyValue + * This value will be inserted into the WHERE clause. + * @return Query with WHERE clause based on the given parameter. + */ + public static TypedQuery simpleQuery(EntityManager em, Class clazz, String propertyName, Object propertyValue) { + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(clazz); + Root root = cq.from(clazz); + if (propertyValue == null) { + cq.where(cb.isNull(root.get(propertyName))); + } else { + cq.where(cb.equal(root.get(propertyName), propertyValue)); + } + TypedQuery query = em.createQuery(cq); + return query; + } + } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/vaccination/VaccinationFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/vaccination/VaccinationFacadeEjb.java index f9f1275c89e..433ffeb6bc6 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/vaccination/VaccinationFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/vaccination/VaccinationFacadeEjb.java @@ -23,6 +23,7 @@ import java.util.Optional; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -78,6 +79,7 @@ import de.symeda.sormas.backend.util.Pseudonymizer; @Stateless(name = "VaccinationFacade") +@RolesAllowed(UserRight._IMMUNIZATION_VIEW) public class VaccinationFacadeEjb implements VaccinationFacade { @EJB @@ -99,6 +101,9 @@ public class VaccinationFacadeEjb implements VaccinationFacade { @EJB private HealthConditionsMapper healthConditionsMapper; + @RolesAllowed({ + UserRight._IMMUNIZATION_CREATE, + UserRight._IMMUNIZATION_EDIT }) public VaccinationDto save(@Valid VaccinationDto dto) { Vaccination existingVaccination = dto.getUuid() != null ? vaccinationService.getByUuid(dto.getUuid()) : null; @@ -123,6 +128,8 @@ public VaccinationDto save(@Valid VaccinationDto dto) { } @Override + @RolesAllowed({ + UserRight._IMMUNIZATION_CREATE }) public VaccinationDto createWithImmunization( VaccinationDto dto, RegionReferenceDto region, @@ -170,6 +177,7 @@ public VaccinationDto createWithImmunization( return convertToDto(vaccination, Pseudonymizer.getDefault(userService::hasRight)); } + @RolesAllowed(UserRight._IMMUNIZATION_EDIT) private boolean addImmunizationToVaccination(Vaccination vaccination, String personUuid, Disease disease) { List immunizations = immunizationService.getByPersonAndDisease(personUuid, disease, true); @@ -368,6 +376,7 @@ public void validate(VaccinationDto vaccinationDto, boolean allowEmptyImmunizati } } + @RolesAllowed(UserRight._IMMUNIZATION_EDIT) public void updateVaccinationStatuses(Date newVaccinationDate, Date oldVaccinationDate, Long personId, Disease disease) { if (oldVaccinationDate == null || newVaccinationDate != oldVaccinationDate) { @@ -377,6 +386,7 @@ public void updateVaccinationStatuses(Date newVaccinationDate, Date oldVaccinati } } + @RolesAllowed(UserRight._CASE_EDIT) public void updateVaccinationStatuses(Case caze) { List casePersonImmunizations = immunizationService.getByPersonAndDisease(caze.getPerson().getUuid(), caze.getDisease(), true); @@ -391,6 +401,7 @@ public void updateVaccinationStatuses(Case caze) { } } + @RolesAllowed(UserRight._CONTACT_EDIT) public void updateVaccinationStatuses(Contact contact) { List contactPersonImmunizations = immunizationService.getByPersonAndDisease(contact.getPerson().getUuid(), contact.getDisease(), true); @@ -406,6 +417,7 @@ public void updateVaccinationStatuses(Contact contact) { } } + @RolesAllowed(UserRight._EVENTPARTICIPANT_EDIT) public void updateVaccinationStatuses(EventParticipant eventParticipant) { if (eventParticipant.getEvent().getDisease() == null) { return; @@ -426,12 +438,8 @@ public void updateVaccinationStatuses(EventParticipant eventParticipant) { } @Override + @RolesAllowed(UserRight._IMMUNIZATION_DELETE) public void deleteWithImmunization(String uuid) { - - if (!userService.hasRight(UserRight.IMMUNIZATION_DELETE)) { - throw new UnsupportedOperationException("User " + userService.getCurrentUser().getUuid() + " is not allowed to delete vaccinations"); - } - Vaccination vaccination = vaccinationService.getByUuid(uuid); Immunization immunization = vaccination.getImmunization(); immunization.getVaccinations().remove(vaccination); @@ -447,6 +455,7 @@ public VaccinationDto getByUuid(String uuid) { return toDto(vaccinationService.getByUuid(uuid)); } + @RolesAllowed(UserRight._IMMUNIZATION_EDIT) public VaccinationDto postUpdate(String uuid, JsonNode vaccinationDtoJson) { VaccinationDto existingVaccinationDto = toDto(vaccinationService.getByUuid(uuid)); PatchHelper.postUpdate(vaccinationDtoJson, existingVaccinationDto); @@ -516,6 +525,7 @@ public Vaccination fromDto(@NotNull VaccinationDto source, boolean checkChangeDa return fillOrBuildEntity(source, vaccinationService.getByUuid(source.getUuid()), checkChangeDate); } + @RolesAllowed(UserRight._IMMUNIZATION_EDIT) public void copyExistingVaccinationsToNewImmunization(ImmunizationDto immunizationDto, Immunization newImmunization) { List vaccinationEntities = new ArrayList<>(); for (VaccinationDto vaccinationDto : immunizationDto.getVaccinations()) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitFacadeEjb.java index 07a2ffc0800..5301df42137 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitFacadeEjb.java @@ -30,6 +30,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -82,8 +83,8 @@ import de.symeda.sormas.backend.caze.CaseFacadeEjb.CaseFacadeEjbLocal; import de.symeda.sormas.backend.caze.CaseQueryContext; import de.symeda.sormas.backend.caze.CaseService; -import de.symeda.sormas.backend.common.NotificationService; import de.symeda.sormas.backend.common.CriteriaBuilderHelper; +import de.symeda.sormas.backend.common.NotificationService; import de.symeda.sormas.backend.common.messaging.MessageContents; import de.symeda.sormas.backend.common.messaging.MessageSubject; import de.symeda.sormas.backend.common.messaging.NotificationDeliveryFailedException; @@ -106,6 +107,9 @@ import de.symeda.sormas.backend.util.QueryHelper; @Stateless(name = "VisitFacade") +@RolesAllowed({ + UserRight._CONTACT_VIEW, + UserRight._CASE_VIEW }) public class VisitFacadeEjb implements VisitFacade { private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -208,6 +212,9 @@ public VisitDto getVisitByUuid(String uuid) { } @Override + @RolesAllowed({ + UserRight._VISIT_CREATE, + UserRight._VISIT_EDIT }) public VisitDto saveVisit(@Valid VisitDto dto) { final String visitUuid = dto.getUuid(); final Visit existingVisit = visitUuid != null ? visitService.getByUuid(visitUuid) : null; @@ -232,6 +239,7 @@ public VisitDto saveVisit(@Valid VisitDto dto) { } @Override + @RolesAllowed(UserRight._EXTERNAL_VISITS) public ExternalVisitDto saveExternalVisit(@Valid final ExternalVisitDto dto) { final String personUuid = dto.getPersonUuid(); @@ -285,6 +293,7 @@ public void validate(VisitDto visit) { } @Override + @RolesAllowed(UserRight._VISIT_DELETE) public void deleteVisit(String visitUuid) { if (!userService.hasRight(UserRight.VISIT_DELETE)) { @@ -304,11 +313,12 @@ public List getIndexList(VisitCriteria visitCriteria, Integer fir CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(VisitIndexDto.class); + Root visit = cq.from(Visit.class); - Join symptoms = visit.join(Visit.SYMPTOMS, JoinType.LEFT); - Join caseJoin = visit.join(Visit.CAZE, JoinType.LEFT); - Join contactJoin = visit.join(Visit.CONTACTS, JoinType.LEFT); - Join visitUser = visit.join(Visit.VISIT_USER, JoinType.LEFT); + + VisitJoins visitJoins = new VisitJoins(visit, JoinType.LEFT); + Join symptoms = visitJoins.getSymptoms(); + Join visitUser = visitJoins.getUser(); cq.multiselect( visit.get(Visit.ID), @@ -324,7 +334,7 @@ public List getIndexList(VisitCriteria visitCriteria, Integer fir visitUser.get(User.UUID), visitUser.get(User.FIRST_NAME), visitUser.get(User.LAST_NAME), - jurisdictionSelector(cq, cb, caseJoin, contactJoin)); + jurisdictionSelector(cq, cb, visitJoins)); cq.distinct(true); cq.where(visitService.buildCriteriaFilter(visitCriteria, cb, visit)); @@ -399,11 +409,11 @@ public List getVisitsExportList( final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery cq = cb.createQuery(VisitExportDto.class); final Root visitRoot = cq.from(Visit.class); - final Join symptomsJoin = visitRoot.join(Visit.SYMPTOMS, JoinType.LEFT); - final Join personJoin = visitRoot.join(Visit.PERSON, JoinType.LEFT); - final Join userJoin = visitRoot.join(Visit.VISIT_USER, JoinType.LEFT); - final Join caseJoin = visitRoot.join(Visit.CAZE, JoinType.LEFT); - final Join contactJoin = visitRoot.join(Visit.CONTACTS, JoinType.LEFT); + + final VisitJoins visitJoins = new VisitJoins(visitRoot, JoinType.LEFT); + final Join symptomsJoin = visitJoins.getSymptoms(); + final Join userJoin = visitJoins.getUser(); + final Join personJoin = visitJoins.getPerson(); cq.multiselect( visitRoot.get(Visit.ID), @@ -421,7 +431,7 @@ public List getVisitsExportList( visitRoot.get(Visit.REPORT_LON), visitRoot.get(Visit.ORIGIN), personJoin.get(Person.UUID), - jurisdictionSelector(cq, cb, caseJoin, contactJoin)); + jurisdictionSelector(cq, cb, visitJoins)); Predicate filter = visitService.buildCriteriaFilter(visitCriteria, cb, visitRoot); filter = CriteriaBuilderHelper.andInValues(selectedRows, filter, cb, visitRoot.get(Visit.UUID)); @@ -471,13 +481,12 @@ public List getVisitsExportList( private Expression jurisdictionSelector( CriteriaQuery cq, CriteriaBuilder cb, - Join caseJoin, - Join contactJoin) { + VisitJoins visitJoins) { return JurisdictionHelper.booleanSelector( cb, cb.or( - caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, caseJoin)), - contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, cq, contactJoin)))); + caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, visitJoins.getCaseJoins())), + contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, cq, visitJoins.getContactJoins())))); } public Visit fromDto(@NotNull VisitDto source, boolean checkChangeDate) { @@ -619,10 +628,7 @@ private void onVisitChanged(VisitDto existingVisit, Visit newVisit) { if (newVisit.getCaze() != null) { // Update case symptoms - CaseDataDto caze = caseFacade.toDto(newVisit.getCaze()); - SymptomsDto caseSymptoms = caze.getSymptoms(); - SymptomsHelper.updateSymptoms(toDto(newVisit).getSymptoms(), caseSymptoms); - caseFacade.save(caze, true); + caseFacade.updateSymptomsByVisit(newVisit); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitJoins.java index 1004c21f788..fc3e29888b8 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitJoins.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitJoins.java @@ -20,46 +20,33 @@ import javax.persistence.criteria.JoinType; import de.symeda.sormas.backend.caze.Case; +import de.symeda.sormas.backend.caze.CaseJoins; +import de.symeda.sormas.backend.common.QueryJoins; import de.symeda.sormas.backend.contact.Contact; -import de.symeda.sormas.backend.infrastructure.facility.Facility; -import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; +import de.symeda.sormas.backend.contact.ContactJoins; import de.symeda.sormas.backend.infrastructure.community.Community; import de.symeda.sormas.backend.infrastructure.district.District; +import de.symeda.sormas.backend.infrastructure.facility.Facility; +import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; import de.symeda.sormas.backend.infrastructure.region.Region; +import de.symeda.sormas.backend.person.Person; +import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; -public class VisitJoins extends AbstractDomainObjectJoins { +public class VisitJoins extends QueryJoins { private Join contacts; private Join caze; - private Join contactReportingUser; - private Join contactRegion; - private Join contactDistrict; - private Join contactCommunity; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseHealthFacility; - private Join casePointOfEntry; - private Join contactCase; - private Join contactCaseReportingUser; - private Join contactCaseResponsibleRegion; - private Join contactCaseResponsibleDistrict; - private Join contactCaseResponsibleCommunity; - private Join contactCaseRegion; - private Join contactCaseDistrict; - private Join contactCaseCommunity; - private Join contactCaseHealthFacility; - private Join contactCasePointOfEntry; + private Join symptoms; + private Join user; + private Join person; + + private CaseJoins caseJoins; + private ContactJoins contactJoins; private JoinType contactJoinType; - public VisitJoins(From root, JoinType contactJoinType) { + public VisitJoins(From root, JoinType contactJoinType) { super(root); this.contactJoinType = contactJoinType; @@ -73,210 +60,147 @@ private void setContacts(Join contacts) { this.contacts = contacts; } - public Join getCase() { - return getOrCreate(caze, Visit.CAZE, JoinType.LEFT, this::setCase); + public Join getSymptoms() { + return getOrCreate(symptoms, Visit.SYMPTOMS, JoinType.LEFT, this::setSymptoms); } - private void setCase(Join caze) { - this.caze = caze; + private void setSymptoms(Join symptoms) { + this.symptoms = symptoms; } - public Join getContactReportingUser() { - return getOrCreate(contactReportingUser, Contact.REPORTING_USER, JoinType.LEFT, getContacts(), this::setContactReportingUser); + public Join getUser() { + return getOrCreate(user, Visit.VISIT_USER, JoinType.LEFT, this::setUser); } - private void setContactReportingUser(Join contactReportingUser) { - this.contactReportingUser = contactReportingUser; + private void setUser(Join user) { + this.user = user; } - public Join getContactRegion() { - return getOrCreate(contactRegion, Contact.REGION, JoinType.LEFT, getContacts(), this::setContactRegion); + public Join getPerson() { + return getOrCreate(person, Visit.PERSON, JoinType.LEFT, this::setPerson); } - private void setContactRegion(Join contactRegion) { - this.contactRegion = contactRegion; + private void setPerson(Join person) { + this.person = person; } - public Join getContactDistrict() { - return getOrCreate(contactDistrict, Contact.DISTRICT, JoinType.LEFT, getContacts(), this::setContactDistrict); - } - - private void setContactDistrict(Join contactDistrict) { - this.contactDistrict = contactDistrict; + public Join getCase() { + return getOrCreate(caze, Visit.CAZE, JoinType.LEFT, this::setCase); } - public Join getContactCommunity() { - return getOrCreate(contactCommunity, Contact.COMMUNITY, JoinType.LEFT, getContacts(), this::setContactCommunity); + private void setCase(Join caze) { + this.caze = caze; } - private void setContactCommunity(Join contactCommunity) { - this.contactCommunity = contactCommunity; + public Join getContactReportingUser() { + return getContactJoins().getReportingUser(); } - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getCase(), this::setCaseReportingUser); + public Join getContactRegion() { + return getContactJoins().getRegion(); } - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; + public Join getContactDistrict() { + return getContactJoins().getDistrict(); } - public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getCase(), this::setCaseResponsibleRegion); + public Join getContactCommunity() { + return getContactJoins().getCommunity(); } - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; + public CaseJoins getCaseJoins() { + return getOrCreate(caseJoins, () -> new CaseJoins(getCase()), this::setCaseJoins); } - public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getCase(), this::setCaseResponsibleDistrict); + private void setCaseJoins(CaseJoins caseJoins) { + this.caseJoins = caseJoins; } - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; + public ContactJoins getContactJoins() { + return getOrCreate(contactJoins, () -> new ContactJoins(getContacts()), this::setContactJoins); } - public Join getCaseResponsibleCommunity() { - return getOrCreate(caseResponsibleCommunity, Case.RESPONSIBLE_COMMUNITY, JoinType.LEFT, getCase(), this::setCaseResponsibleCommunity); + private void setContactJoins(ContactJoins contactJoins) { + this.contactJoins = contactJoins; } - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; + public Join getCasePerson() { + return getCaseJoins().getPerson(); } - public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getCase(), this::setCaseRegion); + public Join getCaseReportingUser() { + return getCaseJoins().getReportingUser(); } - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; + public Join getCaseResponsibleRegion() { + return getCaseJoins().getResponsibleRegion(); } - public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getCase(), this::setCaseDistrict); + public Join getCaseResponsibleDistrict() { + return getCaseJoins().getResponsibleDistrict(); } - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; + public Join getCaseResponsibleCommunity() { + return getCaseJoins().getResponsibleCommunity(); } - public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getCase(), this::setCaseCommunity); + public Join getCaseRegion() { + return getCaseJoins().getRegion(); } - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; + public Join getCaseDistrict() { + return getCaseJoins().getDistrict(); } - public Join getCaseHealthFacility() { - return getOrCreate(caseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getCase(), this::setCaseHealthFacility); + public Join getCaseCommunity() { + return getCaseJoins().getCommunity(); } - private void setCaseHealthFacility(Join caseHealthFacility) { - this.caseHealthFacility = caseHealthFacility; + public Join getCaseFacility() { + return getCaseJoins().getFacility(); } public Join getCasePointOfEntry() { - return getOrCreate(casePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getCase(), this::setCasePointOfEntry); - } - - private void setCasePointOfEntry(Join casePointOfEntry) { - this.casePointOfEntry = casePointOfEntry; + return getCaseJoins().getPointOfEntry(); } public Join getContactCase() { - return getOrCreate(contactCase, Contact.CAZE, JoinType.LEFT, getContacts(), this::setContactCase); - } - - private void setContactCase(Join contactCase) { - this.contactCase = contactCase; + return getContactJoins().getCaze(); } public Join getContactCaseReportingUser() { - return getOrCreate(contactCaseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getContactCase(), this::setContactCaseReportingUser); - } - - private void setContactCaseReportingUser(Join contactCaseReportingUser) { - this.contactCaseReportingUser = contactCaseReportingUser; + return getContactJoins().getCaseJoins().getReportingUser(); } public Join getContactCaseResponsibleRegion() { - return getOrCreate( - contactCaseResponsibleRegion, - Case.RESPONSIBLE_REGION, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleRegion); - } - - private void setContactCaseResponsibleRegion(Join contactCaseResponsibleRegion) { - this.contactCaseResponsibleRegion = contactCaseResponsibleRegion; + return getContactJoins().getCaseJoins().getResponsibleRegion(); } public Join getContactCaseResponsibleDistrict() { - return getOrCreate( - contactCaseResponsibleDistrict, - Case.RESPONSIBLE_DISTRICT, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleDistrict); - } - - private void setContactCaseResponsibleDistrict(Join contactCaseResponsibleDistrict) { - this.contactCaseResponsibleDistrict = contactCaseResponsibleDistrict; + return getContactJoins().getCaseJoins().getResponsibleDistrict(); } public Join getContactCaseResponsibleCommunity() { - return getOrCreate( - contactCaseResponsibleCommunity, - Case.RESPONSIBLE_COMMUNITY, - JoinType.LEFT, - getContactCase(), - this::setContactCaseResponsibleCommunity); - } - - private void setContactCaseResponsibleCommunity(Join contactCaseResponsibleCommunity) { - this.contactCaseResponsibleCommunity = contactCaseResponsibleCommunity; + return getContactJoins().getCaseJoins().getResponsibleCommunity(); } public Join getContactCaseRegion() { - return getOrCreate(contactCaseRegion, Case.REGION, JoinType.LEFT, getContactCase(), this::setContactCaseRegion); - } - - private void setContactCaseRegion(Join contactCaseRegion) { - this.contactCaseRegion = contactCaseRegion; + return getContactJoins().getCaseJoins().getRegion(); } public Join getContactCaseDistrict() { - return getOrCreate(contactCaseDistrict, Case.DISTRICT, JoinType.LEFT, getContactCase(), this::setContactCaseDistrict); - } - - private void setContactCaseDistrict(Join contactCaseDistrict) { - this.contactCaseDistrict = contactCaseDistrict; + return getContactJoins().getCaseJoins().getDistrict(); } public Join getContactCaseCommunity() { - return getOrCreate(contactCaseCommunity, Case.COMMUNITY, JoinType.LEFT, getContactCase(), this::setContactCaseCommunity); - } - - private void setContactCaseCommunity(Join contactCaseCommunity) { - this.contactCaseCommunity = contactCaseCommunity; + return getContactJoins().getCaseJoins().getCommunity(); } public Join getContactCaseHealthFacility() { - return getOrCreate(contactCaseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getContactCase(), this::setContactCaseHealthFacility); - } - - private void setContactCaseHealthFacility(Join contactCaseHealthFacility) { - this.contactCaseHealthFacility = contactCaseHealthFacility; + return getContactJoins().getCaseJoins().getFacility(); } public Join getContactCasePointOfEntry() { - return getOrCreate(contactCasePointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getContactCase(), this::setContactCasePointOfEntry); - } - - private void setContactCasePointOfEntry(Join contactCasePointOfEntry) { - this.contactCasePointOfEntry = contactCasePointOfEntry; + return getContactJoins().getCaseJoins().getPointOfEntry(); } } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitService.java index eb6841bf02d..c79bb22043b 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/visit/VisitService.java @@ -38,6 +38,7 @@ import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; +import javax.persistence.criteria.Subquery; import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.caze.CaseLogic; @@ -51,6 +52,7 @@ import de.symeda.sormas.backend.common.AbstractDomainObject; import de.symeda.sormas.backend.common.BaseAdoService; import de.symeda.sormas.backend.common.ChangeDateFilterBuilder; +import de.symeda.sormas.backend.common.CoreAdo; import de.symeda.sormas.backend.common.CriteriaBuilderHelper; import de.symeda.sormas.backend.contact.Contact; import de.symeda.sormas.backend.contact.ContactQueryContext; @@ -58,6 +60,7 @@ import de.symeda.sormas.backend.person.Person; import de.symeda.sormas.backend.symptoms.Symptoms; import de.symeda.sormas.backend.user.User; +import de.symeda.sormas.backend.util.IterableHelper; import de.symeda.sormas.backend.util.JurisdictionHelper; @Stateless @@ -78,20 +81,21 @@ public boolean inJurisdiction(Visit visit) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Boolean.class); Root root = cq.from(Visit.class); + VisitJoins visitJoins = new VisitJoins(root, JoinType.LEFT); Expression objectExpression = JurisdictionHelper.booleanSelector( cb, cb.and( cb.equal(root.get(AbstractDomainObject.ID), visit.getId()), - inJurisdiction(cq, cb, root.join(Visit.CAZE, JoinType.LEFT), root.join(Visit.CONTACTS, JoinType.LEFT)))); + inJurisdiction(cq, cb, visitJoins))); cq.multiselect(objectExpression); cq.where(cb.equal(root.get(Visit.UUID), visit.getUuid())); return em.createQuery(cq).getResultList().stream().findFirst().orElse(null); } - private Predicate inJurisdiction(CriteriaQuery cq, CriteriaBuilder cb, Join caseJoin, Join contactJoin) { + private Predicate inJurisdiction(CriteriaQuery cq, CriteriaBuilder cb, VisitJoins visitJoins) { return cb.or( - caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, caseJoin)), - contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, cq, contactJoin))); + caseService.inJurisdictionOrOwned(new CaseQueryContext(cb, cq, visitJoins.getCaseJoins())), + contactService.inJurisdictionOrOwned(new ContactQueryContext(cb, cq, visitJoins.getContactJoins()))); } public List getAllActiveUuids(User user) { diff --git a/sormas-backend/src/main/java/de/symeda/sormas/utils/EventParticipantJoins.java b/sormas-backend/src/main/java/de/symeda/sormas/utils/EventParticipantJoins.java deleted file mode 100644 index 99ca1c64945..00000000000 --- a/sormas-backend/src/main/java/de/symeda/sormas/utils/EventParticipantJoins.java +++ /dev/null @@ -1,264 +0,0 @@ -package de.symeda.sormas.utils; - -import javax.persistence.criteria.From; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.JoinType; - -import de.symeda.sormas.backend.caze.Case; -import de.symeda.sormas.backend.event.Event; -import de.symeda.sormas.backend.event.EventParticipant; -import de.symeda.sormas.backend.infrastructure.community.Community; -import de.symeda.sormas.backend.infrastructure.district.District; -import de.symeda.sormas.backend.infrastructure.facility.Facility; -import de.symeda.sormas.backend.infrastructure.pointofentry.PointOfEntry; -import de.symeda.sormas.backend.infrastructure.region.Region; -import de.symeda.sormas.backend.location.Location; -import de.symeda.sormas.backend.person.Person; -import de.symeda.sormas.backend.user.User; -import de.symeda.sormas.backend.util.AbstractDomainObjectJoins; - -public class EventParticipantJoins extends AbstractDomainObjectJoins { - - private Join eventParticipantReportingUser; - - private Join person; - private Join eventParticipantResponsibleRegion; - private Join eventParticipantResponsibleDistrict; - - private Join address; - private Join addressRegion; - private Join addressDistrict; - private Join addressCommunity; - private Join addressFacility; - - private Join resultingCase; - private Join casePerson; - private Join caseReportingUser; - private Join caseResponsibleRegion; - private Join caseResponsibleDistrict; - private Join caseResponsibleCommunity; - private Join caseRegion; - private Join caseDistrict; - private Join caseCommunity; - private Join caseHealthFacility; - private Join caseAsPointOfEntry; - - private Join event; - private Join eventAddress; - private Join eventAddressRegion; - private Join eventAddressDistrict; - private Join eventAddressCommunity; - - public EventParticipantJoins(From eventParticipant) { - super(eventParticipant); - } - - public Join getEventParticipantReportingUser() { - return getOrCreate(eventParticipantReportingUser, EventParticipant.REPORTING_USER, JoinType.LEFT, this::setEventParticipantReportingUser); - } - - private void setEventParticipantReportingUser(Join eventParticipantReportingUser) { - this.eventParticipantReportingUser = eventParticipantReportingUser; - } - - public Join getPerson() { - return getOrCreate(person, EventParticipant.PERSON, JoinType.LEFT, this::setPerson); - } - - private void setPerson(Join person) { - this.person = person; - } - - public Join getEventParticipantResponsibleRegion() { - return getOrCreate(eventParticipantResponsibleRegion, EventParticipant.REGION, JoinType.LEFT, this::setEventParticipantResponsibleRegion); - } - - private void setEventParticipantResponsibleRegion(Join eventParticipantResponsibleRegion) { - this.eventParticipantResponsibleRegion = eventParticipantResponsibleRegion; - } - - public Join getEventParticipantResponsibleDistrict() { - return getOrCreate( - eventParticipantResponsibleDistrict, - EventParticipant.DISTRICT, - JoinType.LEFT, - this::setEventParticipantResponsibleDistrict); - } - - private void setEventParticipantResponsibleDistrict(Join eventParticipantResponsibleDistrict) { - this.eventParticipantResponsibleDistrict = eventParticipantResponsibleDistrict; - } - - public Join getAddress() { - return getOrCreate(address, Person.ADDRESS, JoinType.LEFT, getPerson(), this::setAddress); - } - - private void setAddress(Join address) { - this.address = address; - } - - public Join getAddressRegion() { - return getOrCreate(addressRegion, Location.REGION, JoinType.LEFT, getAddress(), this::setAddressRegion); - } - - private void setAddressRegion(Join addressRegion) { - this.addressRegion = addressRegion; - } - - public Join getAddressDistrict() { - return getOrCreate(addressDistrict, Location.DISTRICT, JoinType.LEFT, getAddress(), this::setAddressDistrict); - } - - private void setAddressDistrict(Join addressDistrict) { - this.addressDistrict = addressDistrict; - } - - public Join getAddressCommunity() { - return getOrCreate(addressCommunity, Location.COMMUNITY, JoinType.LEFT, getAddress(), this::setAddressCommunity); - } - - private void setAddressCommunity(Join addressCommunity) { - this.addressCommunity = addressCommunity; - } - - public Join getAddressFacility() { - return getOrCreate(addressFacility, Location.FACILITY, JoinType.LEFT, getAddress(), this::setAddressFacility); - } - - private void setAddressFacility(Join addressFacility) { - this.addressFacility = addressFacility; - } - - public Join getResultingCase() { - return getOrCreate(resultingCase, EventParticipant.RESULTING_CASE, JoinType.LEFT, this::setResultingCase); - } - - private void setResultingCase(Join resultingCase) { - this.resultingCase = resultingCase; - } - - public Join getCasePerson() { - return getOrCreate(casePerson, Case.PERSON, JoinType.LEFT, getResultingCase(), this::setCasePerson); - } - - private void setCasePerson(Join casePerson) { - this.casePerson = casePerson; - } - - public Join getCaseReportingUser() { - return getOrCreate(caseReportingUser, Case.REPORTING_USER, JoinType.LEFT, getResultingCase(), this::setCaseReportingUser); - } - - private void setCaseReportingUser(Join caseReportingUser) { - this.caseReportingUser = caseReportingUser; - } - - public Join getCaseResponsibleRegion() { - return getOrCreate(caseResponsibleRegion, Case.RESPONSIBLE_REGION, JoinType.LEFT, getResultingCase(), this::setCaseResponsibleRegion); - } - - private void setCaseResponsibleRegion(Join caseResponsibleRegion) { - this.caseResponsibleRegion = caseResponsibleRegion; - } - - public Join getCaseResponsibleDistrict() { - return getOrCreate(caseResponsibleDistrict, Case.RESPONSIBLE_DISTRICT, JoinType.LEFT, getResultingCase(), this::setCaseResponsibleDistrict); - } - - private void setCaseResponsibleDistrict(Join caseResponsibleDistrict) { - this.caseResponsibleDistrict = caseResponsibleDistrict; - } - - public Join getCaseResponsibleCommunity() { - return getOrCreate( - caseResponsibleCommunity, - Case.RESPONSIBLE_COMMUNITY, - JoinType.LEFT, - getResultingCase(), - this::setCaseResponsibleCommunity); - } - - private void setCaseResponsibleCommunity(Join caseResponsibleCommunity) { - this.caseResponsibleCommunity = caseResponsibleCommunity; - } - - public Join getCaseRegion() { - return getOrCreate(caseRegion, Case.REGION, JoinType.LEFT, getResultingCase(), this::setCaseRegion); - } - - private void setCaseRegion(Join caseRegion) { - this.caseRegion = caseRegion; - } - - public Join getCaseDistrict() { - return getOrCreate(caseDistrict, Case.DISTRICT, JoinType.LEFT, getResultingCase(), this::setCaseDistrict); - } - - private void setCaseDistrict(Join caseDistrict) { - this.caseDistrict = caseDistrict; - } - - public Join getCaseCommunity() { - return getOrCreate(caseCommunity, Case.COMMUNITY, JoinType.LEFT, getResultingCase(), this::setCaseCommunity); - } - - private void setCaseCommunity(Join caseCommunity) { - this.caseCommunity = caseCommunity; - } - - public Join getCaseHealthFacility() { - return getOrCreate(caseHealthFacility, Case.HEALTH_FACILITY, JoinType.LEFT, getResultingCase(), this::setCaseHealthFacility); - } - - private void setCaseHealthFacility(Join caseHealthFacility) { - this.caseHealthFacility = caseHealthFacility; - } - - public Join getCaseAsPointOfEntry() { - return getOrCreate(caseAsPointOfEntry, Case.POINT_OF_ENTRY, JoinType.LEFT, getResultingCase(), this::setCaseAsPointOfEntry); - } - - private void setCaseAsPointOfEntry(Join caseAsPointOfEntry) { - this.caseAsPointOfEntry = caseAsPointOfEntry; - } - - public Join getEvent() { - return getOrCreate(event, EventParticipant.EVENT, JoinType.LEFT, this::setEvent); - } - - private void setEvent(Join event) { - this.event = event; - } - - public Join getEventAddress() { - return getOrCreate(eventAddress, Event.EVENT_LOCATION, JoinType.LEFT, getEvent(), this::setEventAddress); - } - - private void setEventAddress(Join eventAddress) { - this.eventAddress = eventAddress; - } - - public Join getEventAddressRegion() { - return getOrCreate(eventAddressRegion, Location.REGION, JoinType.LEFT, getEventAddress(), this::setEventAddressRegion); - } - - private void setEventAddressRegion(Join eventAddressRegion) { - this.eventAddressRegion = eventAddressRegion; - } - - public Join getEventAddressDistrict() { - return getOrCreate(eventAddressDistrict, Location.DISTRICT, JoinType.LEFT, getEventAddress(), this::setEventAddressDistrict); - } - - private void setEventAddressDistrict(Join eventAddressDistrict) { - this.eventAddressDistrict = eventAddressDistrict; - } - - public Join getEventAddressCommunity() { - return getOrCreate(eventAddressCommunity, Location.COMMUNITY, JoinType.LEFT, getEventAddress(), this::setEventAddressCommunity); - } - - private void setEventAddressCommunity(Join eventAddressCommunity) { - this.eventAddressCommunity = eventAddressCommunity; - } -} diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index fd9212abaf7..2ae8582f27e 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -11219,4 +11219,145 @@ DROP TRIGGER IF EXISTS delete_history_trigger ON systemevent; INSERT INTO schema_version (version_number, comment) VALUES (452, 'Persisting systemevent on latest develop fails with SQL error #8585'); +-- 2022-04-08 Initial UI support for physician's reports #8276 + +ALTER TABLE labmessage ADD COLUMN type varchar(255); +ALTER TABLE labmessage_history ADD COLUMN type varchar(255); + +UPDATE labmessage SET type = CASE + WHEN labmessagedetails LIKE '%profile value="https://demis.rki.de/fhir/StructureDefinition/NotificationDiseaseCVDD"%' THEN 'PHYSICIANS_REPORT' + ELSE 'LAB_MESSAGE' + END; + +INSERT INTO schema_version (version_number, comment) VALUES (453, 'Initial UI support for physicians reports #8276'); + +-- 2022-04-07 Refactor unique constraint on deletionconfiguration table #8295 + +ALTER TABLE deletionconfiguration DROP CONSTRAINT IF EXISTS deletionconfiguration_entity_key; +ALTER TABLE deletionconfiguration ADD CONSTRAINT unq_deletionconfiguration_entity_reference UNIQUE (entitytype, deletionreference); + +INSERT INTO schema_version (version_number, comment) VALUES (454, 'Refactor unique constraint on deletionconfiguration table #8295'); + +-- 2022-04-08 Drop deleted column from lab messages and remove deleted lab messages #8295 + +DELETE FROM testreport USING labmessage WHERE testreport.labmessage_id = labmessage.id AND labmessage.deleted IS TRUE; +DELETE FROM labmessage WHERE deleted IS TRUE; +ALTER TABLE labmessage DROP COLUMN deleted; +ALTER TABLE labmessage_history DROP COLUMN deleted; + +INSERT INTO schema_version (version_number, comment) VALUES (455, 'Drop deleted column from lab messages and remove deleted lab messages #8295'); + +-- 2022-04-11 Remove DELETE_PERMANENT feature type #8295 + +DELETE FROM featureconfiguration WHERE featuretype = 'DELETE_PERMANENT'; + +INSERT INTO schema_version (version_number, comment) VALUES (456, 'Remove DELETE_PERMANENT feature type #8295'); + +-- 2022-04-11 Investigate and add indexes #8778 + +CREATE INDEX IF NOT EXISTS idx_cases_responsibleregion_id ON cases (responsibleregion_id); +CREATE INDEX IF NOT EXISTS idx_cases_responsibledistrict_id ON cases (responsibledistrict_id); + +CREATE INDEX IF NOT EXISTS idx_cases_archived ON cases (archived); +CREATE INDEX IF NOT EXISTS idx_contact_archived ON contact (archived); +CREATE INDEX IF NOT EXISTS idx_events_archived ON events (archived); +CREATE INDEX IF NOT EXISTS idx_eventpartivipant_archived ON eventparticipant (archived); +CREATE INDEX IF NOT EXISTS idx_immunization_archived ON immunization (archived); +CREATE INDEX IF NOT EXISTS idx_travelentry_archived ON travelentry (archived); +CREATE INDEX IF NOT EXISTS idx_campaigns_archived ON campaigns (archived); +CREATE INDEX IF NOT EXISTS idx_task_archived ON task (archived); + +INSERT INTO schema_version (version_number, comment) VALUES (457, 'Investigate and add indexes #8778'); + +-- 2022-05-03 Permanent Deletion | Immunization | healthconditions_id violates not-null constraint error #8983 +DROP TABLE IF EXISTS tmp_healthconditions; +DROP TABLE IF EXISTS added_healthconditions; +CREATE TEMP TABLE tmp_healthconditions +( + LIKE healthconditions +); +insert into tmp_healthconditions +select * +from healthconditions hc +where hc.id in (select distinct v.healthconditions_id + from vaccination v + join (select vc.healthconditions_id + from vaccination vc + group by healthconditions_id + HAVING count(*) > 1) b + on v.healthconditions_id = b.healthconditions_id); + +CREATE TEMP TABLE added_healthconditions(LIKE healthconditions); + +CREATE OR REPLACE FUNCTION clone_healthconditions(healthconditions_id bigint) + RETURNS bigint + LANGUAGE plpgsql + SECURITY DEFINER AS +$BODY$ +DECLARE + new_id bigint; +BEGIN + INSERT INTO added_healthconditions SELECT * FROM healthconditions WHERE id = healthconditions_id; + UPDATE added_healthconditions + SET id = nextval('entity_seq'), + uuid = generate_base32_uuid(), + sys_period = tstzrange(now(), null) + WHERE id = healthconditions_id + RETURNING id INTO new_id; + INSERT INTO healthconditions SELECT * FROM added_healthconditions WHERE id = new_id; + RETURN new_id; +END; +$BODY$; +ALTER FUNCTION clone_healthconditions(bigint) OWNER TO sormas_user; + +CREATE OR REPLACE FUNCTION create_additional_healthconditions() + RETURNS bigint + LANGUAGE plpgsql + SECURITY DEFINER AS + +$BODY$ +DECLARE + new_id bigint; +BEGIN + INSERT INTO healthconditions (id, uuid, changedate, creationdate) + VALUES (nextval('entity_seq'), generate_base32_uuid(), now(), now()) + RETURNING id INTO new_id; + RETURN new_id; +END; +$BODY$; + +ALTER FUNCTION create_additional_healthconditions() OWNER TO sormas_user; +DO +$$ + DECLARE + rec_health RECORD; + rec_vaccination RECORD; + count_vaccinations integer; + new_healthcondition_id bigint; + BEGIN + FOR rec_health IN SELECT * FROM tmp_healthconditions + LOOP + BEGIN + count_vaccinations = (SELECT count(*) FROM vaccination WHERE healthconditions_id = rec_health.id); + FOR rec_vaccination IN (SELECT * FROM vaccination WHERE healthconditions_id = rec_health.id) + LOOP + if count_vaccinations > 1 then + new_healthcondition_id = clone_healthconditions(rec_health.id); + update vaccination set healthconditions_id = new_healthcondition_id where id = rec_vaccination.id; + end if; + count_vaccinations = count_vaccinations - 1; + end loop; + end; + END LOOP; + END; +$$ LANGUAGE plpgsql; + +DROP TABLE IF EXISTS tmp_healthconditions; +DROP TABLE IF EXISTS added_healthconditions; + +DROP FUNCTION IF EXISTS clone_healthconditions(bigint); +DROP FUNCTION IF EXISTS create_additional_healthconditions(); + +INSERT INTO schema_version (version_number, comment) VALUES (458, 'Permanent Deletion | Immunization | healthconditions_id violates not-null constraint error #8983'); + -- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. *** diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/AbstractBeanTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/AbstractBeanTest.java index 9cc8c889adf..23d0a5ec4b4 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/AbstractBeanTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/AbstractBeanTest.java @@ -16,6 +16,7 @@ import static org.mockito.Mockito.when; +import java.lang.annotation.Annotation; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -37,8 +38,10 @@ import de.symeda.sormas.api.caze.surveillancereport.SurveillanceReportFacade; import de.symeda.sormas.api.clinicalcourse.ClinicalCourseFacade; import de.symeda.sormas.api.clinicalcourse.ClinicalVisitFacade; +import de.symeda.sormas.api.common.CoreEntityType; import de.symeda.sormas.api.customizableenum.CustomizableEnumFacade; import de.symeda.sormas.api.dashboard.DashboardFacade; +import de.symeda.sormas.api.deletionconfiguration.DeletionReference; import de.symeda.sormas.api.disease.DiseaseConfigurationFacade; import de.symeda.sormas.api.docgeneneration.DocumentTemplateFacade; import de.symeda.sormas.api.docgeneneration.EventDocumentFacade; @@ -66,7 +69,6 @@ import de.symeda.sormas.api.labmessage.LabMessageFacade; import de.symeda.sormas.api.labmessage.TestReportFacade; import de.symeda.sormas.api.outbreak.OutbreakFacade; -import de.symeda.sormas.api.person.PersonFacade; import de.symeda.sormas.api.report.WeeklyReportFacade; import de.symeda.sormas.api.sample.AdditionalTestFacade; import de.symeda.sormas.api.sample.PathogenTestFacade; @@ -107,6 +109,7 @@ import de.symeda.sormas.backend.clinicalcourse.ClinicalCourseFacadeEjb.ClinicalCourseFacadeEjbLocal; import de.symeda.sormas.backend.clinicalcourse.ClinicalVisitFacadeEjb.ClinicalVisitFacadeEjbLocal; import de.symeda.sormas.backend.clinicalcourse.ClinicalVisitService; +import de.symeda.sormas.backend.common.AbstractDomainObject; import de.symeda.sormas.backend.common.ConfigFacadeEjb.ConfigFacadeEjbLocal; import de.symeda.sormas.backend.common.DefaultEntitiesCreator; import de.symeda.sormas.backend.contact.ContactFacadeEjb.ContactFacadeEjbLocal; @@ -115,6 +118,7 @@ import de.symeda.sormas.backend.customizableenum.CustomizableEnumValueService; import de.symeda.sormas.backend.dashboard.DashboardFacadeEjb; import de.symeda.sormas.backend.deletionconfiguration.CoreEntityDeletionService; +import de.symeda.sormas.backend.deletionconfiguration.DeletionConfiguration; import de.symeda.sormas.backend.deletionconfiguration.DeletionConfigurationService; import de.symeda.sormas.backend.disease.DiseaseConfiguration; import de.symeda.sormas.backend.disease.DiseaseConfigurationFacadeEjb.DiseaseConfigurationFacadeEjbLocal; @@ -136,6 +140,7 @@ import de.symeda.sormas.backend.geocoding.GeocodingService; import de.symeda.sormas.backend.hospitalization.HospitalizationFacadeEjb.HospitalizationFacadeEjbLocal; import de.symeda.sormas.backend.immunization.ImmunizationFacadeEjb.ImmunizationFacadeEjbLocal; +import de.symeda.sormas.backend.immunization.ImmunizationService; import de.symeda.sormas.backend.importexport.ExportFacadeEjb; import de.symeda.sormas.backend.importexport.ImportFacadeEjb.ImportFacadeEjbLocal; import de.symeda.sormas.backend.importexport.parser.ImportParserService; @@ -167,6 +172,7 @@ import de.symeda.sormas.backend.person.PersonService; import de.symeda.sormas.backend.report.WeeklyReportFacadeEjb.WeeklyReportFacadeEjbLocal; import de.symeda.sormas.backend.sample.AdditionalTestFacadeEjb.AdditionalTestFacadeEjbLocal; +import de.symeda.sormas.backend.sample.AdditionalTestService; import de.symeda.sormas.backend.sample.PathogenTestFacadeEjb.PathogenTestFacadeEjbLocal; import de.symeda.sormas.backend.sample.PathogenTestService; import de.symeda.sormas.backend.sample.SampleFacadeEjb.SampleFacadeEjbLocal; @@ -207,16 +213,19 @@ import de.symeda.sormas.backend.therapy.TreatmentFacadeEjb.TreatmentFacadeEjbLocal; import de.symeda.sormas.backend.therapy.TreatmentService; import de.symeda.sormas.backend.travelentry.TravelEntryFacadeEjb; +import de.symeda.sormas.backend.travelentry.services.TravelEntryService; import de.symeda.sormas.backend.user.CurrentUserService; import de.symeda.sormas.backend.user.UserFacadeEjb.UserFacadeEjbLocal; import de.symeda.sormas.backend.user.UserRightsFacadeEjb.UserRightsFacadeEjbLocal; import de.symeda.sormas.backend.user.UserRoleConfigFacadeEjb.UserRoleConfigFacadeEjbLocal; import de.symeda.sormas.backend.user.UserService; +import de.symeda.sormas.backend.util.QueryHelper; import de.symeda.sormas.backend.vaccination.VaccinationFacadeEjb; import de.symeda.sormas.backend.vaccination.VaccinationService; import de.symeda.sormas.backend.visit.VisitFacadeEjb.VisitFacadeEjbLocal; import de.symeda.sormas.backend.visit.VisitService; import info.novatec.beantest.api.BaseBeanTest; +import info.novatec.beantest.api.BeanProviderHelper; public abstract class AbstractBeanTest extends BaseBeanTest { @@ -245,8 +254,6 @@ protected void initH2Functions() { em.getTransaction().begin(); Query nativeQuery = em.createNativeQuery("CREATE ALIAS similarity FOR \"de.symeda.sormas.backend.H2Function.similarity\""); nativeQuery.executeUpdate(); - nativeQuery = em.createNativeQuery("CREATE ALIAS array_to_string FOR \"de.symeda.sormas.backend.H2Function.array_to_string\""); - nativeQuery.executeUpdate(); nativeQuery = em.createNativeQuery("CREATE ALIAS date_part FOR \"de.symeda.sormas.backend.H2Function.date_part\""); nativeQuery.executeUpdate(); nativeQuery = em.createNativeQuery("CREATE ALIAS epi_week FOR \"de.symeda.sormas.backend.H2Function.epi_week\""); @@ -259,8 +266,6 @@ protected void initH2Functions() { nativeQuery.executeUpdate(); nativeQuery = em.createNativeQuery("CREATE ALIAS date FOR \"de.symeda.sormas.backend.H2Function.date\""); nativeQuery.executeUpdate(); - nativeQuery = em.createNativeQuery("CREATE TYPE \"JSONB\" AS other;"); - nativeQuery.executeUpdate(); em.getTransaction().commit(); } @@ -274,6 +279,41 @@ public void createDiseaseConfigurations() { }); } + /** + * Use Case: Static methods when a bean test is already running. + */ + public static T getBeanStatic(Class beanClass, Annotation... qualifiers) { + return BeanProviderHelper.getInstance().getBean(beanClass, qualifiers); + } + + /** + * Loads an attached entity.
+ * Use Case: Lazy loaded references aren't available after EJB calls anymore because the JTA transaction has already been closed. + */ + @SuppressWarnings("unchecked") + public E getEntityAttached(E entity) { + return (E) QueryHelper.simpleSingleQuery( + getBeanStatic(EntityManagerWrapper.class).getEntityManager(), + entity.getClass(), + AbstractDomainObject.UUID, + entity.getUuid()); + } + + protected void createDeletionConfigurations() { + createDeletionConfigurations(CoreEntityType.CASE); + createDeletionConfigurations(CoreEntityType.CONTACT); + createDeletionConfigurations(CoreEntityType.EVENT); + createDeletionConfigurations(CoreEntityType.EVENT_PARTICIPANT); + createDeletionConfigurations(CoreEntityType.IMMUNIZATION); + createDeletionConfigurations(CoreEntityType.TRAVEL_ENTRY); + } + + private void createDeletionConfigurations(CoreEntityType coreEntityType) { + DeletionConfigurationService deletionConfigurationService = getBean(DeletionConfigurationService.class); + deletionConfigurationService.ensurePersisted(DeletionConfiguration.build(coreEntityType, DeletionReference.CREATION, 3650)); + deletionConfigurationService.ensurePersisted(DeletionConfiguration.build(coreEntityType, DeletionReference.MANUAL_DELETION, 90)); + } + public EntityManager getEntityManager() { return getBean(EntityManagerWrapper.class).getEntityManager(); } @@ -299,6 +339,10 @@ public ImmunizationFacadeEjbLocal getImmunizationFacade() { return getBean(ImmunizationFacadeEjbLocal.class); } + public ImmunizationService getImmunizationService() { + return getBean(ImmunizationService.class); + } + public VaccinationFacade getVaccinationFacade() { return getBean(VaccinationFacadeEjb.VaccinationFacadeEjbLocal.class); } @@ -311,6 +355,10 @@ public TravelEntryFacade getTravelEntryFacade() { return getBean(TravelEntryFacadeEjb.TravelEntryFacadeEjbLocal.class); } + public TravelEntryService getTravelEntryService() { + return getBean(TravelEntryService.class); + } + public CaseStatisticsFacade getCaseStatisticsFacade() { return getBean(CaseStatisticsFacadeEjbLocal.class); } @@ -686,6 +734,10 @@ public PathogenTestService getPathogenTestService() { return getBean(PathogenTestService.class); } + public AdditionalTestService getAdditionalTestService() { + return getBean(AdditionalTestService.class); + } + public DocumentTemplateFacade getDocumentTemplateFacade() { return getBean(DocumentTemplateFacadeEjbLocal.class); } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/ArchitectureTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/ArchitectureTest.java index fcc4cf0a0c5..d321b01791f 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/ArchitectureTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/ArchitectureTest.java @@ -1,14 +1,51 @@ package de.symeda.sormas.backend; +import java.util.Collections; +import java.util.List; + +import javax.annotation.security.PermitAll; +import de.symeda.sormas.backend.action.ActionFacadeEjb; +import de.symeda.sormas.backend.event.EventFacadeEjb; +import de.symeda.sormas.backend.event.EventGroupFacadeEjb; +import de.symeda.sormas.backend.event.EventParticipantFacadeEjb; +import de.symeda.sormas.backend.event.eventimport.EventImportFacadeEjb; +import javax.annotation.security.RolesAllowed; +import javax.validation.constraints.NotNull; + import org.junit.runner.RunWith; +import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchUnitRunner; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.syntax.ArchRuleDefinition; +import com.tngtech.archunit.lang.syntax.elements.GivenMethodsConjunction; +import com.tngtech.archunit.lang.syntax.elements.MethodsShouldConjunction; import de.symeda.sormas.api.FacadeProvider; +import de.symeda.sormas.backend.bagexport.BAGExportFacadeEjb; +import de.symeda.sormas.backend.campaign.CampaignFacadeEjb; +import de.symeda.sormas.backend.caze.CaseFacadeEjb; +import de.symeda.sormas.backend.caze.caseimport.CaseImportFacadeEjb; +import de.symeda.sormas.backend.caze.surveillancereport.SurveillanceReportFacadeEjb; +import de.symeda.sormas.backend.clinicalcourse.ClinicalVisitFacadeEjb; +import de.symeda.sormas.backend.contact.ContactFacadeEjb; +import de.symeda.sormas.backend.dashboard.DashboardFacadeEjb; +import de.symeda.sormas.backend.externaljournal.ExternalJournalFacadeEjb; +import de.symeda.sormas.backend.immunization.ImmunizationFacadeEjb; +import de.symeda.sormas.backend.labmessage.LabMessageFacadeEjb; +import de.symeda.sormas.backend.labmessage.TestReportFacadeEjb; +import de.symeda.sormas.backend.outbreak.OutbreakFacadeEjb; +import de.symeda.sormas.backend.report.AggregateReportFacadeEjb; +import de.symeda.sormas.backend.report.WeeklyReportFacadeEjb; +import de.symeda.sormas.backend.sample.SampleFacadeEjb; +import de.symeda.sormas.backend.task.TaskFacadeEjb; +import de.symeda.sormas.backend.therapy.PrescriptionFacadeEjb; +import de.symeda.sormas.backend.therapy.TreatmentFacadeEjb; +import de.symeda.sormas.backend.travelentry.TravelEntryFacadeEjb; +import de.symeda.sormas.backend.vaccination.VaccinationFacadeEjb; +import de.symeda.sormas.backend.visit.VisitFacadeEjb; @RunWith(ArchUnitRunner.class) @AnalyzeClasses(packages = { @@ -19,4 +56,185 @@ public class ArchitectureTest { @ArchTest public static final ArchRule dontUseFacadeProviderRule = ArchRuleDefinition.theClass(FacadeProvider.class).should().onlyBeAccessed().byClassesThat().belongToAnyOf(FacadeProvider.class); + + @ArchTest + public void testCaseFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(CaseFacadeEjb.class, classes); + } + + @ArchTest + public void testContactFacadeEjbAuthorization(JavaClasses classes) { + + assertFacadeEjbAnnotated(ContactFacadeEjb.class, classes); + } + + @ArchTest + public void testVisitFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(VisitFacadeEjb.class, classes); + } + + @ArchTest + public void testBAGExportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(BAGExportFacadeEjb.class, classes); + } + + @ArchTest + public void testCaseImportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(CaseImportFacadeEjb.class, AuthMode.CLASS_ONLY, classes); + } + + @ArchTest + public void testExternalJournalFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(ExternalJournalFacadeEjb.class, AuthMode.CLASS_ONLY, Collections.singletonList("notifyExternalJournal"), classes); + } + + @ArchTest + public void testPrescriptionFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(PrescriptionFacadeEjb.class, classes); + } + + @ArchTest + public void testTreatmentFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(TreatmentFacadeEjb.class, classes); + + } + + @ArchTest + public void testSurveillanceReportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(SurveillanceReportFacadeEjb.class, classes); + } + + @ArchTest + public void testClinicalVisitFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(ClinicalVisitFacadeEjb.class, classes); + } + + @ArchTest + public void testEventFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(EventFacadeEjb.class, classes); + } + + @ArchTest + public void testEventParticipantFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(EventParticipantFacadeEjb.class, classes); + } + + @ArchTest + public void testActionFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(ActionFacadeEjb.class, classes); + } + + @ArchTest + public void testEventGroupFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(EventGroupFacadeEjb.class, classes); + } + + @ArchTest + public void testEventImportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(EventImportFacadeEjb.class, AuthMode.CLASS_ONLY, classes); + } + + @ArchTest + public void testDashboardFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(DashboardFacadeEjb.class, AuthMode.METHODS_ONLY, classes); + } + + @ArchTest + public void testWeeklyReportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(WeeklyReportFacadeEjb.class, AuthMode.CLASS_AND_METHODS, classes); + } + + @ArchTest + public void testAggregateReportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(AggregateReportFacadeEjb.class, AuthMode.CLASS_AND_METHODS, classes); + } + + @ArchTest + public void testOutbreakFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(OutbreakFacadeEjb.class, AuthMode.CLASS_AND_METHODS, classes); + } + + @ArchTest + public void testCampaignFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(CampaignFacadeEjb.class, AuthMode.CLASS_AND_METHODS, classes); + } + + @ArchTest + public void testSampleFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(SampleFacadeEjb.class, classes); + } + + @ArchTest + public void testLabMessageFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated( + LabMessageFacadeEjb.class, + AuthMode.CLASS_ONLY, + Collections.singletonList("fetchAndSaveExternalLabMessages"), + classes); + } + + @ArchTest + public void testTestReportFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(TestReportFacadeEjb.class, AuthMode.CLASS_ONLY, classes); + } + + @ArchTest + public void testImmunizationFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(ImmunizationFacadeEjb.class, classes); + } + + @ArchTest + public void testVaccinationFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(VaccinationFacadeEjb.class, classes); + } + + @ArchTest + public void testTravelEntryFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(TravelEntryFacadeEjb.class, classes); + } + + @ArchTest + public void testTaskFacadeEjbAuthorization(JavaClasses classes) { + assertFacadeEjbAnnotated(TaskFacadeEjb.class, classes); + } + + private void assertFacadeEjbAnnotated(Class facadeEjbClass, JavaClasses classes) { + assertFacadeEjbAnnotated(facadeEjbClass, AuthMode.CLASS_AND_METHODS, Collections.emptyList(), classes); + } + + private void assertFacadeEjbAnnotated(Class facadeEjbClass, AuthMode authMode, JavaClasses classes) { + assertFacadeEjbAnnotated(facadeEjbClass, authMode, Collections.emptyList(), classes); + } + + private void assertFacadeEjbAnnotated(Class facadeEjbClass, AuthMode authMode, @NotNull List exceptedMethods, JavaClasses classes) { + if (authMode != AuthMode.METHODS_ONLY) { + ArchRuleDefinition.theClass(facadeEjbClass).should().beAnnotatedWith(RolesAllowed.class).check(classes); + } + + GivenMethodsConjunction methods = ArchRuleDefinition.methods().that().areDeclaredIn(facadeEjbClass).and().arePublic(); + String exceptedMethodsMatcher = "^(" + String.join("|", exceptedMethods) + ")$"; + + if (authMode == AuthMode.CLASS_ONLY) { + methods.and().haveNameNotMatching(exceptedMethodsMatcher).should().notBeAnnotatedWith(RolesAllowed.class).check(classes); + methods.and().haveNameMatching(exceptedMethodsMatcher).should().beAnnotatedWith(RolesAllowed.class).check(classes); + } else { + // TODO - add exceptedMethods handling when needed + + MethodsShouldConjunction methodChecks = methods.should().beAnnotatedWith(RolesAllowed.class).orShould().beAnnotatedWith(PermitAll.class); + + if (authMode == AuthMode.CLASS_AND_METHODS) { + methodChecks = methodChecks.orShould() + .haveNameMatching( + "^(get|count|is|does|has|validate|to|pseudonymize|convertToReferenceDto|fillOrBuild|convertToDto|fromDto|convertToDetailedReferenceDto|exists).*"); + } + + methodChecks.check(classes); + } + } + + private enum AuthMode { + CLASS_AND_METHODS, + CLASS_ONLY, + METHODS_ONLY + } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/ExtendedH2Dialect.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/ExtendedH2Dialect.java index 62a3a163618..347226c4237 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/ExtendedH2Dialect.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/ExtendedH2Dialect.java @@ -1,15 +1,12 @@ package de.symeda.sormas.backend; -import java.sql.Types; - import org.hibernate.dialect.H2Dialect; import org.hibernate.dialect.function.SQLFunctionTemplate; import org.hibernate.dialect.function.StandardSQLFunction; - -import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import org.hibernate.type.StandardBasicTypes; public class ExtendedH2Dialect extends H2Dialect { + public final static String UNACCENT = "unaccent"; public final static String ILIKE = "ilike"; public final static String WINDOW_FIRST_VALUE_DESC = "window_first_value_desc"; @@ -27,7 +24,6 @@ public ExtendedH2Dialect() { registerFunction(ARRAY_TO_STRING, new StandardSQLFunction(ARRAY_TO_STRING)); registerFunction(CONCAT_FUNCTION, new StandardSQLFunction("concat")); registerFunction(ARRAY_AGG, new StandardSQLFunction(ARRAY_AGG)); - registerHibernateType(Types.OTHER, JsonBinaryType.class.getName()); // The function unaccent is specific to PostgreSQL // With H2 let's make sure it wont fail by making the function "unaccent" do nothing registerFunction(UNACCENT, new SQLFunctionTemplate(StandardBasicTypes.STRING, "?1")); @@ -44,4 +40,12 @@ public ExtendedH2Dialect() { "COUNT(?1) OVER (PARTITION BY ?2 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)")); registerFunction(GREATEST, new StandardSQLFunction(GREATEST)); } + + /** + * Fixes JdbcSQLSyntaxErrorException: Values of types "BOOLEAN" and "INTEGER" are not comparable. + */ + @Override + public String toBooleanValueString(boolean bool) { + return bool ? "TRUE" : "FALSE"; + } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/H2Function.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/H2Function.java index b1db45ee013..605cf6dff20 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/H2Function.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/H2Function.java @@ -1,6 +1,5 @@ package de.symeda.sormas.backend; -import java.util.Arrays; import java.util.Date; import de.symeda.sormas.api.utils.DateHelper; @@ -15,10 +14,6 @@ public static float similarity(String a, String b) { return a.equalsIgnoreCase(b) ? 1 : 0; } - public static String array_to_string(String[] array, String delimiter) { - return array != null ? String.join(delimiter, Arrays.asList(array)) : null; - } - public static long date_part(String part, Date date) { switch (part) { case "year": diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/TestDataCreator.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/TestDataCreator.java index b8d9e6d2440..69d4fd60cca 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/TestDataCreator.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/TestDataCreator.java @@ -24,6 +24,7 @@ import java.util.function.Consumer; import java.util.function.Function; +import de.symeda.sormas.api.caze.VaccinationInfoSource; import org.jetbrains.annotations.NotNull; import com.fasterxml.jackson.databind.ObjectMapper; @@ -596,6 +597,31 @@ public VaccinationDto createVaccinationDto( return vaccination; } + public VaccinationDto createVaccinationWithDetails( + UserReferenceDto reportingUser, + ImmunizationReferenceDto immunization, + HealthConditionsDto healthConditions, + Date vaccinationDate, + Vaccine vaccine, + VaccineManufacturer vaccineManufacturer, + VaccinationInfoSource infoSource, + String vaccineInn, + String vaccineBatchNumber, + String vaccineAtcCode, + String vaccineDose) { + + VaccinationDto vaccinationDto = + createVaccination(reportingUser, immunization, healthConditions, vaccinationDate, vaccine, vaccineManufacturer); + + vaccinationDto.setVaccinationInfoSource(infoSource); + vaccinationDto.setVaccineInn(vaccineInn); + vaccinationDto.setVaccineBatchNumber(vaccineBatchNumber); + vaccinationDto.setVaccineAtcCode(vaccineAtcCode); + vaccinationDto.setVaccineDose(vaccineDose); + + return beanTest.getVaccinationFacade().save(vaccinationDto); + } + public VaccinationDto createVaccination( UserReferenceDto reportingUser, ImmunizationReferenceDto immunization, @@ -801,6 +827,19 @@ public TaskDto createTask(UserReferenceDto assigneeUser) { return createTask(TaskContext.GENERAL, TaskType.OTHER, TaskStatus.PENDING, null, null, null, new Date(), assigneeUser); } + public TaskDto createTask(TaskContext context, ReferenceDto entityRef, Consumer customConfig) { + + TaskDto task = TaskDto.build(context, entityRef); + + if (customConfig != null) { + customConfig.accept(task); + } + + task = beanTest.getTaskFacade().saveTask(task); + + return task; + } + public TaskDto createTask( TaskContext context, TaskType type, @@ -1023,7 +1062,7 @@ public EventParticipantDto createEventParticipant( eventParticipant.setDistrict(rdcf.district); } - eventParticipant = beanTest.getEventParticipantFacade().saveEventParticipant(eventParticipant); + eventParticipant = beanTest.getEventParticipantFacade().save(eventParticipant); return eventParticipant; } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/caze/CaseFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/caze/CaseFacadeEjbTest.java index f016cd859d9..11af677068a 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/caze/CaseFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/caze/CaseFacadeEjbTest.java @@ -50,6 +50,7 @@ import javax.validation.Validator; import javax.validation.ValidatorFactory; +import de.symeda.sormas.api.disease.DiseaseVariant; import org.apache.commons.lang3.time.DateUtils; import org.hamcrest.MatcherAssert; import org.hibernate.internal.SessionImpl; @@ -78,6 +79,7 @@ import de.symeda.sormas.api.caze.CaseReferenceDto; import de.symeda.sormas.api.caze.InvestigationStatus; import de.symeda.sormas.api.caze.MapCaseDto; +import de.symeda.sormas.api.caze.VaccinationInfoSource; import de.symeda.sormas.api.caze.VaccinationStatus; import de.symeda.sormas.api.caze.Vaccine; import de.symeda.sormas.api.caze.VaccineManufacturer; @@ -124,12 +126,15 @@ import de.symeda.sormas.api.sample.PathogenTestDto; import de.symeda.sormas.api.sample.PathogenTestResultType; import de.symeda.sormas.api.sample.PathogenTestType; +import de.symeda.sormas.api.sample.SampleAssociationType; +import de.symeda.sormas.api.sample.SampleCriteria; import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.sample.SampleMaterial; import de.symeda.sormas.api.share.ExternalShareStatus; import de.symeda.sormas.api.symptoms.SymptomState; import de.symeda.sormas.api.symptoms.SymptomsDto; import de.symeda.sormas.api.task.TaskContext; +import de.symeda.sormas.api.task.TaskCriteria; import de.symeda.sormas.api.task.TaskDto; import de.symeda.sormas.api.task.TaskStatus; import de.symeda.sormas.api.task.TaskType; @@ -166,6 +171,43 @@ public class CaseFacadeEjbTest extends AbstractBeanTest { @Rule public final ExpectedException exception = ExpectedException.none(); + @Test + public void testFilterByResponsibleRegionAndDistrictOfCase() { + + RDCFEntities rdcf = creator.createRDCFEntities("Region", "District", "Community", "Facility"); + RDCFEntities rdcf2 = creator.createRDCFEntities("Region2", "District2", "Community2", "Facility2"); + UserDto user = creator + .createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR); + PersonDto cazePerson = creator.createPerson("Case", "Person", Sex.MALE, 1980, 1, 1); + CaseDataDto caze = creator.createCase( + user.toReference(), + cazePerson.toReference(), + Disease.EVD, + CaseClassification.PROBABLE, + InvestigationStatus.PENDING, + new Date(), + rdcf); + creator.createSample(caze.toReference(), user.toReference(), rdcf.facility); + + caze.setRegion(new RegionReferenceDto(rdcf2.region.getUuid(), null, null)); + caze.setDistrict(new DistrictReferenceDto(rdcf2.district.getUuid(), null, null)); + caze.setCommunity(new CommunityReferenceDto(rdcf2.community.getUuid(), null, null)); + caze.setHealthFacility(new FacilityReferenceDto(rdcf2.facility.getUuid(), null, null)); + + getCaseFacade().save(caze); + + final CaseCriteria caseCriteria = new CaseCriteria().region(new RegionReferenceDto(rdcf.region.getUuid(), null, null)) + .district(new DistrictReferenceDto(rdcf.district.getUuid(), null, null)); + Assert.assertEquals(1, getCaseFacade().getIndexList(caseCriteria, 0, 100, null).size()); + final SampleCriteria sampleCriteria = new SampleCriteria().region(new RegionReferenceDto(rdcf.region.getUuid(), null, null)) + .sampleAssociationType(SampleAssociationType.CASE) + .district(new DistrictReferenceDto(rdcf.district.getUuid(), null, null)); + Assert.assertEquals(1, getSampleFacade().getIndexList(sampleCriteria, 0, 100, null).size()); + final TaskCriteria taskCriteria = new TaskCriteria().region(new RegionReferenceDto(rdcf.region.getUuid(), null, null)) + .district(new DistrictReferenceDto(rdcf.district.getUuid(), null, null)); + Assert.assertEquals(1, getTaskFacade().getIndexList(taskCriteria, 0, 100, null).size()); + } + @Test public void testGetCasesForDuplicateMerging() { @@ -642,7 +684,7 @@ public void testGetIndexListByEventFreeText() { new Date(), rdcf); event1Participant1.setResultingCase(case1.toReference()); - getEventParticipantFacade().saveEventParticipant(event1Participant1); + getEventParticipantFacade().save(event1Participant1); Assert.assertEquals(2, getCaseFacade().getIndexList(null, 0, 100, null).size()); Assert.assertEquals(1, getCaseFacade().getIndexList(new CaseCriteria().eventLike("signal"), 0, 100, null).size()); @@ -651,27 +693,13 @@ public void testGetIndexListByEventFreeText() { } @Test - public void testGetExportList() { - + public void testGetExportListWithRelevantVaccinations() { RDCFEntities rdcfEntities = creator.createRDCFEntities("Region", "District", "Community", "Facility"); RDCF rdcf = new RDCF(rdcfEntities); - UserDto user = creator.createUser( - rdcfEntities.region.getUuid(), - rdcfEntities.district.getUuid(), - rdcfEntities.facility.getUuid(), - "Surv", - "Sup", - UserRole.SURVEILLANCE_SUPERVISOR); - PersonDto cazePerson = creator.createPerson("Case", "Person"); - CaseDataDto caze = creator.createCase( - user.toReference(), - cazePerson.toReference(), - Disease.EVD, - CaseClassification.PROBABLE, - InvestigationStatus.PENDING, - new Date(), - rdcfEntities); + UserDto user = getUser(rdcfEntities); + PersonDto cazePerson = creator.createPerson("Case", "Person"); + CaseDataDto caze = getCaze(user, cazePerson, rdcfEntities); cazePerson.getAddress().setCity("City"); getPersonFacade().savePerson(cazePerson); @@ -712,27 +740,43 @@ public void testGetExportList() { DateHelper.subtractDays(new Date(), 7), null, null); - VaccinationDto firstVaccination = creator.createVaccination( + + VaccinationDto firstVaccination = creator.createVaccinationWithDetails( caze.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), DateHelper.subtractDays(new Date(), 7), Vaccine.OXFORD_ASTRA_ZENECA, - VaccineManufacturer.ASTRA_ZENECA); - creator.createVaccination( + VaccineManufacturer.ASTRA_ZENECA, + VaccinationInfoSource.UNKNOWN, + "inn1", + "123", + "code123", + "3"); + VaccinationDto secondVaccination = creator.createVaccinationWithDetails( caze.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), DateHelper.subtractDays(new Date(), 4), Vaccine.MRNA_1273, - VaccineManufacturer.MODERNA); - VaccinationDto thirdVaccination = creator.createVaccination( + VaccineManufacturer.MODERNA, + VaccinationInfoSource.UNKNOWN, + "inn2", + "456", + "code456", + "2"); + VaccinationDto thirdVaccination = creator.createVaccinationWithDetails( caze.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), new Date(), Vaccine.COMIRNATY, - VaccineManufacturer.BIONTECH_PFIZER); + VaccineManufacturer.BIONTECH_PFIZER, + VaccinationInfoSource.UNKNOWN, + "inn3", + "789", + "code789", + "1"); final String primaryPhone = "0000444888"; final String primaryEmail = "primary@email.com"; @@ -786,9 +830,74 @@ public void testGetExportList() { assertTrue(otherContactDetails.contains("secondary@email.com (EMAIL)")); assertTrue(otherContactDetails.contains("personSkype (SkypeID)")); assertEquals(VaccinationStatus.VACCINATED, exportDto.getVaccinationStatus()); - assertEquals(thirdVaccination.getVaccineName(), exportDto.getVaccineName()); assertEquals(firstVaccination.getVaccinationDate(), exportDto.getFirstVaccinationDate()); - assertEquals(thirdVaccination.getVaccinationDate(), exportDto.getLastVaccinationDate()); + assertEquals(secondVaccination.getVaccineName(), exportDto.getVaccineName()); + assertEquals(secondVaccination.getVaccinationDate(), exportDto.getLastVaccinationDate()); + assertEquals(secondVaccination.getVaccinationInfoSource(), exportDto.getVaccinationInfoSource()); + assertEquals(secondVaccination.getVaccineInn(), exportDto.getVaccineInn()); + assertEquals(secondVaccination.getVaccineBatchNumber(), exportDto.getVaccineBatchNumber()); + assertEquals(secondVaccination.getVaccineAtcCode(), exportDto.getVaccineAtcCode()); + assertEquals(secondVaccination.getVaccineDose(), exportDto.getNumberOfDoses()); + } + + @Test + public void testGetExportListWithoutRelevantVaccinations() { + RDCFEntities rdcfEntities = creator.createRDCFEntities("Region", "District", "Community", "Facility"); + RDCF rdcf = new RDCF(rdcfEntities); + UserDto user = getUser(rdcfEntities); + + PersonDto cazePerson = creator.createPerson("Case", "Person"); + CaseDataDto caze = getCaze(user, cazePerson, rdcfEntities); + cazePerson.getAddress().setCity("City"); + getPersonFacade().savePerson(cazePerson); + + caze.getSymptoms().setAbdominalPain(SymptomState.YES); + caze = getCaseFacade().save(caze); + + ImmunizationDto immunization = creator.createImmunization( + caze.getDisease(), + caze.getPerson(), + caze.getReportingUser(), + ImmunizationStatus.ACQUIRED, + MeansOfImmunization.VACCINATION, + ImmunizationManagementStatus.COMPLETED, + rdcf, + DateHelper.subtractDays(new Date(), 10), + DateHelper.subtractDays(new Date(), 5), + DateHelper.subtractDays(new Date(), 1), + null); + + VaccinationDto vaccination = creator.createVaccinationWithDetails( + caze.getReportingUser(), + immunization.toReference(), + HealthConditionsDto.build(), + DateHelper.addDays(new Date(), 1), + Vaccine.MRNA_1273, + VaccineManufacturer.MODERNA, + VaccinationInfoSource.UNKNOWN, + "inn2", + "456", + "code456", + "2"); + + cazePerson = getPersonFacade().getPersonByUuid(cazePerson.getUuid()); + getPersonFacade().savePerson(cazePerson); + + List results = + getCaseFacade().getExportList(new CaseCriteria(), Collections.emptySet(), CaseExportType.CASE_SURVEILLANCE, 0, 100, null, Language.EN); + + // List should have one entry + assertEquals(1, results.size()); + CaseExportDto exportDto = results.get(0); + + assertNull(exportDto.getFirstVaccinationDate()); + assertNull(exportDto.getVaccineName()); + assertNull(exportDto.getLastVaccinationDate()); + assertNull(exportDto.getVaccinationInfoSource()); + assertNull(exportDto.getVaccineInn()); + assertNull(exportDto.getVaccineBatchNumber()); + assertNull(exportDto.getVaccineAtcCode()); + assertEquals(exportDto.getNumberOfDoses(), ""); } /** @@ -899,7 +1008,7 @@ public void testCaseDeletion() throws ExternalSurveillanceToolException { assertTrue(getSampleFacade().getDeletedUuidsSince(since).contains(sample.getUuid())); assertFalse(getSampleFacade().getDeletedUuidsSince(since).contains(sampleAssociatedToContactAndCase.getUuid())); assertTrue(getSampleTestFacade().getDeletedUuidsSince(since).contains(pathogenTest.getUuid())); - assertNull(getAdditionalTestFacade().getByUuid(additionalTest.getUuid())); + assertNotNull(getAdditionalTestFacade().getByUuid(additionalTest.getUuid())); assertNotNull(getTaskFacade().getByUuid(task.getUuid())); } @@ -1357,18 +1466,17 @@ public void testMergeCase() throws IOException { getEventFacade().save(event); EventParticipantDto otherCaseEventParticipant = creator.createEventParticipant(event.toReference(), otherPerson, otherUserReference); otherCaseEventParticipant.setResultingCase(otherCaseReference); - getEventParticipantFacade().saveEventParticipant(otherCaseEventParticipant); + getEventParticipantFacade().save(otherCaseEventParticipant); creator.createSurveillanceReport(otherUserReference, otherCaseReference); TravelEntryDto travelEntry = creator.createTravelEntry( - otherPersonReference, - otherUserReference, - otherCase.getDisease(), - otherRdcf.region, - otherRdcf.district, - otherRdcf.pointOfEntry); - travelEntry.setResultingCase(otherCaseReference); - travelEntry = getTravelEntryFacade().save(travelEntry); + otherPersonReference, + otherUserReference, + otherRdcf, + (t)->{ + t.setDisease(otherCase.getDisease()); + t.setResultingCase(otherCaseReference); + }); DocumentDto document = creator.createDocument( leadUserReference, @@ -1543,6 +1651,55 @@ public void testCloneCaseActivityAsCaseIsCloned() { assertEquals(ActivityAsCaseType.GATHERING, activitiesAsCase.get(0).getActivityAsCaseType()); } + @Test + public void testCloneCaseWithOtherDieseseDontChangeOriginalCase(){ + RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.SURVEILLANCE_SUPERVISOR, UserRole.ADMIN); + PersonDto cazePerson = creator.createPerson("Case", "Person"); + String diseaseDetails = "this is a test disease"; + CaseDataDto caze = creator.createCase(user.toReference(), cazePerson.toReference(), rdcf, c->{ + c.setCaseClassification(CaseClassification.SUSPECT); + c.setDisease(Disease.CORONAVIRUS); + c.setDiseaseDetails(diseaseDetails); + }); + + // check values on original case + CaseDataDto originalCase = getCaseFacade().getCaseDataByUuid(caze.getUuid()); + assertEquals(caze.getUuid(), originalCase.getUuid()); + assertEquals(Disease.CORONAVIRUS, originalCase.getDisease()); + assertEquals(CaseClassification.SUSPECT, originalCase.getCaseClassification()); + assertEquals(diseaseDetails, originalCase.getDiseaseDetails()); + assertEquals(caze.getPerson(), originalCase.getPerson()); + assertEquals(caze.getDistrict(), originalCase.getDistrict()); + assertEquals(caze.getRegion(), originalCase.getRegion()); + + // make changes on original DTO and clone it. check the clone DTO has the new values + originalCase.setDisease(Disease.DENGUE); + originalCase.setCaseClassification(CaseClassification.CONFIRMED); + originalCase.setDiseaseDetails(null); + + CaseDataDto cloneCase = getCaseFacade().cloneCase(originalCase); + assertNotEquals(caze.getUuid(), cloneCase.getUuid()); + assertEquals(Disease.DENGUE, cloneCase.getDisease()); + assertEquals(CaseClassification.CONFIRMED, cloneCase.getCaseClassification()); + assertNull(cloneCase.getDiseaseDetails()); + assertEquals(caze.getPerson(), cloneCase.getPerson()); + assertEquals(caze.getDistrict(), cloneCase.getDistrict()); + assertEquals(caze.getRegion(), cloneCase.getRegion()); + + + // recheck values for the original DTO it has the same values. + originalCase = getCaseFacade().getCaseDataByUuid(caze.getUuid()); + assertEquals(caze.getUuid(), originalCase.getUuid()); + assertEquals(Disease.CORONAVIRUS, originalCase.getDisease()); + assertEquals(CaseClassification.SUSPECT, originalCase.getCaseClassification()); + assertEquals(diseaseDetails, originalCase.getDiseaseDetails()); + assertEquals(caze.getPerson(), originalCase.getPerson()); + assertEquals(caze.getDistrict(), originalCase.getDistrict()); + assertEquals(caze.getRegion(), originalCase.getRegion()); + + } + @Test public void testDoesEpidNumberExist() { @@ -2388,4 +2545,25 @@ private String randomString(int len) { return sb.toString(); } + private UserDto getUser(RDCFEntities rdcfEntities) { + return creator.createUser( + rdcfEntities.region.getUuid(), + rdcfEntities.district.getUuid(), + rdcfEntities.facility.getUuid(), + "Surv", + "Sup", + UserRole.SURVEILLANCE_SUPERVISOR); + } + + private CaseDataDto getCaze(UserDto user, PersonDto cazePerson, RDCFEntities rdcfEntities) { + return creator.createCase( + user.toReference(), + cazePerson.toReference(), + Disease.EVD, + CaseClassification.PROBABLE, + InvestigationStatus.PENDING, + new Date(), + rdcfEntities); + } + } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/common/ConfigFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/common/ConfigFacadeEjbTest.java index 0ca116ce3bd..d439f3928b4 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/common/ConfigFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/common/ConfigFacadeEjbTest.java @@ -39,12 +39,18 @@ public void testValidateExternalUrls() { MockProducer.getProperties().setProperty(ConfigFacadeEjb.INTERFACE_SYMPTOM_JOURNAL_URL, "https://www.google.com"); getConfigFacade().validateConfigUrls(); - MockProducer.getProperties().setProperty(ConfigFacadeEjb.INTERFACE_SYMPTOM_JOURNAL_URL, "http://www.google.com"); + MockProducer.getProperties().setProperty(ConfigFacadeEjb.INTERFACE_SYMPTOM_JOURNAL_URL, "https://www.google.com"); getConfigFacade().validateConfigUrls(); - MockProducer.getProperties().setProperty(ConfigFacadeEjb.INTERFACE_SYMPTOM_JOURNAL_URL, "http://my-docker-service:12345/route/path"); + MockProducer.getProperties().setProperty(ConfigFacadeEjb.INTERFACE_SYMPTOM_JOURNAL_URL, "https://my-docker-service:12345/route/path"); getConfigFacade().validateConfigUrls(); + try { + MockProducer.getProperties().setProperty(ConfigFacadeEjb.SORMAS_STATS_URL, "http://my-stats-service:12345/route/path"); + getConfigFacade().validateConfigUrls(); + } catch (IllegalArgumentException ignored) { + } + try { MockProducer.getProperties().setProperty(ConfigFacadeEjb.INTERFACE_SYMPTOM_JOURNAL_URL, "htps://www.google.com#"); } catch (IllegalArgumentException ignored) { diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/common/StartupShutdownServiceTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/common/StartupShutdownServiceTest.java index 7e14056318f..c3cd53ad43b 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/common/StartupShutdownServiceTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/common/StartupShutdownServiceTest.java @@ -30,7 +30,6 @@ import org.apache.commons.collections.CollectionUtils; import org.hamcrest.Matchers; -import org.junit.Ignore; import org.junit.Test; import org.testcontainers.containers.JdbcDatabaseContainer; import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy; @@ -116,10 +115,9 @@ public void testAuditSchemaVersions() throws IOException { } @Test - @Ignore public void testHistoryTablesMatch() throws IOException, URISyntaxException { - SormasPostgresSQLContainer container = new SormasPostgresSQLContainer().withDatabaseName("sormas"); + SormasPostgresSQLContainer container = new SormasPostgresSQLContainer(); container.start(); Map properties = new HashMap<>(); @@ -132,6 +130,7 @@ public void testHistoryTablesMatch() throws IOException, URISyntaxException { properties.put("hibernate.jdbc.batch_size", "100"); properties.put("hibernate.order_inserts", "true"); properties.put("hibernate.order_updates", "true"); + properties.put("hibernate.hbm2ddl.auto", "none"); EntityManagerFactory emf = Persistence.createEntityManagerFactory("beanTestPU", properties); EntityManager em = emf.createEntityManager(); @@ -188,8 +187,6 @@ private void assertContinuousSchemaVersions(String schemaResource, int... omitte public static class SormasPostgresSQLContainer extends JdbcDatabaseContainer { - private String databaseName; - public SormasPostgresSQLContainer() { super( new ImageFromDockerfile().withFileFromClasspath("setup_sormas_db.sh", "testcontainers/setup_sormas_db.sh") @@ -201,6 +198,7 @@ public SormasPostgresSQLContainer() { addExposedPort(POSTGRESQL_PORT); withEnv("POSTGRES_USER", getUsername()); withEnv("POSTGRES_PASSWORD", getPassword()); + withEnv("POSTGRES_DB", getDatabaseName()); } @Override @@ -215,15 +213,9 @@ public String getJdbcUrl() { + additionalUrlParams; } - @Override - public SormasPostgresSQLContainer withDatabaseName(String dbName) { - this.databaseName = dbName; - return self(); - } - @Override public String getDatabaseName() { - return databaseName; + return "sormas"; } @Override diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/contact/ContactFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/contact/ContactFacadeEjbTest.java index 56cbe412797..b7a5d3598c1 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/contact/ContactFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/contact/ContactFacadeEjbTest.java @@ -42,6 +42,8 @@ import java.util.List; import java.util.stream.Collectors; +import de.symeda.sormas.api.caze.VaccinationInfoSource; +import de.symeda.sormas.api.i18n.Strings; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.junit.Assert; @@ -301,6 +303,57 @@ public void testContactFollowUpStatusCanceledWhenContactConvertedToCase() { assertEquals(FollowUpStatus.CANCELED, contact.getFollowUpStatus()); } + @Test + public void testContactFollowUpStatusWhenConvertedCaseIsDeleted() { + RDCFEntities rdcf = creator.createRDCFEntities("Region", "District", "Community", "Facility"); + UserDto user = creator + .createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR); + PersonDto cazePerson = creator.createPerson("Case", "Person"); + CaseDataDto caze = creator.createCase( + user.toReference(), + cazePerson.toReference(), + Disease.EVD, + CaseClassification.PROBABLE, + InvestigationStatus.PENDING, + new Date(), + rdcf); + PersonDto contactPerson = creator.createPerson("Contact", "Person"); + + Date contactDate = new Date(); + ContactDto contact = + creator.createContact(user.toReference(), user.toReference(), contactPerson.toReference(), caze, contactDate, contactDate, null); + + assertEquals(ContactStatus.ACTIVE, contact.getContactStatus()); + assertNull(contact.getResultingCase()); + + contact.setContactClassification(ContactClassification.CONFIRMED); + contact = getContactFacade().save(contact); + + contact.setResultingCase(caze.toReference()); + contact = getContactFacade().save(contact); + + assertEquals(ContactClassification.CONFIRMED, contact.getContactClassification()); + assertEquals(ContactStatus.CONVERTED, contact.getContactStatus()); + assertEquals(FollowUpStatus.CANCELED, contact.getFollowUpStatus()); + + getCaseFacade().delete(caze.getUuid()); + List contactDtos = getContactFacade().getByPersonUuids(Arrays.asList(contactPerson.getUuid())); + assertEquals(1, contactDtos.size()); + contact = contactDtos.get(0); + + assertEquals(ContactClassification.CONFIRMED, contact.getContactClassification()); + assertEquals(ContactStatus.DROPPED, contact.getContactStatus()); + assertEquals(FollowUpStatus.CANCELED, contact.getFollowUpStatus()); + + RegionReferenceDto regionReferenceDto = getRegionFacade().getAllActiveByServerCountry().get(0); + DistrictReferenceDto districtReferenceDto = getDistrictFacade().getAllActiveAsReference().get(0); + contact.setFollowUpStatus(FollowUpStatus.FOLLOW_UP); + contact.setRegion(regionReferenceDto); + contact.setDistrict(districtReferenceDto); + contact = getContactFacade().save(contact); + assertEquals(FollowUpStatus.FOLLOW_UP, contact.getFollowUpStatus()); + } + @Test public void testGenerateContactFollowUpTasks() { @@ -708,7 +761,7 @@ public void testGetIndexListByEventFreeText() { rdcf); event1Participant1.setResultingCase(case1.toReference()); - getEventParticipantFacade().saveEventParticipant(event1Participant1); + getEventParticipantFacade().save(event1Participant1); creator.createContact(user.toReference(), person1.toReference(), case1); creator.createContact(user.toReference(), person1.toReference(), case2); @@ -975,28 +1028,15 @@ public void testCreatedContactExistWhenValidatedByUUID() { } @Test - public void testGetExportList() { - - TestDataCreator.RDCF rdcf = creator.createRDCF("Region", "District", "Community", "Facility"); + public void testGetExportListWithRelevantVaccinations() { + RDCFEntities rdcfEntities = creator.createRDCFEntities("Region", "District", "Community", "Facility"); + RDCF rdcf = new RDCF(rdcfEntities); UserDto user = useSurveillanceOfficerLogin(rdcf); PersonDto cazePerson = creator.createPerson("Case", "Person"); - CaseDataDto caze = creator.createCase( - user.toReference(), - cazePerson.toReference(), - Disease.EVD, - CaseClassification.PROBABLE, - InvestigationStatus.PENDING, - new Date(), - rdcf); - ContactDto contact = creator.createContact( - user.toReference(), - user.toReference(), - creator.createPerson("Contact", "Person").toReference(), - caze, - new Date(), - new Date(), - null, - rdcf); + + CaseDataDto caze = createCaze(user, cazePerson, rdcfEntities); + ContactDto contact = createContact(user, caze, rdcf); + PersonDto contactPerson = getPersonFacade().getPersonByUuid(contact.getPerson().getUuid()); VisitDto visit = creator.createVisit(caze.getDisease(), contactPerson.toReference(), new Date(), VisitStatus.COOPERATIVE, VisitOrigin.USER); EpiDataDto epiData = contact.getEpiData(); @@ -1055,13 +1095,15 @@ public void testGetExportList() { DateHelper.subtractDays(new Date(), 7), Vaccine.OXFORD_ASTRA_ZENECA, VaccineManufacturer.ASTRA_ZENECA); - creator.createVaccination( + + VaccinationDto secondVaccination = creator.createVaccination( contact.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), DateHelper.subtractDays(new Date(), 4), Vaccine.MRNA_1273, VaccineManufacturer.MODERNA); + VaccinationDto thirdVaccination = creator.createVaccination( contact.getReportingUser(), immunization.toReference(), @@ -1087,9 +1129,14 @@ public void testGetExportList() { assertEquals("Test information", exportDto.getAdditionalInformation()); assertEquals("1234", exportDto.getPostalCode()); assertEquals(VaccinationStatus.VACCINATED, exportDto.getVaccinationStatus()); - assertEquals(thirdVaccination.getVaccineName(), exportDto.getVaccineName()); assertEquals(firstVaccination.getVaccinationDate(), exportDto.getFirstVaccinationDate()); - assertEquals(thirdVaccination.getVaccinationDate(), exportDto.getLastVaccinationDate()); + assertEquals(secondVaccination.getVaccineName(), exportDto.getVaccineName()); + assertEquals(secondVaccination.getVaccinationDate(), exportDto.getLastVaccinationDate()); + assertEquals(secondVaccination.getVaccinationInfoSource(), exportDto.getVaccinationInfoSource()); + assertEquals(secondVaccination.getVaccineInn(), exportDto.getVaccineInn()); + assertEquals(secondVaccination.getVaccineBatchNumber(), exportDto.getVaccineBatchNumber()); + assertEquals(secondVaccination.getVaccineAtcCode(), exportDto.getVaccineAtcCode()); + assertEquals(secondVaccination.getVaccineDose(), exportDto.getNumberOfDoses()); assertNotNull(exportDto.getLastCooperativeVisitDate()); assertTrue(StringUtils.isNotEmpty(exportDto.getLastCooperativeVisitSymptoms())); @@ -1105,7 +1152,7 @@ public void testGetExportList() { exposure.getEndDate(), Language.EN), exportDto.getTravelHistory()); - assertThat(exportDto.getEventCount(), equalTo(0L)); + assertTrue(exportDto.getEventCount().equals(0L)); // one Contact with 2 Events UserReferenceDto reportingUser = new UserReferenceDto(user.getUuid()); @@ -1115,12 +1162,132 @@ public void testGetExportList() { creator.createEventParticipant(new EventReferenceDto(event1.getUuid()), contactPerson, reportingUser); results = getContactFacade().getExportList(null, Collections.emptySet(), 0, 100, null, Language.EN); - assertThat(results, hasSize(1)); + assertEquals(results.size(), 1); { ContactExportDto dto = results.get(0); - assertThat(dto.getLatestEventId(), equalTo(event2.getUuid())); - assertThat(dto.getLatestEventTitle(), equalTo(event2.getEventTitle())); - assertThat(dto.getEventCount(), equalTo(2L)); + assertEquals(dto.getLatestEventId(), event2.getUuid()); + assertEquals(dto.getLatestEventTitle(), event2.getEventTitle()); + assertTrue(dto.getEventCount().equals(2L)); + } + } + + @Test + public void testGetExportListWithoutRelevantVaccinations() { + RDCFEntities rdcfEntities = creator.createRDCFEntities("Region", "District", "Community", "Facility"); + RDCF rdcf = new RDCF(rdcfEntities); + UserDto user = useSurveillanceOfficerLogin(rdcf); + PersonDto cazePerson = creator.createPerson("Case", "Person"); + + CaseDataDto caze = createCaze(user, cazePerson, rdcfEntities); + ContactDto contact = createContact(user, caze, rdcf); + + PersonDto contactPerson = getPersonFacade().getPersonByUuid(contact.getPerson().getUuid()); + VisitDto visit = creator.createVisit(caze.getDisease(), contactPerson.toReference(), new Date(), VisitStatus.COOPERATIVE, VisitOrigin.USER); + EpiDataDto epiData = contact.getEpiData(); + epiData.setExposureDetailsKnown(YesNoUnknown.YES); + List travels = new ArrayList<>(); + ExposureDto exposure = ExposureDto.build(ExposureType.TRAVEL); + exposure.getLocation().setDetails("Mallorca"); + exposure.setStartDate(DateHelper.subtractDays(new Date(), 15)); + exposure.setEndDate(DateHelper.subtractDays(new Date(), 7)); + caze.getEpiData().getExposures().add(exposure); + travels.add(exposure); + epiData.setExposures(travels); + contact.setEpiData(epiData); + getContactFacade().save(contact); + + contactPerson.getAddress().setRegion(new RegionReferenceDto(rdcf.region.getUuid(), null, null)); + contactPerson.getAddress().setDistrict(new DistrictReferenceDto(rdcf.district.getUuid(), null, null)); + contactPerson.getAddress().setCity("City"); + contactPerson.getAddress().setStreet("Test street"); + contactPerson.getAddress().setHouseNumber("Test number"); + contactPerson.getAddress().setAdditionalInformation("Test information"); + contactPerson.getAddress().setPostalCode("1234"); + getPersonFacade().savePerson(contactPerson); + + visit.getSymptoms().setAbdominalPain(SymptomState.YES); + getVisitFacade().saveVisit(visit); + + ImmunizationDto immunization = creator.createImmunization( + contact.getDisease(), + contact.getPerson(), + contact.getReportingUser(), + ImmunizationStatus.ACQUIRED, + MeansOfImmunization.VACCINATION, + ImmunizationManagementStatus.COMPLETED, + rdcf, + DateHelper.subtractDays(new Date(), 10), + DateHelper.subtractDays(new Date(), 5), + DateHelper.subtractDays(new Date(), 1), + null); + + VaccinationDto vaccination = creator.createVaccinationWithDetails( + caze.getReportingUser(), + immunization.toReference(), + HealthConditionsDto.build(), + DateHelper.addDays(new Date(), 1), + Vaccine.MRNA_1273, + VaccineManufacturer.MODERNA, + VaccinationInfoSource.UNKNOWN, + "inn2", + "456", + "code456", + "2"); + + List results; + results = getContactFacade().getExportList(null, Collections.emptySet(), 0, 100, null, Language.EN); + + // Database should contain one contact, associated visit and task + assertEquals(1, results.size()); + + // Make sure that everything that is added retrospectively (address, last cooperative visit date and symptoms) is present + ContactExportDto exportDto = results.get(0); + + assertEquals(rdcf.region.getCaption(), exportDto.getAddressRegion()); + assertEquals(rdcf.district.getCaption(), exportDto.getAddressDistrict()); + assertEquals("City", exportDto.getCity()); + assertEquals("Test street", exportDto.getStreet()); + assertEquals("Test number", exportDto.getHouseNumber()); + assertEquals("Test information", exportDto.getAdditionalInformation()); + assertEquals("1234", exportDto.getPostalCode()); + assertNull(exportDto.getFirstVaccinationDate()); + assertNull(exportDto.getVaccineName()); + assertNull(exportDto.getLastVaccinationDate()); + assertNull(exportDto.getVaccinationInfoSource()); + assertNull(exportDto.getVaccineInn()); + assertNull(exportDto.getVaccineBatchNumber()); + assertNull(exportDto.getVaccineAtcCode()); + assertEquals(exportDto.getNumberOfDoses(), ""); + assertNotNull(exportDto.getLastCooperativeVisitDate()); + assertTrue(StringUtils.isNotEmpty(exportDto.getLastCooperativeVisitSymptoms())); + assertEquals(YesNoUnknown.YES, exportDto.getLastCooperativeVisitSymptomatic()); + + assertNotNull(exportDto.getEpiDataId()); + assertTrue(exportDto.isTraveled()); + assertEquals( + EpiDataHelper.buildDetailedTravelString( + exposure.getLocation().toString(), + exposure.getDescription(), + exposure.getStartDate(), + exposure.getEndDate(), + Language.EN), + exportDto.getTravelHistory()); + assertTrue(exportDto.getEventCount().equals(0L)); + + // one Contact with 2 Events + UserReferenceDto reportingUser = new UserReferenceDto(user.getUuid()); + EventDto event1 = creator.createEvent(reportingUser, DateHelper.subtractDays(new Date(), 1)); + EventDto event2 = creator.createEvent(reportingUser, new Date()); + creator.createEventParticipant(new EventReferenceDto(event2.getUuid()), contactPerson, reportingUser); + creator.createEventParticipant(new EventReferenceDto(event1.getUuid()), contactPerson, reportingUser); + + results = getContactFacade().getExportList(null, Collections.emptySet(), 0, 100, null, Language.EN); + assertEquals(results.size(), 1); + { + ContactExportDto dto = results.get(0); + assertEquals(dto.getLatestEventId(), event2.getUuid()); + assertEquals(dto.getLatestEventTitle(), event2.getEventTitle()); + assertTrue(dto.getEventCount().equals(2L)); } } @@ -1440,6 +1607,75 @@ public void testGetContactsByPersonUuids() { assertEquals(contact2.getUuid(), contactsByPerson.get(1).getUuid()); } + @Test + public void testMergeContactDoesNotDuplicateSystemComment() throws IOException { + + useNationalUserLogin(); + + UserDto leadUser = creator.createUser("", "", "", "First", "User"); + UserReferenceDto leadUserReference = new UserReferenceDto(leadUser.getUuid()); + PersonDto leadPerson = creator.createPerson("Alex", "Miller"); + PersonReferenceDto leadPersonReference = new PersonReferenceDto(leadPerson.getUuid()); + RDCF leadRdcf = creator.createRDCF(); + CaseDataDto sourceCase = creator.createCase( + leadUserReference, + leadPersonReference, + Disease.CORONAVIRUS, + CaseClassification.SUSPECT, + InvestigationStatus.PENDING, + new Date(), + leadRdcf); + ContactDto leadContact = creator.createContact( + leadUserReference, + leadUserReference, + leadPersonReference, + sourceCase, + new Date(), + new Date(), + Disease.CORONAVIRUS, + leadRdcf); + getContactFacade().save(leadContact); + + // Create otherContact + UserDto otherUser = creator.createUser("", "", "", "Some", "User"); + UserReferenceDto otherUserReference = new UserReferenceDto(otherUser.getUuid()); + PersonDto otherPerson = creator.createPerson("Max", "Smith"); + PersonReferenceDto otherPersonReference = new PersonReferenceDto(otherPerson.getUuid()); + RDCF otherRdcf = creator.createRDCF(); + ContactDto otherContact = creator.createContact( + otherUserReference, + otherUserReference, + otherPersonReference, + sourceCase, + new Date(), + new Date(), + Disease.CORONAVIRUS, + otherRdcf); + ContactReferenceDto otherContactReference = getContactFacade().getReferenceByUuid(otherContact.getUuid()); + ContactDto contact = + creator.createContact(otherUserReference, otherUserReference, otherPersonReference, sourceCase, new Date(), new Date(), null); + Region region = creator.createRegion(""); + District district = creator.createDistrict("", region); + Facility facility = creator.createFacility("", region, district, creator.createCommunity("", district)); + + CaseDataDto resultingCase = getCaseFacade().save( + creator.createCase( + otherUserReference, + otherPersonReference, + Disease.CORONAVIRUS, + CaseClassification.CONFIRMED_NO_SYMPTOMS, + InvestigationStatus.DONE, + new Date(), + otherRdcf)); + otherContact.setResultingCase(resultingCase.toReference()); + getContactFacade().save(otherContact); + + getContactFacade().mergeContact(leadContact.getUuid(), otherContact.getUuid()); + + ContactDto mergedContact = getContactFacade().getByUuid(leadContact.getUuid()); + assertEquals(I18nProperties.getString(Strings.messageSystemFollowUpCanceled), mergedContact.getFollowUpComment()); + } + @Test public void testMergeContact() throws IOException { @@ -1567,8 +1803,8 @@ public void testMergeContact() throws IOException { assertEquals(otherPerson.getBirthWeight(), mergedPerson.getBirthWeight()); // Check merge comments - assertEquals(mergedContact.getAdditionalDetails(), "Test additional details Test other additional details"); - assertEquals(mergedContact.getFollowUpComment(), "Test followup comment Test other followup comment"); + assertEquals("Test additional details Test other additional details", mergedContact.getAdditionalDetails()); + assertEquals("Test followup comment Test other followup comment", mergedContact.getFollowUpComment()); // 4. Test Reference Changes // 4.1 Samples @@ -1630,4 +1866,27 @@ public void testGetContactUsersWithoutUsersLimitedToOthersDiseses() { Assert.assertTrue(userReferenceDtos.contains(limitedCovidNationalUser)); Assert.assertFalse(userReferenceDtos.contains(limitedDengueNationalUser)); } + + private CaseDataDto createCaze(UserDto user, PersonDto cazePerson, RDCFEntities rdcf) { + return creator.createCase( + user.toReference(), + cazePerson.toReference(), + Disease.EVD, + CaseClassification.PROBABLE, + InvestigationStatus.PENDING, + new Date(), + rdcf); + } + + private ContactDto createContact(UserDto user, CaseDataDto caze, RDCF rdcf) { + return creator.createContact( + user.toReference(), + user.toReference(), + creator.createPerson("Contact", "Person").toReference(), + caze, + new Date(), + new Date(), + null, + rdcf); + } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjbTest.java index d0d91ce3ba3..f909366ccaa 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/dashboard/DashboardFacadeEjbTest.java @@ -1,13 +1,13 @@ package de.symeda.sormas.backend.dashboard; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; -import de.symeda.sormas.api.person.PresentCondition; -import de.symeda.sormas.api.user.UserReferenceDto; import org.junit.Test; import de.symeda.sormas.api.Disease; @@ -18,18 +18,25 @@ import de.symeda.sormas.api.dashboard.DashboardCaseDto; import de.symeda.sormas.api.dashboard.DashboardCriteria; import de.symeda.sormas.api.dashboard.DashboardEventDto; +import de.symeda.sormas.api.dashboard.DashboardFacade; import de.symeda.sormas.api.disease.DiseaseBurdenDto; import de.symeda.sormas.api.event.EventDto; import de.symeda.sormas.api.event.EventInvestigationStatus; import de.symeda.sormas.api.event.EventStatus; import de.symeda.sormas.api.event.TypeOfPlace; -import de.symeda.sormas.api.person.PersonDto; import de.symeda.sormas.api.infrastructure.community.CommunityDto; +import de.symeda.sormas.api.person.PersonDto; +import de.symeda.sormas.api.person.PersonReferenceDto; +import de.symeda.sormas.api.person.PresentCondition; +import de.symeda.sormas.api.sample.PathogenTestResultType; +import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.user.UserDto; +import de.symeda.sormas.api.user.UserReferenceDto; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.backend.AbstractBeanTest; import de.symeda.sormas.backend.TestDataCreator; +import de.symeda.sormas.backend.infrastructure.facility.Facility; public class DashboardFacadeEjbTest extends AbstractBeanTest { @@ -72,6 +79,67 @@ public void testGetCasesForDashboard() { assertEquals(1, dashboardCaseDtos.size()); } + @Test + public void testGetTestResultCountByResultType() { + + TestDataCreator.RDCFEntities rdcf = creator.createRDCFEntities(); + UserReferenceDto user = creator.createUser(rdcf).toReference(); + PersonReferenceDto person1 = creator.createPerson("Heinz", "First").toReference(); + PersonReferenceDto person2 = creator.createPerson("Heinz", "Second").toReference(); + CaseDataDto case1 = creator.createCase(user, person1, rdcf); + CaseDataDto case2 = creator.createCase(user, person2, rdcf); + + Date date = new Date(); + DashboardCriteria dashboardCriteria = new DashboardCriteria().region(case1.getResponsibleRegion()) + .district(case1.getDistrict()) + .disease(case1.getDisease()) + .newCaseDateType(NewCaseDateType.REPORT) + .dateBetween(DateHelper.subtractDays(date, 1), DateHelper.addDays(date, 1)); + + DashboardFacade dashboardFacade = getDashboardFacade(); + // no existing samples + Map resultMap = dashboardFacade.getTestResultCountByResultType(dashboardCriteria); + assertEquals(new Long(0), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); + assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); + + // one pending sample with in one case + Facility lab = creator.createFacility("facility", rdcf.region, rdcf.district, rdcf.community); + creator.createSample(case1.toReference(), user, lab); + + resultMap = dashboardFacade.getTestResultCountByResultType(dashboardCriteria); + assertEquals(new Long(1), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); + assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); + assertEquals(new Long(1), resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); + + // one pending sample in each of two cases + creator.createSample(case2.toReference(), user, lab); + + resultMap = dashboardFacade.getTestResultCountByResultType(dashboardCriteria); + assertEquals(new Long(2), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); + assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); + assertEquals(new Long(2), resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); + + // one pending sample in each of two cases + // and one positive sample in one of the two cases + SampleDto sample = creator.createSample(case1.toReference(), user, lab); + sample.setPathogenTestResult(PathogenTestResultType.POSITIVE); + getSampleFacade().saveSample(sample); + + resultMap = dashboardFacade.getTestResultCountByResultType(dashboardCriteria); + assertEquals(new Long(2), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); + assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); + assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); + assertEquals(new Long(1), resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); + assertEquals(new Long(1), resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); + } + @Test public void testDashboardEventListCreation() { diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionServiceTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionServiceTest.java index af70be4eb20..f57ad9d2010 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionServiceTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/deletionconfiguration/CoreEntityDeletionServiceTest.java @@ -16,21 +16,20 @@ import org.junit.Test; import de.symeda.sormas.api.Disease; -import de.symeda.sormas.api.caze.CaseClassification; -import de.symeda.sormas.api.caze.CaseCriteria; import de.symeda.sormas.api.caze.CaseDataDto; -import de.symeda.sormas.api.caze.InvestigationStatus; import de.symeda.sormas.api.common.CoreEntityType; import de.symeda.sormas.api.contact.ContactDto; -import de.symeda.sormas.api.deletionconfiguration.DeletionReference; import de.symeda.sormas.api.document.DocumentRelatedEntityType; import de.symeda.sormas.api.event.EventDto; import de.symeda.sormas.api.event.EventParticipantDto; import de.symeda.sormas.api.immunization.ImmunizationDto; import de.symeda.sormas.api.person.PersonDto; -import de.symeda.sormas.api.person.Sex; import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.symptoms.SymptomState; +import de.symeda.sormas.api.task.TaskContext; +import de.symeda.sormas.api.task.TaskDto; +import de.symeda.sormas.api.task.TaskStatus; +import de.symeda.sormas.api.task.TaskType; import de.symeda.sormas.api.travelentry.TravelEntryDto; import de.symeda.sormas.api.user.UserDto; import de.symeda.sormas.api.user.UserRole; @@ -40,6 +39,9 @@ import de.symeda.sormas.backend.TestDataCreator; import de.symeda.sormas.backend.caze.Case; import de.symeda.sormas.backend.common.ConfigFacadeEjb; +import de.symeda.sormas.backend.contact.Contact; +import de.symeda.sormas.backend.immunization.entity.Immunization; +import de.symeda.sormas.backend.travelentry.TravelEntry; public class CoreEntityDeletionServiceTest extends AbstractBeanTest { @@ -49,52 +51,11 @@ public void setupConfig() { } @Test - public void testCaseAutomaticDeletion() { + public void testCaseAutomaticDeletion() throws IOException { createDeletionConfigurations(); DeletionConfiguration coreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.CASE); - final Date today = new Date(); - final Date tenYearsPlusAgo = DateUtils.addDays(today, (-1) * coreEntityTypeConfig.deletionPeriod - 1); - - TestDataCreator.RDCFEntities rdcf = creator.createRDCFEntities("Region", "District", "Community", "Facility"); - UserDto user = creator - .createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR); - PersonDto cazePerson = creator.createPerson("Case", "Person", Sex.MALE, 1980, 1, 1); - CaseDataDto caze = creator.createCase( - user.toReference(), - cazePerson.toReference(), - Disease.EVD, - CaseClassification.PROBABLE, - InvestigationStatus.PENDING, - tenYearsPlusAgo, - rdcf); - - PersonDto contactPerson = creator.createPerson("Contact", "Person"); - creator.createContact(user.toReference(), user.toReference(), contactPerson.toReference(), caze, tenYearsPlusAgo, tenYearsPlusAgo, null); - - SessionImpl em = (SessionImpl) getEntityManager(); - QueryImplementor query = em.createQuery("select c from cases c where c.uuid=:uuid"); - query.setParameter("uuid", caze.getUuid()); - Case singleResult = (Case) query.getSingleResult(); - singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); - singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); - em.save(singleResult); - - CaseCriteria caseCriteria = new CaseCriteria(); - caseCriteria.deleted(false); - - assertEquals(1, getCaseFacade().count(caseCriteria)); - - useSystemUser(); - getCoreEntityDeletionService().executeAutomaticDeletion(); - - assertEquals(0, getCaseFacade().count(caseCriteria)); - } - - @Test - public void testCasePermanentDeletion() throws IOException { - TestDataCreator.RDCF rdcf = creator.createRDCF(); UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); PersonDto person = creator.createPerson(); @@ -160,21 +121,29 @@ public void testCasePermanentDeletion() throws IOException { visit.getSymptoms().setAnorexiaAppetiteLoss(SymptomState.YES); getVisitFacade().saveVisit(visit); - assertEquals(2, getCaseService().count()); + final Date tenYearsPlusAgo = DateUtils.addDays(new Date(), (-1) * coreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select c from cases c where c.uuid=:uuid"); + query.setParameter("uuid", caze.getUuid()); + Case singleResult = (Case) query.getSingleResult(); + singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em.save(singleResult); - getCaseFacade().delete(caze.getUuid()); + assertEquals(2, getCaseService().count()); useSystemUser(); - getCoreEntityDeletionService().executePermanentDeletion(); + getCoreEntityDeletionService().executeAutomaticDeletion(); loginWith(user); ContactDto resultingContactUpdated = getContactFacade().getByUuid(resultingContact.getUuid()); - assertEquals(0, getCaseService().count()); + assertEquals(1, getCaseService().count()); + assertEquals(duplicateCase.getUuid(), getCaseService().getAll().get(0).getUuid()); assertEquals(0, getClinicalVisitService().count()); assertEquals(0, getTreatmentService().count()); assertEquals(0, getPrescriptionService().count()); - assertEquals(2, getSampleService().count()); + assertEquals(1, getSampleService().count()); assertEquals(1, getVisitService().count()); assertNull(getSampleFacade().getSampleByUuid(multiSample.getUuid()).getAssociatedCase()); assertEquals(0, getSurveillanceReportService().count()); @@ -190,7 +159,10 @@ public void testCasePermanentDeletion() throws IOException { } @Test - public void testCaseVisitPermanentDeletion() { + public void testCaseVisitAutomaticDeletion() { + + createDeletionConfigurations(); + DeletionConfiguration coreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.CASE); TestDataCreator.RDCF rdcf = creator.createRDCF(); UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); @@ -201,35 +173,297 @@ public void testCaseVisitPermanentDeletion() { visit.getSymptoms().setAnorexiaAppetiteLoss(SymptomState.YES); getVisitFacade().saveVisit(visit); - assertEquals(1, getCaseService().count()); + final Date tenYearsPlusAgo = DateUtils.addDays(new Date(), (-1) * coreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select c from cases c where c.uuid=:uuid"); + query.setParameter("uuid", caze.getUuid()); + Case singleResult = (Case) query.getSingleResult(); + singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em.save(singleResult); - getCaseFacade().delete(caze.getUuid()); + assertEquals(1, getCaseService().count()); useSystemUser(); - getCoreEntityDeletionService().executePermanentDeletion(); + getCoreEntityDeletionService().executeAutomaticDeletion(); loginWith(user); assertEquals(0, getCaseService().count()); assertEquals(0, getVisitService().count()); } - private void createDeletionConfigurations() { - create(CoreEntityType.CASE); - create(CoreEntityType.CONTACT); - create(CoreEntityType.EVENT); - create(CoreEntityType.EVENT_PARTICIPANT); - create(CoreEntityType.IMMUNIZATION); - create(CoreEntityType.TRAVEL_ENTRY); + @Test + public void testImmunizationAutomaticDeletion() { + + createDeletionConfigurations(); + DeletionConfiguration coreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.IMMUNIZATION); + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + ImmunizationDto immunization = creator.createImmunization(Disease.EVD, person.toReference(), user.toReference(), rdcf); + creator.createVaccination(user.toReference(), immunization.toReference()); + + final Date tenYearsPlusAgo = DateUtils.addDays(new Date(), (-1) * coreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select i from immunization i where i.uuid=:uuid"); + query.setParameter("uuid", immunization.getUuid()); + Immunization singleResult = (Immunization) query.getSingleResult(); + singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em.save(singleResult); + + assertEquals(1, getImmunizationService().count()); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(0, getImmunizationService().count()); + assertEquals(0, getVaccinationService().count()); + } + + @Test + public void testTravelEntryAutomaticDeletion() { + + createDeletionConfigurations(); + DeletionConfiguration coreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.TRAVEL_ENTRY); + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + TravelEntryDto travelEntry = creator.createTravelEntry(person.toReference(), user.toReference(), rdcf, null); + + final Date tenYearsPlusAgo = DateUtils.addDays(new Date(), (-1) * coreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select t from travelentry t where t.uuid=:uuid"); + query.setParameter("uuid", travelEntry.getUuid()); + TravelEntry singleResult = (TravelEntry) query.getSingleResult(); + singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em.save(singleResult); + + assertEquals(1, getTravelEntryService().count()); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(0, getTravelEntryService().count()); } - private DeletionConfiguration create(CoreEntityType coreEntityType) { - DeletionConfigurationService deletionConfigurationService = getBean(DeletionConfigurationService.class); + @Test + public void testPersonAutomaticDeletion() { - DeletionConfiguration entity = new DeletionConfiguration(); - entity.setEntityType(coreEntityType); - entity.setDeletionReference(DeletionReference.CREATION); - entity.setDeletionPeriod(3650); - deletionConfigurationService.ensurePersisted(entity); - return entity; + createDeletionConfigurations(); + DeletionConfiguration caseCoreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.CASE); + DeletionConfiguration immunizationCoreEntityTypeConfig = + getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.IMMUNIZATION); + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + CaseDataDto caze = creator.createCase(user.toReference(), person.toReference(), rdcf); + ImmunizationDto immunization = creator.createImmunization(Disease.EVD, person.toReference(), user.toReference(), rdcf); + + final Date tenYearsPlusAgoCases = DateUtils.addDays(new Date(), (-1) * caseCoreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select c from cases c where c.uuid=:uuid"); + query.setParameter("uuid", caze.getUuid()); + Case singleResultCase = (Case) query.getSingleResult(); + singleResultCase.setCreationDate(new Timestamp(tenYearsPlusAgoCases.getTime())); + singleResultCase.setChangeDate(new Timestamp(tenYearsPlusAgoCases.getTime())); + em.save(singleResultCase); + + assertEquals(1, getPersonService().count()); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(1, getPersonService().count()); + + final Date tenYearsPlusAgoContacts = DateUtils.addDays(new Date(), (-1) * immunizationCoreEntityTypeConfig.deletionPeriod - 1); + em = (SessionImpl) getEntityManager(); + query = em.createQuery("select i from immunization i where i.uuid=:uuid"); + query.setParameter("uuid", immunization.getUuid()); + Immunization singleResultImmunization = (Immunization) query.getSingleResult(); + singleResultImmunization.setCreationDate(new Timestamp(tenYearsPlusAgoContacts.getTime())); + singleResultImmunization.setChangeDate(new Timestamp(tenYearsPlusAgoContacts.getTime())); + em.save(singleResultImmunization); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(0, getPersonService().count()); + } + + @Test + public void testAutomaticManuallyDeletedEntitiesDeletion() { + + createDeletionConfigurations(); + DeletionConfiguration deletionConfig = getDeletionConfigurationService().getCoreEntityTypeManualDeletionConfig(CoreEntityType.IMMUNIZATION); + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + ImmunizationDto immunization = creator.createImmunization(Disease.EVD, person.toReference(), user.toReference(), rdcf); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(1, getImmunizationService().count()); + + getImmunizationFacade().delete(immunization.getUuid()); + + assertEquals(1, getImmunizationService().count()); + + final Date ninetyDaysPlusAgo = DateUtils.addDays(new Date(), (-1) * deletionConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("update immunization i set changedate=:date where i.uuid=:uuid"); + em.getTransaction().begin(); + query.setParameter("date", new Timestamp(ninetyDaysPlusAgo.getTime())); + query.setParameter("uuid", immunization.getUuid()); + query.executeUpdate(); + em.getTransaction().commit(); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(0, getImmunizationService().count()); + } + + @Test + public void testContactPermanentDeletion() throws IOException { + createDeletionConfigurations(); + DeletionConfiguration coreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.CONTACT); + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + + ContactDto contactDto = creator.createContact(user.toReference(), person.toReference(), Disease.CORONAVIRUS); + + TaskDto taskDto = creator + .createTask(TaskContext.CONTACT, TaskType.CONTACT_FOLLOW_UP, TaskStatus.PENDING, null, contactDto.toReference(), null, new Date(), null); + + SampleDto sample = creator.createSample( + contactDto.toReference(), + user.toReference(), + rdcf.facility, + sampleDto -> sampleDto.setAssociatedContact(contactDto.toReference())); + + VisitDto visitDto = creator.createVisit(contactDto.getDisease(), contactDto.getPerson(), contactDto.getReportDateTime()); + + assertEquals(1, getContactService().count()); + assertEquals(1, getTaskFacade().getAllByContact(contactDto.toReference()).size()); + assertEquals(1, getSampleService().count()); + assertEquals(1, getVisitService().count()); + + final Date tenYearsPlusAgo = DateUtils.addDays(new Date(), (-1) * coreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select i from contact i where i.uuid=:uuid"); + query.setParameter("uuid", contactDto.getUuid()); + Contact singleResult = (Contact) query.getSingleResult(); + singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em.save(singleResult); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(0, getContactService().count()); + assertEquals(0, getTaskFacade().getAllByContact(contactDto.toReference()).size()); + assertEquals(0, getSampleService().count()); + assertEquals(0, getVisitService().count()); + } + + @Test + public void testPermanentDeletionOfVisitLinkedToMultipleContacts() throws IOException { + createDeletionConfigurations(); + DeletionConfiguration coreEntityTypeConfig = getDeletionConfigurationService().getCoreEntityTypeConfig(CoreEntityType.CONTACT); + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + + ContactDto contactDto = creator.createContact(user.toReference(), person.toReference(), Disease.CORONAVIRUS); + + TaskDto taskDto = creator + .createTask(TaskContext.CONTACT, TaskType.CONTACT_FOLLOW_UP, TaskStatus.PENDING, null, contactDto.toReference(), null, new Date(), null); + + SampleDto sample = creator.createSample( + contactDto.toReference(), + user.toReference(), + rdcf.facility, + sampleDto -> sampleDto.setAssociatedContact(contactDto.toReference())); + + VisitDto visitDto = creator.createVisit(contactDto.getDisease(), contactDto.getPerson(), contactDto.getReportDateTime()); + + assertEquals(1, getContactService().count()); + assertEquals(1, getTaskFacade().getAllActiveUuids().size()); + assertEquals(1, getTaskFacade().getAllByContact(contactDto.toReference()).size()); + assertEquals(1, getSampleService().count()); + assertEquals(1, getVisitService().count()); + + //create second contact with the same person + ContactDto contactDto2 = creator.createContact(user.toReference(), person.toReference(), Disease.CORONAVIRUS); + + TaskDto taskDto2 = creator + .createTask(TaskContext.CONTACT, TaskType.CONTACT_FOLLOW_UP, TaskStatus.PENDING, null, contactDto2.toReference(), null, new Date(), null); + SampleDto sample2 = creator.createSample( + contactDto2.toReference(), + user.toReference(), + rdcf.facility, + sampleDto -> sampleDto.setAssociatedContact(contactDto2.toReference())); + + VisitDto visitDto2 = creator.createVisit(contactDto2.getDisease(), contactDto2.getPerson(), contactDto2.getReportDateTime()); + + assertEquals(2, getContactService().count()); + assertEquals(2, getTaskFacade().getAllActiveUuids().size()); + assertEquals(1, getTaskFacade().getAllByContact(contactDto.toReference()).size()); + assertEquals(1, getTaskFacade().getAllByContact(contactDto2.toReference()).size()); + assertEquals(2, getSampleService().count()); + assertEquals(2, getVisitService().count()); + + final Date tenYearsPlusAgo = DateUtils.addDays(new Date(), (-1) * coreEntityTypeConfig.deletionPeriod - 1); + SessionImpl em = (SessionImpl) getEntityManager(); + QueryImplementor query = em.createQuery("select i from contact i where i.uuid=:uuid"); + query.setParameter("uuid", contactDto.getUuid()); + Contact singleResult = (Contact) query.getSingleResult(); + singleResult.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em.save(singleResult); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(1, getContactService().count()); + assertEquals(1, getTaskFacade().getAllActiveUuids().size()); + assertEquals(1, getTaskFacade().getAllByContact(contactDto2.toReference()).size()); + assertEquals(1, getSampleService().count()); + assertEquals(2, getVisitService().count()); + + SessionImpl em2 = (SessionImpl) getEntityManager(); + QueryImplementor query2 = em2.createQuery("select i from contact i where i.uuid=:uuid"); + query2.setParameter("uuid", contactDto2.getUuid()); + Contact singleResult2 = (Contact) query2.getSingleResult(); + singleResult2.setCreationDate(new Timestamp(tenYearsPlusAgo.getTime())); + singleResult2.setChangeDate(new Timestamp(tenYearsPlusAgo.getTime())); + em2.save(singleResult2); + + useSystemUser(); + getCoreEntityDeletionService().executeAutomaticDeletion(); + loginWith(user); + + assertEquals(0, getContactService().count()); + assertEquals(0, getTaskFacade().getAllActiveUuids().size()); + assertEquals(0, getSampleService().count()); + assertEquals(0, getVisitService().count()); } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/docgeneration/EventDocumentFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/docgeneration/EventDocumentFacadeEjbTest.java index 13d376ffb2a..8d57340462c 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/docgeneration/EventDocumentFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/docgeneration/EventDocumentFacadeEjbTest.java @@ -76,7 +76,7 @@ public void setup() throws ParseException, URISyntaxException { EventParticipantDto eventParticipantDto1 = EventParticipantDto.build(eventDto.toReference(), user.toReference()); eventParticipantDto1.setPerson(personDto1); eventParticipantDto1.setInvolvementDescription("involved"); - getEventParticipantFacade().saveEventParticipant(eventParticipantDto1); + getEventParticipantFacade().save(eventParticipantDto1); PersonDto personDto2 = PersonDto.build(); personDto2.setFirstName("Guy"); @@ -89,7 +89,7 @@ public void setup() throws ParseException, URISyntaxException { EventParticipantDto eventParticipantDto2 = EventParticipantDto.build(eventDto.toReference(), user.toReference()); eventParticipantDto2.setPerson(personDto2); eventParticipantDto2.setInvolvementDescription("involved"); - getEventParticipantFacade().saveEventParticipant(eventParticipantDto2); + getEventParticipantFacade().save(eventParticipantDto2); PersonDto personDto3 = PersonDto.build(); personDto3.setFirstName("Georges"); @@ -102,7 +102,7 @@ public void setup() throws ParseException, URISyntaxException { EventParticipantDto eventParticipantDto3 = EventParticipantDto.build(eventDto.toReference(), user.toReference()); eventParticipantDto3.setPerson(personDto3); eventParticipantDto3.setInvolvementDescription("involved"); - getEventParticipantFacade().saveEventParticipant(eventParticipantDto3); + getEventParticipantFacade().save(eventParticipantDto3); ActionDto actionDto1 = new ActionDto(); actionDto1.setTitle("An action"); diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventGroupFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventGroupFacadeEjbTest.java new file mode 100644 index 00000000000..f7e1ae90527 --- /dev/null +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventGroupFacadeEjbTest.java @@ -0,0 +1,55 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2021 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.backend.event; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertNull; + +import java.util.Collections; + +import org.junit.Test; + +import de.symeda.sormas.api.event.EventDto; +import de.symeda.sormas.api.event.EventGroupDto; +import de.symeda.sormas.api.user.UserReferenceDto; +import de.symeda.sormas.backend.AbstractBeanTest; +import de.symeda.sormas.backend.TestDataCreator.RDCF; +import de.symeda.sormas.backend.event.EventGroupFacadeEjb.EventGroupFacadeEjbLocal; + +public class EventGroupFacadeEjbTest extends AbstractBeanTest { + + @Test + public void testDeleteEventGroup() { + + EventGroupFacadeEjb cut = getBean(EventGroupFacadeEjbLocal.class); + + RDCF rdcf = creator.createRDCF(); + UserReferenceDto user = creator.createUser(rdcf).toReference(); + + EventDto event = creator.createEvent(user); + + EventGroupDto group = new EventGroupDto(); + group.setName("GroupA"); + group = cut.saveEventGroup(group); + cut.linkEventsToGroup(Collections.singletonList(event.toReference()), group.toReference()); + + assertThat(cut.getEventGroupByUuid(group.getUuid()), equalTo(group)); + + cut.deleteEventGroup(group.getUuid()); + assertNull(cut.getEventGroupByUuid(group.getUuid())); + } +} diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbPseudonymizationTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbPseudonymizationTest.java index 370e26cc0b4..a7bb89d871c 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbPseudonymizationTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbPseudonymizationTest.java @@ -126,7 +126,7 @@ public void testUpdateOutsideJurisdiction() { assertThat(savedPerson.getAddress().getAdditionalInformation(), is(nullValue())); assertThat(savedPerson.getAddress().getCity(), is(nullValue())); - getEventParticipantFacade().saveEventParticipant(participant); + getEventParticipantFacade().save(participant); EventParticipant savedParticipant = getEventParticipantService().getByUuid(participant.getUuid()); // assertThat(savedParticipant.getInvolvementDescription(), is("Test involvement descr")); @@ -148,7 +148,7 @@ public void testUpdateWithPseudonymizedDto() { participant.getPerson().getAddress().setAdditionalInformation(null); participant.getPerson().getAddress().setCity(null); - getEventParticipantFacade().saveEventParticipant(participant); + getEventParticipantFacade().save(participant); EventParticipant saved = getEventParticipantService().getByUuid(participant.getUuid()); diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbTest.java index d7e8265fbff..7da63ebd5a4 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbTest.java @@ -25,12 +25,14 @@ import static org.hamcrest.Matchers.isEmptyOrNullString; import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; +import de.symeda.sormas.api.caze.VaccinationInfoSource; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.Assert; @@ -65,26 +67,11 @@ public class EventParticipantFacadeEjbTest extends AbstractBeanTest { @Test - public void testGetExportList() { - + public void testGetExportListWithRelevantVaccinations() { TestDataCreator.RDCF rdcf = creator.createRDCF("Region", "District", "Community", "Facility"); - UserDto user = creator - .createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR); - EventDto event = creator.createEvent( - EventStatus.SIGNAL, - EventInvestigationStatus.PENDING, - "Title", - "Description", - "First", - "Name", - "12345", - TypeOfPlace.PUBLIC_PLACE, - DateHelper.subtractDays(new Date(), 1), - new Date(), - user.toReference(), - user.toReference(), - Disease.EVD, - rdcf.district); + UserDto user = createUser(rdcf); + EventDto event = createEvent(user, rdcf); + PersonDto eventPerson = creator.createPerson("Event", "Organizer"); creator.createEventParticipant(event.toReference(), eventPerson, "event Director", user.toReference()); @@ -115,27 +102,103 @@ public void testGetExportList() { DateHelper.subtractDays(new Date(), 7), null, null); - VaccinationDto firstVaccination = creator.createVaccination( + + VaccinationDto firstVaccination = creator.createVaccinationWithDetails( event.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), DateHelper.subtractDays(new Date(), 7), Vaccine.OXFORD_ASTRA_ZENECA, - VaccineManufacturer.ASTRA_ZENECA); - creator.createVaccination( + VaccineManufacturer.ASTRA_ZENECA, + VaccinationInfoSource.UNKNOWN, + "inn1", + "123", + "code123", + "3"); + + VaccinationDto secondVaccination = creator.createVaccinationWithDetails( event.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), DateHelper.subtractDays(new Date(), 4), Vaccine.MRNA_1273, - VaccineManufacturer.MODERNA); - VaccinationDto thirdVaccination = creator.createVaccination( + VaccineManufacturer.MODERNA, + VaccinationInfoSource.UNKNOWN, + "inn2", + "456", + "code456", + "2"); + + VaccinationDto thirdVaccination = creator.createVaccinationWithDetails( event.getReportingUser(), immunization.toReference(), HealthConditionsDto.build(), new Date(), Vaccine.COMIRNATY, - VaccineManufacturer.BIONTECH_PFIZER); + VaccineManufacturer.BIONTECH_PFIZER, + VaccinationInfoSource.UNKNOWN, + "inn3", + "789", + "code789", + "1"); + + EventParticipantCriteria eventParticipantCriteria = new EventParticipantCriteria(); + eventParticipantCriteria.withEvent(event.toReference()); + + List results = + getEventParticipantFacade().getExportList(eventParticipantCriteria, Collections.emptySet(), 0, 100, Language.EN, null); + EventParticipantExportDto exportDto = results.get(0); + + // List should have two entries + assertThat(results, Matchers.hasSize(2)); + assertEquals(VaccinationStatus.VACCINATED, exportDto.getVaccinationStatus()); + assertEquals(firstVaccination.getVaccinationDate(), exportDto.getFirstVaccinationDate()); + assertEquals(secondVaccination.getVaccineName(), exportDto.getVaccineName()); + assertEquals(secondVaccination.getVaccinationDate(), exportDto.getLastVaccinationDate()); + assertEquals(secondVaccination.getVaccinationInfoSource(), exportDto.getVaccinationInfoSource()); + assertEquals(secondVaccination.getVaccineInn(), exportDto.getVaccineInn()); + assertEquals(secondVaccination.getVaccineBatchNumber(), exportDto.getVaccineBatchNumber()); + assertEquals(secondVaccination.getVaccineAtcCode(), exportDto.getVaccineAtcCode()); + assertEquals(secondVaccination.getVaccineDose(), exportDto.getVaccinationDoses()); + } + + @Test + public void testGetExportListWithoutRelevantVaccinations() { + TestDataCreator.RDCF rdcf = creator.createRDCF("Region", "District", "Community", "Facility"); + UserDto user = createUser(rdcf); + EventDto event = createEvent(user, rdcf); + + PersonDto eventPerson = creator.createPerson("Event", "Organizer"); + creator.createEventParticipant(event.toReference(), eventPerson, "event Director", user.toReference()); + + PersonDto eventPerson1 = creator.createPerson("Event", "Participant"); + creator.createEventParticipant(event.toReference(), eventPerson1, "event fan", user.toReference()); + + ImmunizationDto immunization = creator.createImmunization( + event.getDisease(), + eventPerson.toReference(), + event.getReportingUser(), + ImmunizationStatus.ACQUIRED, + MeansOfImmunization.VACCINATION, + ImmunizationManagementStatus.COMPLETED, + rdcf, + DateHelper.subtractDays(new Date(), 10), + DateHelper.subtractDays(new Date(), 5), + DateHelper.subtractDays(new Date(), 1), + null); + + VaccinationDto vaccination = creator.createVaccinationWithDetails( + event.getReportingUser(), + immunization.toReference(), + HealthConditionsDto.build(), + DateHelper.addDays(new Date(), 1), + Vaccine.MRNA_1273, + VaccineManufacturer.MODERNA, + VaccinationInfoSource.UNKNOWN, + "inn2", + "456", + "code456", + "2"); EventParticipantCriteria eventParticipantCriteria = new EventParticipantCriteria(); eventParticipantCriteria.withEvent(event.toReference()); @@ -145,10 +208,16 @@ public void testGetExportList() { // List should have two entries assertThat(results, Matchers.hasSize(2)); - assertEquals(VaccinationStatus.VACCINATED, results.get(0).getVaccinationStatus()); - assertEquals(thirdVaccination.getVaccineName(), results.get(0).getVaccineName()); - assertEquals(firstVaccination.getVaccinationDate(), results.get(0).getFirstVaccinationDate()); - assertEquals(thirdVaccination.getVaccinationDate(), results.get(0).getLastVaccinationDate()); + EventParticipantExportDto exportDto = results.get(0); + + assertNull(exportDto.getFirstVaccinationDate()); + assertNull(exportDto.getVaccineName()); + assertNull(exportDto.getLastVaccinationDate()); + assertNull(exportDto.getVaccinationInfoSource()); + assertNull(exportDto.getVaccineInn()); + assertNull(exportDto.getVaccineBatchNumber()); + assertNull(exportDto.getVaccineAtcCode()); + assertEquals(exportDto.getVaccinationDoses(), ""); } @Test @@ -160,7 +229,7 @@ public void testCreateWithoutUuid() { eventParticipant.setPerson(creator.createPerson()); eventParticipant.setReportingUser(user.toReference()); - EventParticipantDto savedEventParticipant = getEventParticipantFacade().saveEventParticipant(eventParticipant); + EventParticipantDto savedEventParticipant = getEventParticipantFacade().save(eventParticipant); MatcherAssert.assertThat(savedEventParticipant.getUuid(), not(isEmptyOrNullString())); } @@ -208,7 +277,7 @@ public void testGetByPersonUuids() { } @Test - public void testExistEventParticipantWithDeletedFalse(){ + public void testExistEventParticipantWithDeletedFalse() { RDCFEntities rdcf = creator.createRDCFEntities(); UserDto user = creator.createUser(rdcf, UserRole.SURVEILLANCE_SUPERVISOR); EventDto event = creator.createEvent(user.toReference()); @@ -221,7 +290,7 @@ public void testExistEventParticipantWithDeletedFalse(){ } @Test - public void testExistEventParticipantWithDeletedTrue(){ + public void testExistEventParticipantWithDeletedTrue() { RDCFEntities rdcf = creator.createRDCFEntities(); UserDto user = creator.createUser(rdcf, UserRole.SURVEILLANCE_SUPERVISOR); EventDto event = creator.createEvent(user.toReference()); @@ -233,4 +302,27 @@ public void testExistEventParticipantWithDeletedTrue(){ boolean exist = getEventParticipantFacade().exists(person.getUuid(), event.getUuid()); Assert.assertFalse(exist); } + + private UserDto createUser(TestDataCreator.RDCF rdcf) { + return creator + .createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR); + } + + private EventDto createEvent(UserDto user, TestDataCreator.RDCF rdcf) { + return creator.createEvent( + EventStatus.SIGNAL, + EventInvestigationStatus.PENDING, + "Title", + "Description", + "First", + "Name", + "12345", + TypeOfPlace.PUBLIC_PLACE, + DateHelper.subtractDays(new Date(), 1), + new Date(), + user.toReference(), + user.toReference(), + Disease.EVD, + rdcf.district); + } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjbTest.java index f649c9f6162..3016cbd025e 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/immunization/ImmunizationFacadeEjbTest.java @@ -16,9 +16,6 @@ package de.symeda.sormas.backend.immunization; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.sql.Timestamp; import java.util.Arrays; @@ -77,8 +74,13 @@ public void init() { districtUser2 = creator .createUser(rdcf2.region.getUuid(), rdcf2.district.getUuid(), rdcf2.facility.getUuid(), "Surv", "Off2", UserRole.SURVEILLANCE_OFFICER); - covidLimitedDistrictUser = creator - .createUser(rdcf1.region.getUuid(), rdcf1.district.getUuid(), rdcf1.facility.getUuid(), "Surv", "OffCovid", UserRole.SURVEILLANCE_OFFICER); + covidLimitedDistrictUser = creator.createUser( + rdcf1.region.getUuid(), + rdcf1.district.getUuid(), + rdcf1.facility.getUuid(), + "Surv", + "OffCovid", + UserRole.SURVEILLANCE_OFFICER); covidLimitedDistrictUser.setLimitedDisease(Disease.CORONAVIRUS); getUserFacade().saveUser(covidLimitedDistrictUser); } @@ -101,35 +103,6 @@ public void testSaveAndGetByUuid() { assertEquals(immunizationDto.getPerson(), actual.getPerson()); } - @Test - public void testPermanentDelete() { - loginWith(nationalUser); - - final PersonDto person = creator.createPerson("John", "Doe"); - final ImmunizationDto immunizationDto = creator.createImmunization( - Disease.CORONAVIRUS, - person.toReference(), - nationalUser.toReference(), - ImmunizationStatus.ACQUIRED, - MeansOfImmunization.VACCINATION, - ImmunizationManagementStatus.COMPLETED, - rdcf1); - final String immunizationUuid = immunizationDto.getUuid(); - - assertEquals(immunizationUuid, getImmunizationFacade().getByUuid(immunizationUuid).getUuid()); - assertEquals(1, getImmunizationFacade().count(new ImmunizationCriteria())); - - getImmunizationFacade().delete(immunizationUuid); - - assertEquals(0, getImmunizationFacade().count(new ImmunizationCriteria())); - assertTrue(getImmunizationFacade().exists(immunizationUuid)); - - getImmunizationFacade().executePermanentDeletion(10); - - assertEquals(0, getImmunizationFacade().count(new ImmunizationCriteria())); - assertFalse(getImmunizationFacade().exists(immunizationUuid)); - } - @Test public void testGetAllSince() { loginWith(nationalUser); @@ -576,7 +549,8 @@ public void testUpdateImmunizationStatusBasedOnVaccinationsCompleted() { final PersonDto person = creator.createPerson("John", "Doe"); - ImmunizationDto immunization = getImmunizationFacade().save(creator.createImmunizationDto( + ImmunizationDto immunization = getImmunizationFacade().save( + creator.createImmunizationDto( Disease.DENGUE, person.toReference(), nationalUser.toReference(), @@ -664,22 +638,22 @@ public void testGetIndexListIsFilteredByCurrentUserLimitedDisease() { final PersonDto person = creator.createPerson("John", "Doe"); creator.createImmunization( - Disease.ANTHRAX, - person.toReference(), - nationalUser.toReference(), - ImmunizationStatus.ACQUIRED, - MeansOfImmunization.VACCINATION, - ImmunizationManagementStatus.COMPLETED, - rdcf1); + Disease.ANTHRAX, + person.toReference(), + nationalUser.toReference(), + ImmunizationStatus.ACQUIRED, + MeansOfImmunization.VACCINATION, + ImmunizationManagementStatus.COMPLETED, + rdcf1); creator.createImmunization( - Disease.CORONAVIRUS, - person.toReference(), - nationalUser.toReference(), - ImmunizationStatus.ACQUIRED, - MeansOfImmunization.VACCINATION, - ImmunizationManagementStatus.COMPLETED, - rdcf1); + Disease.CORONAVIRUS, + person.toReference(), + nationalUser.toReference(), + ImmunizationStatus.ACQUIRED, + MeansOfImmunization.VACCINATION, + ImmunizationManagementStatus.COMPLETED, + rdcf1); loginWith(districtUser1); Assert.assertEquals(2, getImmunizationFacade().getIndexList(new ImmunizationCriteria(), 0, 100, null).size()); diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbMappingTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbMappingTest.java index af0e64c8fcf..3edae02fb54 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbMappingTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbMappingTest.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.Date; +import de.symeda.sormas.api.labmessage.ExternalMessageType; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; @@ -92,6 +93,7 @@ public void testFromDto() { source.setSampleOverallTestResult(PathogenTestResultType.POSITIVE); source.setSample(sampleRef); source.setAssignee(assignee.toReference()); + source.setType(ExternalMessageType.LAB_MESSAGE); LabMessage result = sut.fromDto(source, null, true); @@ -125,6 +127,7 @@ public void testFromDto() { assertEquals(source.getSampleOverallTestResult(), result.getSampleOverallTestResult()); assertEquals(sample, result.getSample()); assertEquals(assignee.getUuid(), result.getAssignee().getUuid()); + assertEquals(source.getType(), result.getType()); } @Test @@ -178,6 +181,7 @@ public void testToDto() { source.setSampleOverallTestResult(PathogenTestResultType.NEGATIVE); source.setSample(sample); source.setAssignee(assignee); + source.setType(ExternalMessageType.PHYSICIANS_REPORT); LabMessageDto result = sut.toDto(source); @@ -211,5 +215,6 @@ public void testToDto() { assertEquals(source.getSampleOverallTestResult(), result.getSampleOverallTestResult()); assertEquals(source.getSample().toReference(), result.getSample()); assertEquals(assignee.getUuid(), result.getAssignee().getUuid()); + assertEquals(source.getType(), result.getType()); } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbTest.java index 10313ee3f55..bf5d1e47002 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjbTest.java @@ -24,20 +24,20 @@ import java.util.List; +import org.junit.Test; + import de.symeda.sormas.api.caze.CaseDataDto; import de.symeda.sormas.api.contact.ContactDto; import de.symeda.sormas.api.event.EventDto; import de.symeda.sormas.api.event.EventParticipantDto; +import de.symeda.sormas.api.labmessage.LabMessageDto; import de.symeda.sormas.api.labmessage.LabMessageStatus; import de.symeda.sormas.api.person.PersonDto; import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.user.UserDto; import de.symeda.sormas.api.user.UserRole; -import de.symeda.sormas.backend.TestDataCreator; -import org.junit.Test; - -import de.symeda.sormas.api.labmessage.LabMessageDto; import de.symeda.sormas.backend.AbstractBeanTest; +import de.symeda.sormas.backend.TestDataCreator; public class LabMessageFacadeEjbTest extends AbstractBeanTest { @@ -82,13 +82,6 @@ public void testGetByUuid() { LabMessageDto result = getLabMessageFacade().getByUuid(labMessage.getUuid()); assertThat(result, equalTo(labMessage)); - - getLabMessageFacade().deleteLabMessage(labMessage.getUuid()); - - // deleted lab messages shall still be returned - result = getLabMessageFacade().getByUuid(labMessage.getUuid()); - assertThat(result, equalTo(labMessage)); - } @Test @@ -112,10 +105,6 @@ public void testExistsForwardedLabMessageWith() { }); assertTrue(getLabMessageFacade().existsForwardedLabMessageWith(reportId)); - - getLabMessageFacade().deleteLabMessage(forwardedMessage.getUuid()); - - assertTrue(getLabMessageFacade().existsForwardedLabMessageWith(reportId)); } @Test diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceTest.java index a28ea069d53..18a1e9e2f49 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceTest.java @@ -6,14 +6,15 @@ import java.util.Date; import java.util.List; -import de.symeda.sormas.api.contact.ContactDto; -import de.symeda.sormas.api.event.EventDto; -import de.symeda.sormas.api.event.EventParticipantDto; import org.hamcrest.Matchers; import org.junit.Test; import de.symeda.sormas.api.caze.CaseDataDto; +import de.symeda.sormas.api.contact.ContactDto; +import de.symeda.sormas.api.event.EventDto; +import de.symeda.sormas.api.event.EventParticipantDto; import de.symeda.sormas.api.labmessage.LabMessageDto; +import de.symeda.sormas.api.labmessage.TestReportDto; import de.symeda.sormas.api.person.PersonDto; import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.sample.SampleMaterial; @@ -174,6 +175,17 @@ public void testCountForEventParticipant() { assertEquals(3L, sut.countForEventParticipant(eventParticipant.getUuid())); assertEquals(0L, sut.countForContact(eventParticipant.getUuid())); assertEquals(0L, sut.countForCase(eventParticipant.getUuid())); + } + + @Test + public void testLabMessagePermanentDeletion() { + + LabMessageDto labMessage = creator.createLabMessage(null); + TestReportDto testReport = creator.createTestReport(labMessage.toReference()); + + getLabMessageFacade().deleteLabMessage(labMessage.getUuid()); + assertEquals(0, getLabMessageService().count()); + assertEquals(0, getTestReportService().count()); } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceUnitTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceUnitTest.java index 039ed765286..9de182892cf 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceUnitTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/LabMessageServiceUnitTest.java @@ -1,9 +1,6 @@ package de.symeda.sormas.backend.labmessage; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import javax.persistence.criteria.CriteriaBuilder; @@ -11,9 +8,6 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import de.symeda.sormas.api.labmessage.LabMessageDto; -import de.symeda.sormas.api.labmessage.TestReportDto; -import de.symeda.sormas.api.sample.PathogenTestResultType; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -52,15 +46,4 @@ public void testBuildCriteriaFilter() { assertEquals(predicate, result); } - @Test - public void testCreateDefaultFilter() { - - LabMessageService sut = new LabMessageService(); - when(cb.isFalse(any())).thenReturn(predicate); - - Predicate result = sut.createDefaultFilter(cb, labMessage); - - assertEquals(predicate, result); - } - } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/TestReportServiceUnitTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/TestReportServiceUnitTest.java deleted file mode 100644 index 0badd6bea89..00000000000 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/labmessage/TestReportServiceUnitTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.symeda.sormas.backend.labmessage; - -import de.symeda.sormas.backend.AbstractBeanTest; -import de.symeda.sormas.backend.common.AbstractDomainObject; - -import de.symeda.sormas.api.labmessage.LabMessageDto; -import de.symeda.sormas.api.labmessage.TestReportDto; -import de.symeda.sormas.api.sample.PathogenTestReferenceDto; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import javax.persistence.EntityManager; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.JoinType; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - -import javax.persistence.criteria.Path; -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.Silent.class) -public class TestReportServiceUnitTest extends AbstractBeanTest { - - @Mock - private CriteriaBuilder cb; - @Mock - private Root testReportRoot; - @Mock - private Predicate predicate; - - @Test - public void testCreateDefaultFilter() { - - TestReportService sut = new TestReportService(); - - when(cb.isFalse(any())).thenReturn(predicate); - - Predicate result = sut.createDefaultFilter(cb, testReportRoot); - - assertEquals(predicate, result); - } -} diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/performance/PerformanceLogAnalysisGenerator.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/performance/PerformanceLogAnalysisGenerator.java new file mode 100644 index 00000000000..a96ada36eea --- /dev/null +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/performance/PerformanceLogAnalysisGenerator.java @@ -0,0 +1,373 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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.backend.performance; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.commons.io.FilenameUtils; +import org.jetbrains.annotations.NotNull; + +/** + * PerformanceLogAnalysisGenerator is a tool to generate an analysis of performance log files. + * To analyze a log file, run with argument . If the argument is omitted, an analysis of the example + * log file 'exampleApplication.debug' is generated. + * To enable performance logging, change the log level of the 'PerformanceLoggingInterceptor' to 'TRACE' in the + * SORMAS server's 'logback.xml': + * + * + * + * PerformanceLogAnalysisGenerator generates the following files in 'target/performanceLogAnalysis/': + * + * .html + * .csv + * .txt + * + * Make sure working directory is 'SORMAS-Project/sormas-backend' + */ +public class PerformanceLogAnalysisGenerator { + + private static final Pattern LOG_LINE_PATTERN_START = + Pattern.compile("([^ ]* [^ ]*) TRACE *(.*) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ([^ ]*) with parameters .*$"); + private static final Pattern LOG_LINE_PATTERN_FINISH = + Pattern.compile("([^ ]* [^ ]*) DEBUG *(.*) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in ([0-9]*) ms: (.*)$"); + + //@formatter:off + private static final String HTML_HEADER = "\n" + + "
\n" + + "Performance Log Analysis" + + "\n" + + "
\n" + + "\n" + + "\n"; + private static final String HTML_FOOTER = "
\n" + + "\n" + + "\n"; + //@formatter:on + + public static final int TIME_TRESHOLD_YELLOW = 100; + public static final int TIME_TRESHOLD_ORANGE = 300; + public static final int TIME_TRESHOLD_RED = 1000; + + public static final String OUTPUT_DIRECTORY = "target/performanceLogAnalysis/"; + + private Map> callstacks; + + public static void main(String[] args) throws IOException, URISyntaxException { + + File logFile; + + if (args.length > 0 && args[0] != null) { + logFile = new File(args[0]); + } else { + logFile = new File(PerformanceLogAnalysisGenerator.class.getResource("/performance/exampleApplication.debug").toURI()); + } + + new PerformanceLogAnalysisGenerator().analyzePerformanceLog(logFile); + } + + public void analyzePerformanceLog(File logFile) throws IOException { + + callstacks = new HashMap<>(); + MethodStats allStats = new MethodStats("all"); + + try (BufferedReader reader = new BufferedReader((new FileReader(logFile)))) { + String line; + while ((line = reader.readLine()) != null) { + Matcher matcherStart = LOG_LINE_PATTERN_START.matcher(line); + Matcher matcherFinish = LOG_LINE_PATTERN_FINISH.matcher(line); + if (matcherStart.find()) { + String startThread = matcherStart.group(2); + String startMethod = matcherStart.group(3); + + Stack startCallstack = callstacks.get(startThread); + if (startCallstack == null) { + startCallstack = new Stack<>(); + callstacks.put(startThread, startCallstack); + } + startCallstack.push(startMethod); + } else if (matcherFinish.find()) { + String finishThread = matcherFinish.group(2); + String finishMethod = matcherFinish.group(4); + String finishTime = matcherFinish.group(3); + + Stack finishCallstack = callstacks.get(finishThread); + if (finishCallstack != null && finishMethod.equals(finishCallstack.peek())) { + finishCallstack.pop(); + } + + long callTime = Long.parseLong(finishTime); + allStats.callSub(finishMethod, callTime); + if (finishCallstack != null && !finishCallstack.isEmpty()) { + allStats.getSub(finishCallstack.peek()).callSub(finishMethod, callTime); + } + + } else { + System.out.println("Not recognized:\n" + line); + } + } + + String logFilebasename = FilenameUtils.getBaseName(logFile.getName()); + + List allMethodStats = new ArrayList<>(allStats.subcalls.values()); + Collections.sort(allMethodStats); + + File directory = new File(OUTPUT_DIRECTORY); + if (!directory.exists()) { + directory.mkdirs(); + } + + FileWriter txtFileWriter = new FileWriter(new File(OUTPUT_DIRECTORY + logFilebasename + ".txt")); + for (MethodStats method : allMethodStats) { + txtFileWriter.write(method + "\n"); + } + txtFileWriter.close(); + + FileWriter csvFileWriter = new FileWriter(new File(OUTPUT_DIRECTORY + logFilebasename + ".csv")); + csvFileWriter.write(allStats.getSubCallsCsv()); + csvFileWriter.close(); + + FileWriter htmlFileWriter = new FileWriter(new File(OUTPUT_DIRECTORY + logFilebasename + ".html")); + htmlFileWriter.append(HTML_HEADER); + htmlFileWriter.write("

Performance Log  " + logFile.toURI() + " 

\n\n"); + htmlFileWriter.write("

Methods started but not finished in this log:

\n\n"); + htmlFileWriter.write(getUnfinishedMethodsHtml()); + htmlFileWriter.write("

Time spent per method:

\n\n"); + htmlFileWriter.write(allStats.getSubCallsTable(true)); + htmlFileWriter.append(HTML_FOOTER); + htmlFileWriter.close(); + } + } + + private String getUnfinishedMethodsHtml() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("\n"); + stringBuilder.append("\n"); + + Set unfinishedMethods = new HashSet<>(); + for (Stack stack : callstacks.values()) { + while (!stack.isEmpty()) { + unfinishedMethods.add(stack.pop()); + } + } + + if (unfinishedMethods.isEmpty()) { + stringBuilder.append("\n"); + } else { + List unfinishedMethodsSorted = Arrays.asList(unfinishedMethods.toArray(new String[unfinishedMethods.size()])); + Collections.sort(unfinishedMethodsSorted); + + for (String unfinishedMethod : unfinishedMethodsSorted) { + stringBuilder + .append("\n"); + } + } + + stringBuilder.append("
method
-- all methods completed --
" + "" + unfinishedMethod + "" + "
\n\n"); + + return stringBuilder.toString(); + } + + public static String getId(String prefix, String name) { + return prefix + "_" + name.replaceAll("[^a-zA-Z]", "_"); + } + + private class MethodStats implements Comparable { + + public final String method; + + int calls = 0; + long totalTime = 0; + long maxTime = 0; + long minTime = Long.MAX_VALUE; + + Map subcalls = new HashMap<>(); + + public MethodStats(String method) { + this.method = method; + } + + public void call(long callTime) { + calls++; + totalTime += callTime; + maxTime = Math.max(maxTime, callTime); + minTime = Math.min(minTime, callTime); + } + + public MethodStats getSub(String method) { + MethodStats subMethodStats = subcalls.get(method); + if (subMethodStats == null) { + subMethodStats = new MethodStats(method); + subcalls.put(method, subMethodStats); + } + return subMethodStats; + } + + public void callSub(String method, long callTime) { + MethodStats subMethodStats = subcalls.get(method); + if (subMethodStats == null) { + subMethodStats = new MethodStats(method); + subcalls.put(method, subMethodStats); + } + subMethodStats.call(callTime); + } + + public long meanTime() { + return totalTime / Math.max(1, calls); + } + + public String toString() { + String out = method + " - calls: " + calls + ", subcalls: " + subcalls.size() + ", total: " + totalTime + ", max: " + maxTime + ", min: " + + minTime + ", mean: " + meanTime(); + List subMethods = new ArrayList<>(subcalls.values()); + Collections.sort(subMethods); + for (MethodStats subMethod : subMethods) { + out += "\n " + (subMethod.meanTime() > 300 ? "* " : " ") + subMethod; + } + + return out; + } + + public String getSubCallsCsv() { + if (subcalls.isEmpty()) { + return ""; + } + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("method;calls;subcalls;total;max;min;mean\n"); + List subcallsList = new ArrayList<>(subcalls.values()); + Collections.sort(subcallsList); + for (MethodStats subMethod : subcallsList) { + stringBuilder.append(subMethod.getCsvRow()).append("\n"); + } + return stringBuilder.toString(); + } + + public String getCsvRow() { + return method + ";" + calls + ";" + subcalls.size() + ";" + totalTime + ";" + maxTime + ";" + minTime + ";" + meanTime(); + } + + public String getSubCallsTable(boolean withSubcalls) { + if (subcalls.isEmpty()) { + return "--"; + } + + long overallTotalTime = totalTime; + if (overallTotalTime == 0L) { + for (MethodStats subMethod : subcalls.values()) { + overallTotalTime += subMethod.totalTime; + } + } + + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(""); + stringBuilder.append( + "" + header("method") + header("calls") + header("total") + header("max") + header("min") + header("mean") + + (withSubcalls ? header("subcalls") : "") + ""); + List subcallsList = new ArrayList<>(subcalls.values()); + Collections.sort(subcallsList); + for (MethodStats subMethod : subcallsList) { + stringBuilder.append(subMethod.getTableRow(withSubcalls, overallTotalTime)).append("\n"); + } + stringBuilder.append("
\n"); + return stringBuilder.toString(); + } + + public String getTableRow(boolean withSubcalls, long overallTotalTime) { + + return "" + methodCell(method, withSubcalls) + cell(calls) + totalTimeCell(overallTotalTime) + timeCell(maxTime) + timeCell(minTime) + + timeCell(meanTime()) + // + (withSubcalls ? cell(subcalls.size()) : "") + ""; + + (withSubcalls ? subcallsCell() : "") + ""; + } + + @NotNull + private String subcallsCell() { + if (subcalls.isEmpty()) { + return cell("--"); + } + String minimizeId = getId("minimize", method); + String expandId = getId("expand", method); + String minimizeDiv = "
[+] " + subcalls.size() + + "
"; + String expandDiv = "
[-]" + getSubCallsTable(false) + + "
"; + return cell(minimizeDiv + expandDiv); + } + + private String cell(Object content) { + return "" + content + ""; + } + + private String methodCell(String method, boolean withSubcalls) { + String id = getId("meth", method); + return cell(withSubcalls ? "" + method + "" : "" + method + ""); + } + + private String totalTimeCell(long overallTotalTime) { + String timeColor = String.format("%02X", overallTotalTime > 0L ? Math.min(255L - (200L * totalTime) / overallTotalTime, 255L) : 255L); + String style = " style=\"background: #ff" + timeColor + timeColor + "\""; + return "" + totalTime + ""; + } + + private String timeCell(long time) { + String style = ""; + if (time >= TIME_TRESHOLD_YELLOW) { + style = " style=\"background: #ffee00\""; + } + if (time >= TIME_TRESHOLD_ORANGE) { + style = " style=\"background: #ff9900\""; + } + if (time >= TIME_TRESHOLD_RED) { + style = " style=\"background: #ff0000\""; + } + return "" + time + ""; + } + + private String header(String caption) { + return "" + caption + ""; + } + + @Override + public int compareTo(@NotNull MethodStats o) { + return Long.compare(o.meanTime(), meanTime()); + } + } +} diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/person/PersonFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/person/PersonFacadeEjbTest.java index 02da3ad6c43..786af3f1e7b 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/person/PersonFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/person/PersonFacadeEjbTest.java @@ -95,44 +95,6 @@ public void init() { UserRole.NATIONAL_USER); } - // todo - update this test case as CoreEntityDeletionService permanently deletes other core entities - @Test - public void testPermanentDelete() { - final UserDto user = creator.createUser(rdcf, UserRole.NATIONAL_USER); - user.setRegion(new RegionReferenceDto(rdcf.region.getUuid())); - getUserFacade().saveUser(user); - loginWith(user); - - final PersonDto person = creator.createPerson("James", "Smith", Sex.MALE, 1920, 1, 1); - - ImmunizationDto immunization = creator.createImmunization( - Disease.CORONAVIRUS, - person.toReference(), - user.toReference(), - ImmunizationStatus.ACQUIRED, - MeansOfImmunization.VACCINATION, - ImmunizationManagementStatus.COMPLETED, - rdcf); - - TravelEntryDto travelEntry = - creator.createTravelEntry(person.toReference(), user.toReference(), Disease.CORONAVIRUS, rdcf.region, rdcf.district, rdcf.pointOfEntry); - - Assert.assertEquals(1, getPersonFacade().count(new PersonCriteria())); - - getImmunizationFacade().delete(immunization.getUuid()); - getCoreEntityDeletionService().executePermanentDeletion(); - - Assert.assertEquals(1, getPersonFacade().count(new PersonCriteria())); - Assert.assertTrue(getPersonFacade().exists(person.getUuid())); - - getTravelEntryFacade().delete(travelEntry.getUuid()); - - getCoreEntityDeletionService().executePermanentDeletion(); - - Assert.assertEquals(0, getPersonFacade().count(new PersonCriteria())); - Assert.assertFalse(getPersonFacade().exists(person.getUuid())); - } - /** * Test all {@link PersonAssociation} variants if they work. Also serves to review the generated SQL. */ @@ -694,9 +656,7 @@ public void testGetPersonsAfter() throws InterruptedException { PersonDto person3 = creator.createPerson(); person3 = getPersonFacade().savePerson(person3); - TravelEntryDto travelEntry = creator - .createTravelEntry(person3.toReference(), nationalUser.toReference(), Disease.CORONAVIRUS, rdcf.region, rdcf.district, rdcf.pointOfEntry); - getTravelEntryFacade().save(travelEntry); + creator.createTravelEntry(person3.toReference(), nationalUser.toReference(), Disease.CORONAVIRUS, rdcf.region, rdcf.district, rdcf.pointOfEntry); personsAfterT1 = getPersonFacade().getPersonsAfter(t1); assertEquals(3, personsAfterT1.size()); diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbPseudonymizationTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbPseudonymizationTest.java index c20c259681a..7f97d7ae0d2 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbPseudonymizationTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbPseudonymizationTest.java @@ -18,6 +18,7 @@ package de.symeda.sormas.backend.sample; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.isEmptyString; import static org.hamcrest.Matchers.notNullValue; @@ -75,8 +76,7 @@ public void init() { rdcf2 = creator.createRDCF("Region 2", "District 2", "Community 2", "Facility 2", "Point of entry 2"); user2 = creator .createUser(rdcf2.region.getUuid(), rdcf2.district.getUuid(), rdcf2.facility.getUuid(), "Surv", "Off2", UserRole.SURVEILLANCE_OFFICER); - labUser = creator - .createUser(null, null, null, "Lab", "Off", UserRole.LAB_USER); + labUser = creator.createUser(null, null, null, "Lab", "Off", UserRole.LAB_USER); labUser.setLaboratory(rdcf1.facility); getUserFacade().saveUser(labUser); @@ -154,7 +154,7 @@ public void testGetSampleWithContactInJurisdiction() { SampleDto sample = createContactSample(contact); SampleDto savedSample = getSampleFacade().getSampleByUuid(sample.getUuid()); - assertThat(savedSample.getAssociatedContact().getCaption(), is("James SMITH to case John Doe")); + assertThat(savedSample.getAssociatedContact().getCaption(), containsString("James SMITH to case John Doe")); } @Test @@ -214,7 +214,7 @@ public void testPseudonymizeIndexList() { assertThat(index2.getAssociatedCase().getLastName(), isEmptyString()); SampleIndexDto index3 = indexList.stream().filter(t -> t.getUuid().equals(sample3.getUuid())).findFirst().get(); - assertThat(index3.getAssociatedContact().getCaption(), is("John SMITH")); + assertThat(index3.getAssociatedContact().getCaption(), containsString("John SMITH")); SampleIndexDto index4 = indexList.stream().filter(t -> t.getUuid().equals(sample4.getUuid())).findFirst().get(); assertThat(index4.getAssociatedContact().getCaption(), is(DataHelper.getShortUuid(index4.getAssociatedContact().getUuid()))); diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbTest.java index 7bf0ce7c612..7c8cd0646d6 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleFacadeEjbTest.java @@ -34,8 +34,6 @@ import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import org.hamcrest.MatcherAssert; import org.junit.Assert; @@ -56,7 +54,6 @@ import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.person.PersonDto; -import de.symeda.sormas.api.person.PersonReferenceDto; import de.symeda.sormas.api.sample.AdditionalTestDto; import de.symeda.sormas.api.sample.AdditionalTestingStatus; import de.symeda.sormas.api.sample.PathogenTestDto; @@ -65,19 +62,16 @@ import de.symeda.sormas.api.sample.SampleAssociationType; import de.symeda.sormas.api.sample.SampleCriteria; import de.symeda.sormas.api.sample.SampleDto; -import de.symeda.sormas.api.sample.SampleFacade; import de.symeda.sormas.api.sample.SampleIndexDto; import de.symeda.sormas.api.sample.SampleMaterial; import de.symeda.sormas.api.sample.SampleSimilarityCriteria; import de.symeda.sormas.api.user.UserDto; -import de.symeda.sormas.api.user.UserReferenceDto; import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.api.utils.SortProperty; import de.symeda.sormas.backend.AbstractBeanTest; import de.symeda.sormas.backend.TestDataCreator; import de.symeda.sormas.backend.TestDataCreator.RDCFEntities; -import de.symeda.sormas.backend.infrastructure.facility.Facility; public class SampleFacadeEjbTest extends AbstractBeanTest { @@ -230,12 +224,12 @@ public void testGetIndexListBySampleAssociationType() { final SampleIndexDto sample12 = sampleList1.get(1); Assert.assertEquals(sample.getUuid(), sample12.getUuid()); Assert.assertEquals(contact.getUuid(), sample12.getAssociatedContact().getUuid()); - Assert.assertEquals("Contact PERSON2", sample12.getAssociatedContact().getCaption()); + Assert.assertTrue(sample12.getAssociatedContact().getCaption().startsWith("Contact PERSON2")); final SampleIndexDto sample13 = sampleList1.get(2); Assert.assertEquals(referredSample.getUuid(), sample13.getUuid()); Assert.assertEquals(contact.getUuid(), sample13.getAssociatedContact().getUuid()); - Assert.assertEquals("Contact PERSON2", sample12.getAssociatedContact().getCaption()); + Assert.assertTrue(sample13.getAssociatedContact().getCaption().startsWith("Contact PERSON2")); final SampleIndexDto sample14 = sampleList1.get(3); Assert.assertEquals(sampleOfEventParticipant.getUuid(), sample14.getUuid()); @@ -525,62 +519,6 @@ public void testArchivedSampleNotGettingTransfered() { assertEquals(1, getSampleTestFacade().getAllActiveUuids().size()); } - @Test - public void testGetNewTestResultCountByResultType() { - - RDCFEntities rdcf = creator.createRDCFEntities(); - UserReferenceDto user = creator.createUser(rdcf).toReference(); - PersonReferenceDto person1 = creator.createPerson("Heinz", "First").toReference(); - PersonReferenceDto person2 = creator.createPerson("Heinz", "Second").toReference(); - CaseDataDto case1 = creator.createCase(user, person1, rdcf); - CaseDataDto case2 = creator.createCase(user, person2, rdcf); - - List caseIds = getCaseService().getAllIds(null); - - // no existing samples - SampleFacade sampleFacade = getSampleFacade(); - Map resultMap = sampleFacade.getNewTestResultCountByResultType(caseIds); - assertEquals(new Long(0), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); - assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); - - // one pending sample with in one case - Facility lab = creator.createFacility("facility", rdcf.region, rdcf.district, rdcf.community); - creator.createSample(case1.toReference(), user, lab); - - resultMap = sampleFacade.getNewTestResultCountByResultType(caseIds); - assertEquals(new Long(1), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); - assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); - assertEquals(new Long(1), resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); - - // one pending sample in each of two cases - creator.createSample(case2.toReference(), user, lab); - - resultMap = sampleFacade.getNewTestResultCountByResultType(caseIds); - assertEquals(new Long(2), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); - assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); - assertEquals(new Long(2), resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); - - // one pending sample in each of two cases - // and one positive sample in one of the two cases - SampleDto sample = creator.createSample(case1.toReference(), user, lab); - sample.setPathogenTestResult(PathogenTestResultType.POSITIVE); - sampleFacade.saveSample(sample); - - resultMap = sampleFacade.getNewTestResultCountByResultType(caseIds); - assertEquals(new Long(2), resultMap.values().stream().collect(Collectors.summingLong(Long::longValue))); - assertNull(resultMap.getOrDefault(PathogenTestResultType.INDETERMINATE, null)); - assertNull(resultMap.getOrDefault(PathogenTestResultType.NEGATIVE, null)); - assertEquals(new Long(1), resultMap.getOrDefault(PathogenTestResultType.PENDING, null)); - assertEquals(new Long(1), resultMap.getOrDefault(PathogenTestResultType.POSITIVE, null)); - } - @Test public void testGetByCaseUuids() { diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleServiceTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleServiceTest.java index f677fc27cbc..d0091bdc2d3 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleServiceTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/sample/SampleServiceTest.java @@ -1,17 +1,21 @@ package de.symeda.sormas.backend.sample; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; -import java.util.Arrays; -import java.util.Collections; -import java.util.stream.Collectors; -import java.util.stream.LongStream; +import java.util.List; import org.junit.Test; +import de.symeda.sormas.api.caze.CaseDataDto; +import de.symeda.sormas.api.labmessage.LabMessageDto; +import de.symeda.sormas.api.person.PersonDto; +import de.symeda.sormas.api.sample.SampleDto; +import de.symeda.sormas.api.user.UserDto; +import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.backend.AbstractBeanTest; +import de.symeda.sormas.backend.TestDataCreator; /** * @see SampleService @@ -19,31 +23,36 @@ public class SampleServiceTest extends AbstractBeanTest { @Test - public void testGetNewTestResultCountByResultTypeVariousInClauseCount() { - - SampleService cut = getBean(SampleService.class); - - // 0. Works for 0 cases - assertThat(cut.getNewTestResultCountByResultType(Collections.emptyList()).entrySet(), is(empty())); - assertThat(cut.getNewTestResultCountByResultType(null).entrySet(), is(empty())); - - // 1a. Works for 1 case - assertThat(cut.getNewTestResultCountByResultType(Collections.singletonList(1001L)).entrySet(), is(empty())); - - // 1b. Works for 2 cases - assertThat(cut.getNewTestResultCountByResultType(Arrays.asList(1L, 2L)).entrySet(), is(empty())); - - // 1c. Works for 3 cases - assertThat(cut.getNewTestResultCountByResultType(Arrays.asList(1L, 2L, 1001L)).entrySet(), is(empty())); - - // 2a. Works for 1_000 cases - assertThat( - cut.getNewTestResultCountByResultType(LongStream.rangeClosed(1, 1_000).boxed().collect(Collectors.toList())).entrySet(), - is(empty())); - - // 2b. Works for 100_000 cases - assertThat( - cut.getNewTestResultCountByResultType(LongStream.rangeClosed(1, 100_000).boxed().collect(Collectors.toList())).entrySet(), - is(empty())); + public void testSamplePermanentDeletion() { + + TestDataCreator.RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + PersonDto person = creator.createPerson(); + CaseDataDto caze = creator.createCase(user.toReference(), person.toReference(), rdcf); + SampleDto sample = creator.createSample(caze.toReference(), user.toReference(), rdcf.facility); + SampleDto referralSample = + creator.createSample(caze.toReference(), user.toReference(), rdcf.facility, s -> s.setReferredTo(sample.toReference())); + creator.createPathogenTest(sample.toReference(), caze); + creator.createAdditionalTest(sample.toReference()); + LabMessageDto labMessage = creator.createLabMessage(lm -> lm.setSample(sample.toReference())); + + getSampleFacade().deleteSample(sample.toReference()); + + Sample sampleEntity = getSampleService().getByUuid(sample.getUuid()); + List pathogenTests = getPathogenTestService().getAll(); + assertEquals(2, getSampleService().count()); + assertTrue(sampleEntity.isDeleted()); + assertEquals(1, pathogenTests.size()); + assertTrue(pathogenTests.get(0).isDeleted()); + assertEquals(1, getAdditionalTestService().count()); + assertNull(getSampleService().getByUuid(referralSample.getUuid()).getReferredTo()); + assertNull(getLabMessageService().getByUuid(labMessage.getUuid()).getSample()); + + getSampleService().deletePermanent(getEntityAttached(sampleEntity)); + + assertEquals(1, getSampleService().count()); + assertEquals(0, getPathogenTestService().count()); + assertEquals(0, getAdditionalTestService().count()); + assertEquals(1, getLabMessageService().count()); } } diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbPseudonymizationTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbPseudonymizationTest.java index 5dfc57644fb..7f5a527ebc1 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbPseudonymizationTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbPseudonymizationTest.java @@ -18,6 +18,7 @@ package de.symeda.sormas.backend.task; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.isEmptyString; import static org.mockito.Mockito.when; @@ -106,7 +107,7 @@ public void testGetTaskWithContactInJurisdiction() { TaskDto task = createContactTask(contact); TaskDto savedTask = getTaskFacade().getByUuid(task.getUuid()); - assertThat(savedTask.getContact().getCaption(), is("James SMITH to case John Doe")); + assertThat(savedTask.getContact().getCaption(), containsString("James SMITH to case John Doe")); } @Test @@ -168,7 +169,7 @@ public void testPseudonymizeIndexList() { assertThat(index2.getCaze().getLastName(), isEmptyString()); TaskIndexDto index3 = indexList.stream().filter(t -> t.getUuid().equals(task3.getUuid())).findFirst().get(); - assertThat(index3.getContact().getCaption(), is("John SMITH")); + assertThat(index3.getContact().getCaption(), containsString("John SMITH")); TaskIndexDto index4 = indexList.stream().filter(t -> t.getUuid().equals(task4.getUuid())).findFirst().get(); assertThat(index4.getContact().getCaption(), is(DataHelper.getShortUuid(index4.getContact().getUuid()))); @@ -265,7 +266,7 @@ public void testPseudonymizeGetAllAfter() { assertThat(active2.getCaze().getLastName(), isEmptyString()); TaskDto active3 = activeTasks.stream().filter(t -> t.getUuid().equals(task3.getUuid())).findFirst().get(); - assertThat(active3.getContact().getCaption(), is("John SMITH")); + assertThat(active3.getContact().getCaption(), containsString("John SMITH")); TaskDto active4 = activeTasks.stream().filter(t -> t.getUuid().equals(task4.getUuid())).findFirst().get(); assertThat(active4.getContact().getCaption(), is(DataHelper.getShortUuid(task4.getContact().getUuid()))); @@ -312,7 +313,7 @@ public void testPseudonymizeGetAllByUuid() { assertThat(active2.getCaze().getLastName(), isEmptyString()); TaskDto active3 = activeTasks.stream().filter(t -> t.getUuid().equals(task3.getUuid())).findFirst().get(); - assertThat(active3.getContact().getCaption(), is("John SMITH")); + assertThat(active3.getContact().getCaption(), containsString("John SMITH")); TaskDto active4 = activeTasks.stream().filter(t -> t.getUuid().equals(task4.getUuid())).findFirst().get(); assertThat(active4.getContact().getCaption(), is(DataHelper.getShortUuid(task4.getContact().getUuid()))); @@ -374,7 +375,7 @@ public void testPseudonymizeGetByContact() { List contact1Tasks = getTaskFacade().getAllByContact(contact1.toReference()); TaskDto active1 = contact1Tasks.stream().filter(t -> t.getUuid().equals(task3.getUuid())).findFirst().get(); - assertThat(active1.getContact().getCaption(), is("John SMITH")); + assertThat(active1.getContact().getCaption(), containsString("John SMITH")); List contact2Tasks = getTaskFacade().getAllByContact(contact2.toReference()); TaskDto active2 = contact2Tasks.stream().filter(t -> t.getUuid().equals(task4.getUuid())).findFirst().get(); diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbTest.java index e4f34e517c4..503f7864801 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/task/TaskFacadeEjbTest.java @@ -31,9 +31,13 @@ import java.util.Calendar; import java.util.Collections; import java.util.Date; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; +import de.symeda.sormas.api.user.UserReferenceDto; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; @@ -367,6 +371,45 @@ public void testFilterTasksByUserJurisdiction() { assertThat(tasksByCase, is(empty())); } + @Test + public void testGetAllTasksForUsersWithoutRights() { + RDCF rdcf = creator.createRDCF(); + UserDto user = creator.createUser(rdcf, UserRole.ADMIN, UserRole.NATIONAL_USER); + UserDto userCaseOfficer = creator.createUser(rdcf, UserRole.CASE_OFFICER); + loginWith(user); + + PersonDto person = creator.createPerson("case person", "ln"); + CaseDataDto caze = creator.createCase(user.toReference(), person.toReference(), rdcf); + + ContactDto contact = creator.createContact( + user.toReference(), + person.toReference(), + caze.getDisease(), + contactDto -> contactDto.setResultingCase(caze.toReference())); + + + creator.createTask(TaskContext.CONTACT, contact.toReference(), t -> { + t.setTaskStatus(TaskStatus.PENDING); + t.setAssigneeUser(user.toReference()); + }); + + creator.createTask(TaskContext.CONTACT, contact.toReference(), t -> { + t.setTaskStatus(TaskStatus.PENDING); + t.setAssigneeUser(userCaseOfficer.toReference()); + }); + + List tasks = getTaskFacade().getIndexList(null, 0, 100, null); + List contactTasks = tasks.stream().filter(t -> t.getTaskContext().equals(TaskContext.CONTACT)).collect(Collectors.toList()); + assertEquals(2, contactTasks.size()); + + loginWith(userCaseOfficer); + + tasks = getTaskFacade().getIndexList(null, 0, 100, null); + contactTasks = tasks.stream().filter(t -> t.getTaskContext().equals(TaskContext.CONTACT)).collect(Collectors.toList()); + assertEquals(1, contactTasks.size()); + + } + @Test public void testGetPendingTaskCountPerUser() { diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/util/IterableHelperTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/util/IterableHelperTest.java index 53b5015ab9e..1a2f2594665 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/util/IterableHelperTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/util/IterableHelperTest.java @@ -20,10 +20,13 @@ public void testExecuteBatched() { int batchSize = 3; - // 0. No execution on empty collection + // 0a. No execution on null + assertExecuteCount(batchSize, 0, (Integer[]) null); + + // 0b. No execution on empty collection assertExecuteCount(batchSize, 0); - // 1. No execution on empty collection + // 1. Testing with one batch assertExecuteCount(batchSize, 1, 1); assertExecuteCount(batchSize, 1, 1, 2); assertExecuteCount(batchSize, 1, 1, 2, 3); @@ -41,7 +44,7 @@ private static void assertExecuteCount(int batchSize, int executions, Integer... // Workaround instead of mocking because the mocked instance resulted in an NPE on Github CI. CountCalls batchFunction = new CountCalls<>(); - IterableHelper.executeBatched(Arrays.asList(entries), batchSize, batchFunction); + IterableHelper.executeBatched(entries == null ? null : Arrays.asList(entries), batchSize, batchFunction); assertThat(batchFunction.counter, equalTo(executions)); } diff --git a/sormas-backend/src/test/resources/META-INF/persistence.xml b/sormas-backend/src/test/resources/META-INF/persistence.xml index 52d1669d6ce..77fa7c9e0a6 100644 --- a/sormas-backend/src/test/resources/META-INF/persistence.xml +++ b/sormas-backend/src/test/resources/META-INF/persistence.xml @@ -92,7 +92,7 @@ - + diff --git a/sormas-backend/src/test/resources/performance/exampleApplication.debug b/sormas-backend/src/test/resources/performance/exampleApplication.debug new file mode 100644 index 00000000000..2ad37157264 --- /dev/null +++ b/sormas-backend/src/test/resources/performance/exampleApplication.debug @@ -0,0 +1,3000 @@ +2022-04-04 08:55:31,284 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuditSourceSite with parameters 'null' +2022-04-04 08:55:31,312 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuditSourceSite +2022-04-04 08:55:31,314 WARN admin-thread-pool::admin-listener(2) d.s.sormas.backend.audit.AuditLogger - audit.source.site is empty! Please configure it for more expedient audit trail analysis. +2022-04-04 08:55:31,314 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuditLoggerConfig with parameters 'null' +2022-04-04 08:55:31,315 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuditLoggerConfig +2022-04-04 08:55:31,317 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogger.logApplicationStart with parameters 'null' +2022-04-04 08:55:31,474 INFO admin-thread-pool::admin-listener(2) ca.uhn.fhir.util.VersionUtil - HAPI FHIR version 5.4.0 - Rev b463b072c8 +2022-04-04 08:55:31,483 INFO admin-thread-pool::admin-listener(2) ca.uhn.fhir.context.FhirContext - Creating new FHIR context for FHIR version [R4] +2022-04-04 08:55:33,013 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuditLoggerConfig with parameters 'null' +2022-04-04 08:55:33,014 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuditLoggerConfig +2022-04-04 08:55:33,016 WARN admin-thread-pool::admin-listener(2) d.s.sormas.backend.audit.LogSink - Audit logger is disabled! Using NOP Logger instead! +2022-04-04 08:55:33,021 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: LogSink.getAuditLogger with parameters 'null' +2022-04-04 08:55:33,022 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: LogSink.getAuditLogger +2022-04-04 08:55:33,022 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1704 ms: AuditLogger.logApplicationStart +2022-04-04 08:55:33,119 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Your PostgreSQL Version (10.16) is currently supported. +2022-04-04 08:55:33,127 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Initiating automatic database update of main database... +2022-04-04 08:55:33,127 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Starting automatic database update... +2022-04-04 08:55:33,173 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Database update completed. +2022-04-04 08:55:33,174 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Initiating automatic database update of audit database... +2022-04-04 08:55:33,175 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Starting automatic database update... +2022-04-04 08:55:33,231 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Database update completed. +2022-04-04 08:55:33,232 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 08:55:33,233 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 08:55:33,234 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isCreateDefaultEntities with parameters 'null' +2022-04-04 08:55:33,235 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.isCreateDefaultEntities +2022-04-04 08:55:33,316 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.count with parameters 'null' +2022-04-04 08:55:33,460 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 143 ms: RegionService.count +2022-04-04 08:55:33,491 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.count with parameters 'null' +2022-04-04 08:55:33,636 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 144 ms: DistrictService.count +2022-04-04 08:55:33,659 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.count with parameters 'null' +2022-04-04 08:55:33,664 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CommunityService.count +2022-04-04 08:55:33,723 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityFacadeEjb.count with parameters '[de.symeda.sormas.api.infrastructure.facility.FacilityCriteria@1831c483]' +2022-04-04 08:55:33,749 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.buildCriteriaFilter with parameters '[de.symeda.sormas.api.infrastructure.facility.FacilityCriteria@1831c483, org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@270180ac]' +2022-04-04 08:55:33,760 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 10 ms: FacilityService.buildCriteriaFilter +2022-04-04 08:55:33,813 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 89 ms: FacilityFacadeEjb.count +2022-04-04 08:55:33,814 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityFacadeEjb.count with parameters '[de.symeda.sormas.api.infrastructure.facility.FacilityCriteria@1831c483]' +2022-04-04 08:55:33,815 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.buildCriteriaFilter with parameters '[de.symeda.sormas.api.infrastructure.facility.FacilityCriteria@1831c483, org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@6d9998a]' +2022-04-04 08:55:33,816 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: FacilityService.buildCriteriaFilter +2022-04-04 08:55:33,823 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: FacilityFacadeEjb.count +2022-04-04 08:55:33,843 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PointOfEntryService.count with parameters 'null' +2022-04-04 08:55:33,848 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: PointOfEntryService.count +2022-04-04 08:55:33,849 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.createConstantFacilities with parameters 'null' +2022-04-04 08:55:33,906 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:33,907 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:33,911 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 08:55:33,912 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 08:55:33,913 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 08:55:33,914 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: AuditContextProducer.provideAuditor +2022-04-04 08:55:33,936 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:33,937 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:33,938 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 88 ms: FacilityService.createConstantFacilities +2022-04-04 08:55:33,939 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PointOfEntryService.createConstantPointsOfEntry with parameters 'null' +2022-04-04 08:55:33,944 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:33,945 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:33,949 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:33,950 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:33,956 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:33,957 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:33,963 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:33,964 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:33,965 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 26 ms: PointOfEntryService.createConstantPointsOfEntry +2022-04-04 08:55:33,993 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.count with parameters 'null' +2022-04-04 08:55:34,112 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 119 ms: UserService.count +2022-04-04 08:55:34,143 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SormasToSormasFacadeEjb.isFeatureConfigured with parameters 'null' +2022-04-04 08:55:34,144 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getS2SConfig with parameters 'null' +2022-04-04 08:55:34,146 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: ConfigFacadeEjb.getS2SConfig +2022-04-04 08:55:34,147 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: SormasToSormasFacadeEjb.isFeatureConfigured +2022-04-04 08:55:34,147 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSymptomJournalConfig with parameters 'null' +2022-04-04 08:55:34,155 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: ConfigFacadeEjb.getSymptomJournalConfig +2022-04-04 08:55:34,156 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Symptom journal default user not configured +2022-04-04 08:55:34,157 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getPatientDiaryConfig with parameters 'null' +2022-04-04 08:55:34,158 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getPatientDiaryConfig +2022-04-04 08:55:34,159 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Patient diary default user not configured +2022-04-04 08:55:34,161 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuthenticationProvider with parameters 'null' +2022-04-04 08:55:34,162 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuthenticationProvider +2022-04-04 08:55:34,163 INFO admin-thread-pool::admin-listener(2) d.s.s.b.c.StartupShutdownService - Active Authentication Provider SORMAS doesn't support user sync +2022-04-04 08:55:34,185 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationService.getAll with parameters 'null' +2022-04-04 08:55:34,215 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,216 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,219 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,220 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,223 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,224 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,226 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,227 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,230 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,231 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,233 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,233 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,235 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,235 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,237 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,238 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,241 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,242 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,245 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,246 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,248 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,249 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,250 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,251 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,253 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,253 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,256 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,256 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,258 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,259 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,261 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,262 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,266 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,266 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,268 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,269 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,270 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,271 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,274 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,275 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,277 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,278 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,280 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,281 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,283 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,284 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,286 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,287 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,289 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,289 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,291 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,292 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,294 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,295 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,297 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,298 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,299 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,299 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,301 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,302 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,303 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,304 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,305 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,306 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,308 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,309 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,311 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,312 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,314 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,315 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,317 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,317 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,319 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,320 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,321 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,322 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,325 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,325 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,328 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,329 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,332 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,332 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,334 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,335 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,336 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,337 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,339 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,340 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,342 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,344 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,346 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,347 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,349 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,350 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,352 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,352 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,354 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,354 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,356 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,357 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,359 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,360 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,362 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,363 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,365 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,366 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,368 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,368 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,369 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,370 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,371 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,372 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,374 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 188 ms: DiseaseConfigurationService.getAll +2022-04-04 08:55:34,391 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationService.createMissingFeatureConfigurations with parameters 'null' +2022-04-04 08:55:34,508 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,509 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,514 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,515 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,516 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,517 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,519 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,519 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,520 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,521 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,522 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,523 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,524 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,525 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,528 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,529 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,531 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,532 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,533 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,534 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,535 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,536 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,537 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,537 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,538 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,539 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,540 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,541 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,543 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,544 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,546 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,547 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,550 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,550 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,552 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,553 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,554 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,555 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,556 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,556 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,557 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,558 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,560 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,561 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,563 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,564 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,566 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,566 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,568 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,568 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,570 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,570 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,571 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,572 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,573 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,574 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,576 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,577 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,579 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,580 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,583 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,584 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,586 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,587 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,589 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,590 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,592 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,593 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,596 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,597 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,599 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,599 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,601 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,602 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,603 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,604 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,605 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,606 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,607 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,608 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,611 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,612 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,615 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,616 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,618 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,618 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,621 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,621 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,623 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,624 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,627 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,628 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,631 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,632 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,634 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,634 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,636 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,637 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,640 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,641 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,643 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,644 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,647 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,649 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,652 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,653 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,656 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,657 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,660 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,661 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,665 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,666 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,671 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,672 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,674 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,675 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,678 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:34,679 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:34,684 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 292 ms: FeatureConfigurationService.createMissingFeatureConfigurations +2022-04-04 08:55:34,686 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationService.updateFeatureConfigurations with parameters 'null' +2022-04-04 08:55:34,724 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 37 ms: FeatureConfigurationService.updateFeatureConfigurations +2022-04-04 08:55:34,750 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.getActiveServerFeatureConfigurations with parameters 'null' +2022-04-04 08:55:34,790 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 38 ms: FeatureConfigurationFacadeEjb.getActiveServerFeatureConfigurations +2022-04-04 08:55:34,841 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateCaseImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:34,843 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:34,844 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:34,986 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:34,987 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:34,988 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:34,988 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,023 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,023 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,033 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,034 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,048 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,049 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,055 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,056 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,057 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,057 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,072 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,072 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,073 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,073 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,074 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,074 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,075 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,075 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,077 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,078 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,084 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,084 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,088 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,089 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,091 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[IMMUNIZATION_MANAGEMENT, REDUCED]' +2022-04-04 08:55:35,108 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 17 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 08:55:35,109 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,109 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,115 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,115 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,116 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,117 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,132 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,133 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,143 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 300 ms: ImportFacadeEjb.generateCaseImportTemplateFile +2022-04-04 08:55:35,144 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateCaseContactImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,145 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,145 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,146 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,146 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,147 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,148 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,151 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,152 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,154 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,154 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,157 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,157 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,158 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,158 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,160 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[IMMUNIZATION_MANAGEMENT, REDUCED]' +2022-04-04 08:55:35,171 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 10 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 08:55:35,172 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,173 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,176 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,176 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,177 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,177 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,178 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,179 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,180 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 36 ms: ImportFacadeEjb.generateCaseContactImportTemplateFile +2022-04-04 08:55:35,181 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateContactImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,181 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,182 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,182 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,183 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,183 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,184 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,186 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,186 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,187 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,188 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,189 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,190 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,191 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,191 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,193 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[IMMUNIZATION_MANAGEMENT, REDUCED]' +2022-04-04 08:55:35,203 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 9 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 08:55:35,204 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,204 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,206 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,207 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,208 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,208 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,209 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,210 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,212 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 31 ms: ImportFacadeEjb.generateContactImportTemplateFile +2022-04-04 08:55:35,212 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateCaseLineListingImportTemplateFile with parameters 'null' +2022-04-04 08:55:35,213 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,213 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,214 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,214 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,215 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,215 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,216 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,216 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,217 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,218 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,219 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: ImportFacadeEjb.generateCaseLineListingImportTemplateFile +2022-04-04 08:55:35,220 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generatePointOfEntryImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,221 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,222 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,223 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,224 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,225 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,226 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,227 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,228 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,229 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,229 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,230 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,231 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,232 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: ImportFacadeEjb.generatePointOfEntryImportTemplateFile +2022-04-04 08:55:35,232 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generatePopulationDataImportTemplateFile with parameters 'null' +2022-04-04 08:55:35,233 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,233 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,234 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,234 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,235 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,236 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,237 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,238 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,239 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,240 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,241 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: ImportFacadeEjb.generatePopulationDataImportTemplateFile +2022-04-04 08:55:35,242 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateAreaImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,243 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,244 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,245 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,246 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,246 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,247 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,248 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,248 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,249 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,250 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,251 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,251 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,252 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 9 ms: ImportFacadeEjb.generateAreaImportTemplateFile +2022-04-04 08:55:35,253 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateContinentImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,254 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,255 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,256 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,257 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,258 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,259 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,260 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,261 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,262 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,263 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,264 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,265 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,266 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 12 ms: ImportFacadeEjb.generateContinentImportTemplateFile +2022-04-04 08:55:35,267 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateSubcontinentImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,267 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,268 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,269 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,269 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,270 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,271 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,272 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,273 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,274 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,275 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,277 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,277 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,278 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: ImportFacadeEjb.generateSubcontinentImportTemplateFile +2022-04-04 08:55:35,279 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateCountryImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,280 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,281 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,281 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,282 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,283 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,283 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,284 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,285 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,286 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,286 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,288 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,289 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,290 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 10 ms: ImportFacadeEjb.generateCountryImportTemplateFile +2022-04-04 08:55:35,291 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateRegionImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,292 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,293 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,293 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,294 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,295 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,295 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,296 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,297 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,298 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,298 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,300 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,300 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,301 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 9 ms: ImportFacadeEjb.generateRegionImportTemplateFile +2022-04-04 08:55:35,302 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateDistrictImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,303 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,304 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,305 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,305 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,306 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,307 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,309 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,310 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,310 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,311 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,313 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,314 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,314 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: ImportFacadeEjb.generateDistrictImportTemplateFile +2022-04-04 08:55:35,315 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateCommunityImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,316 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,316 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,317 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,317 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,318 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,319 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,320 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,320 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,321 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,322 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,324 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,325 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,326 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: ImportFacadeEjb.generateCommunityImportTemplateFile +2022-04-04 08:55:35,327 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateFacilityImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,327 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,328 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,329 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,330 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,330 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,331 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,332 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,332 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,333 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,333 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,335 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,336 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,337 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 10 ms: ImportFacadeEjb.generateFacilityImportTemplateFile +2022-04-04 08:55:35,338 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateEventImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,338 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,339 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,340 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,341 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,342 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[EVENT_HIERARCHIES]' +2022-04-04 08:55:35,357 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 08:55:35,358 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,358 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,360 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,361 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,364 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[EVENT_GROUPS]' +2022-04-04 08:55:35,371 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 08:55:35,371 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,372 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,373 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,374 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,376 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,376 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,377 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,377 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,378 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,378 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,379 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 41 ms: ImportFacadeEjb.generateEventImportTemplateFile +2022-04-04 08:55:35,380 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImportFacadeEjb.generateEventParticipantImportTemplateFile with parameters '[[de.symeda.sormas.api.feature.FeatureConfigurationDto@388a3b46, de.symeda.sormas.api.feature.FeatureConfigurationDto@ab9eb195, de.symeda.sormas.api.feature.FeatureConfigurationDto@b1879ffa, de.symeda.sormas.api.feature.FeatureConfigurationDto@5b6ea2a0, de.symeda.sormas.api.feature.FeatureConfigurationDto@1bcf670c, de.symeda.sormas.api.feature.FeatureConfigurationDto@808f5138, de.symeda.sormas.api.feature.FeatureConfigurationDto@a7be8f9, de.symeda.sormas.api.feature.FeatureConfigurationDto@28cf5054, de.symeda.sormas.api.feature.FeatureConfigurationDto@95b27fe1, de.symeda.sormas.api.feature.FeatureConfigurationDto@153435f, de.symeda.sormas.api.feature.FeatureConfigurationDto@5093fc85, de.symeda.sormas.api.feature.FeatureConfigurationDto@17e5f342, de.symeda.sormas.api.feature.FeatureConfigurationDto@340cebc, de.symeda.sormas.api.feature.FeatureConfigurationDto@38d28d6f, de.symeda.sormas.api.feature.FeatureConfigurationDto@86b35059, de.symeda.sormas.api.feature.FeatureConfigurationDto@9ec5b80e, de.symeda.sormas.api.feature.FeatureConfigurationDto@3e2109d8, de.symeda.sormas.api.feature.FeatureConfigurationDto@28793aa7, de.symeda.sormas.api.feature.FeatureConfigurationDto@b06de003, de.symeda.sormas.api.feature.FeatureConfigurationDto@c7a5acdf, de.symeda.sormas.api.feature.FeatureConfigurationDto@e28f94e, de.symeda.sormas.api.feature.FeatureConfigurationDto@5a1d0f83, de.symeda.sormas.api.feature.FeatureConfigurationDto@4d308328, de.symeda.sormas.api.feature.FeatureConfigurationDto@7f590181, de.symeda.sormas.api.feature.FeatureConfigurationDto@61610723, de.symeda.sormas.api.feature.FeatureConfigurationDto@39949659, de.symeda.sormas.api.feature.FeatureConfigurationDto@c90032b5, de.symeda.sormas.api.feature.FeatureConfigurationDto@ca2a1c69, de.symeda.sormas.api.feature.FeatureConfigurationDto@1dca1a25, de.symeda.sormas.api.feature.FeatureConfigurationDto@14aa42ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@c9c42112, de.symeda.sormas.api.feature.FeatureConfigurationDto@549d0913, de.symeda.sormas.api.feature.FeatureConfigurationDto@acc7e899, de.symeda.sormas.api.feature.FeatureConfigurationDto@dfcad4a7, de.symeda.sormas.api.feature.FeatureConfigurationDto@e9a52f9f, de.symeda.sormas.api.feature.FeatureConfigurationDto@cc7b0bd7, de.symeda.sormas.api.feature.FeatureConfigurationDto@f992016f, de.symeda.sormas.api.feature.FeatureConfigurationDto@20c2606a, de.symeda.sormas.api.feature.FeatureConfigurationDto@720ae2df, de.symeda.sormas.api.feature.FeatureConfigurationDto@d8c86da1, de.symeda.sormas.api.feature.FeatureConfigurationDto@46bf5d52, de.symeda.sormas.api.feature.FeatureConfigurationDto@67ff9544, de.symeda.sormas.api.feature.FeatureConfigurationDto@745a62ef, de.symeda.sormas.api.feature.FeatureConfigurationDto@88bddb8]]' +2022-04-04 08:55:35,380 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,381 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,382 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,383 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,383 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,384 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,384 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,385 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,386 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[IMMUNIZATION_MANAGEMENT, REDUCED]' +2022-04-04 08:55:35,391 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 08:55:35,392 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryCode with parameters 'null' +2022-04-04 08:55:35,393 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryCode +2022-04-04 08:55:35,394 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getGeneratedFilesPath with parameters 'null' +2022-04-04 08:55:35,395 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getGeneratedFilesPath +2022-04-04 08:55:35,395 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 08:55:35,396 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 08:55:35,396 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCsvSeparator with parameters 'null' +2022-04-04 08:55:35,397 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCsvSeparator +2022-04-04 08:55:35,398 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 18 ms: ImportFacadeEjb.generateEventParticipantImportTemplateFile +2022-04-04 08:55:35,413 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DeletionConfigurationService.createMissingDeletionConfiguration with parameters 'null' +2022-04-04 08:55:35,422 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,423 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,424 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,425 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,427 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,427 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,429 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,429 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,431 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,432 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,433 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,434 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,435 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 08:55:35,435 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 08:55:35,437 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 23 ms: DeletionConfigurationService.createMissingDeletionConfiguration +2022-04-04 08:55:35,438 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.validateAppUrls with parameters 'null' +2022-04-04 08:55:35,443 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: ConfigFacadeEjb.validateAppUrls +2022-04-04 08:55:35,444 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.validateConfigUrls with parameters 'null' +2022-04-04 08:55:35,462 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 18 ms: ConfigFacadeEjb.validateConfigUrls +2022-04-04 08:55:35,480 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CentralInfraSyncFacade.syncAll with parameters 'null' +2022-04-04 08:55:35,481 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isCentralLocationSync with parameters 'null' +2022-04-04 08:55:35,481 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isCentralLocationSync +2022-04-04 08:55:35,481 INFO admin-thread-pool::admin-listener(2) d.s.s.b.i.c.CentralInfraSyncFacade - Skipping synchronization with central as feature is disabled. +2022-04-04 08:55:35,482 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CentralInfraSyncFacade.syncAll +2022-04-04 08:55:41,082 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuthenticationProvider with parameters 'null' +2022-04-04 08:55:41,082 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuthenticationProvider +2022-04-04 08:55:41,084 DEBUG admin-thread-pool::admin-listener(2) d.s.s.r.RestConfig$FilterStartupListener - Keycloak filter disabled +2022-04-04 08:55:46,042 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 08:55:46,043 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 08:55:46,272 TRACE admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuthenticationProvider with parameters 'null' +2022-04-04 08:55:46,273 DEBUG admin-thread-pool::admin-listener(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuthenticationProvider +2022-04-04 08:55:46,280 DEBUG admin-thread-pool::admin-listener(2) d.s.s.u.l.LoginUI$ServletStartupListener - SORMAS login servlet enabled +2022-04-04 08:56:00,165 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 08:56:00,178 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 12 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 08:56:00,179 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 08:56:04,680 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getAuthenticationProvider with parameters 'null' +2022-04-04 08:56:04,682 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getAuthenticationProvider +2022-04-04 08:56:05,132 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 08:56:05,147 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 08:56:05,163 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 08:56:05,164 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 08:56:05,165 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 18 ms: UserService.getCurrentUser +2022-04-04 08:56:05,165 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 32 ms: UserFacadeEjb.getCurrentUser +2022-04-04 08:56:05,202 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 08:56:05,203 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 08:56:05,502 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 08:56:05,502 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 08:58:00,019 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 08:58:00,023 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 08:58:00,023 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:00:00,041 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 09:00:00,058 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@8690d7d]' +2022-04-04 09:00:00,077 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:00:00,176 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 99 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:00:00,189 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@20db7850, true]' +2022-04-04 09:00:00,222 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 33 ms: TaskService.findBy +2022-04-04 09:00:00,236 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 09:00:00,237 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: MessagingService.sendEmail +2022-04-04 09:00:00,237 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@46ed7a9f, true]' +2022-04-04 09:00:00,241 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:00:00,242 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 09:00:00,242 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:00:00,243 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 185 ms: NotificationService.sendNotifications +2022-04-04 09:00:00,243 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@35bd4c5a]' +2022-04-04 09:00:00,243 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:00:00,245 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:00:00,246 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@6c58d8e6, true]' +2022-04-04 09:00:00,251 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: TaskService.findBy +2022-04-04 09:00:00,252 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:00:00,252 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:00:00,252 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@422152be, true]' +2022-04-04 09:00:00,256 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: TaskService.findBy +2022-04-04 09:00:00,257 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:00:00,257 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:00:00,257 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: NotificationService.sendNotifications +2022-04-04 09:00:00,257 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 216 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 09:00:00,268 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:00:00,270 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:00:00,271 DEBUG __ejb-thread-pool4 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:01:05,537 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:01:05,538 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:01:05,539 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:01:05,540 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:01:05,540 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:01:05,541 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:01:05,544 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:01:05,544 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:01:05,550 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:01:05,550 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:02:00,002 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:02:00,010 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:02:00,011 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:04:00,003 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:04:00,010 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:04:00,011 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:06:00,002 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:06:00,026 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 23 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:06:00,027 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:06:05,582 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:06:05,583 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:06:05,583 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:06:05,584 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:06:05,585 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:06:05,585 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:06:05,591 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:06:05,592 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:06:05,598 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:06:05,598 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:08:00,033 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:08:00,039 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:08:00,039 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:10:00,001 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 09:10:00,001 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@5cca0be]' +2022-04-04 09:10:00,002 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:10:00,005 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:10:00,006 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@cf66d18, true]' +2022-04-04 09:10:00,014 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: TaskService.findBy +2022-04-04 09:10:00,014 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 09:10:00,015 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:10:00,015 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@6be469df, true]' +2022-04-04 09:10:00,019 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:10:00,020 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 09:10:00,020 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:10:00,020 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 18 ms: NotificationService.sendNotifications +2022-04-04 09:10:00,021 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@481c77d7]' +2022-04-04 09:10:00,021 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:10:00,023 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:10:00,024 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@1b358795, true]' +2022-04-04 09:10:00,028 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:10:00,029 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:10:00,029 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:10:00,029 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@655cd789, true]' +2022-04-04 09:10:00,034 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:10:00,034 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:10:00,035 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:10:00,035 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: NotificationService.sendNotifications +2022-04-04 09:10:00,035 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 34 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 09:10:00,036 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:10:00,038 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:10:00,039 DEBUG __ejb-thread-pool4 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:11:05,632 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:11:05,633 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:11:05,634 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:11:05,635 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:11:05,635 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 09:11:05,636 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:11:05,641 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:11:05,641 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:11:05,647 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:11:05,648 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:12:00,000 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:12:00,003 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:12:00,003 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:14:00,001 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:14:00,009 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:14:00,010 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:16:00,001 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:16:00,006 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:16:00,007 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:16:05,678 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:16:05,678 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:16:05,679 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:16:05,680 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:16:05,681 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:16:05,682 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:16:05,685 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:16:05,686 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:16:05,693 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:16:05,693 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:18:00,001 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:18:00,007 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:18:00,008 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:20:00,020 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:20:00,023 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:20:00,023 DEBUG __ejb-thread-pool4 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:20:00,025 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 09:20:00,025 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@3a79f511]' +2022-04-04 09:20:00,026 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:20:00,028 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:20:00,029 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@ba69fea, true]' +2022-04-04 09:20:00,034 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: TaskService.findBy +2022-04-04 09:20:00,034 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 09:20:00,035 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:20:00,035 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@41af3fae, true]' +2022-04-04 09:20:00,039 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:20:00,039 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 09:20:00,040 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:20:00,040 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: NotificationService.sendNotifications +2022-04-04 09:20:00,040 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@703038de]' +2022-04-04 09:20:00,041 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:20:00,042 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:20:00,043 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@3420802f, true]' +2022-04-04 09:20:00,047 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:20:00,047 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:20:00,048 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:20:00,048 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@73cf6330, true]' +2022-04-04 09:20:00,052 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:20:00,052 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:20:00,053 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:20:00,053 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: NotificationService.sendNotifications +2022-04-04 09:20:00,053 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 28 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 09:21:05,727 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:21:05,729 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:21:05,730 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:21:05,730 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:21:05,731 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:21:05,732 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:21:05,737 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:21:05,738 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:21:05,745 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:21:05,745 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:22:00,000 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:22:00,004 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:22:00,004 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:24:00,001 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:24:00,007 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:24:00,008 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:26:00,001 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:26:00,012 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 10 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:26:00,013 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:26:05,785 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:26:05,786 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:26:05,786 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:26:05,787 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:26:05,787 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 09:26:05,787 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:26:05,790 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:26:05,791 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:26:05,795 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:26:05,796 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:28:00,001 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:28:00,010 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:28:00,011 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:30:00,001 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 09:30:00,002 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@2fd77f82]' +2022-04-04 09:30:00,004 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:30:00,017 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:30:00,019 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@32b9055, true]' +2022-04-04 09:30:00,042 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 20 ms: TaskService.findBy +2022-04-04 09:30:00,043 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 09:30:00,043 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:30:00,044 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@65579a56, true]' +2022-04-04 09:30:00,050 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: TaskService.findBy +2022-04-04 09:30:00,051 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 09:30:00,052 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:30:00,052 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 48 ms: NotificationService.sendNotifications +2022-04-04 09:30:00,053 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@301a6f4a]' +2022-04-04 09:30:00,053 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:30:00,055 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:30:00,056 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@701ae1c0, true]' +2022-04-04 09:30:00,060 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:30:00,061 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:30:00,061 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:30:00,061 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@703caabf, true]' +2022-04-04 09:30:00,065 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 09:30:00,065 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:30:00,066 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:30:00,066 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: NotificationService.sendNotifications +2022-04-04 09:30:00,066 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 64 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 09:30:00,067 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:30:00,069 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:30:00,069 DEBUG __ejb-thread-pool3 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:31:05,823 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:31:05,823 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:31:05,824 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:31:05,825 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:31:05,826 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:31:05,827 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:31:05,830 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:31:05,830 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:31:05,836 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:31:05,837 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:32:00,035 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:32:00,039 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:32:00,039 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:34:00,002 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:34:00,008 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:34:00,009 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:36:00,002 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:36:00,007 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:36:00,008 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:36:05,869 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:36:05,870 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:36:05,872 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:36:05,872 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:36:05,873 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:36:05,873 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:36:05,878 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:36:05,879 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:36:05,886 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:36:05,886 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:38:00,001 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:38:00,006 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:38:00,010 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:40:00,001 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 09:40:00,002 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@1b3cdf00]' +2022-04-04 09:40:00,003 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:40:00,011 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:40:00,012 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@33764c1f, true]' +2022-04-04 09:40:00,027 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: TaskService.findBy +2022-04-04 09:40:00,028 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 09:40:00,029 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:40:00,030 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@64d3e0f7, true]' +2022-04-04 09:40:00,038 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: TaskService.findBy +2022-04-04 09:40:00,039 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 09:40:00,039 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:40:00,040 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 37 ms: NotificationService.sendNotifications +2022-04-04 09:40:00,040 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@5a4c1a26]' +2022-04-04 09:40:00,041 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:40:00,043 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:40:00,044 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@270dc573, true]' +2022-04-04 09:40:00,051 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: TaskService.findBy +2022-04-04 09:40:00,051 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:40:00,052 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:40:00,052 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@5af16e28, true]' +2022-04-04 09:40:00,059 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: TaskService.findBy +2022-04-04 09:40:00,060 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:40:00,060 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:40:00,061 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 20 ms: NotificationService.sendNotifications +2022-04-04 09:40:00,061 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 59 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 09:40:00,063 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:40:00,065 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:40:00,066 DEBUG __ejb-thread-pool3 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:41:05,920 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:41:05,921 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:41:05,922 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:41:05,923 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:41:05,924 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:41:05,924 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:41:05,928 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:41:05,929 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:41:05,934 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:41:05,935 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:42:00,001 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:42:00,006 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:42:00,007 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:44:00,035 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:44:00,038 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:44:00,038 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:46:00,001 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:46:00,006 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:46:00,007 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:46:05,968 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:46:05,969 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:46:05,970 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:46:05,971 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:46:05,971 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 09:46:05,972 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:46:05,976 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:46:05,977 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:46:05,984 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:46:05,985 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:48:00,002 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:48:00,006 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:48:00,007 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:50:00,001 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 09:50:00,002 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@2c1dfc1e]' +2022-04-04 09:50:00,003 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:50:00,011 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:50:00,013 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@7d7d61bc, true]' +2022-04-04 09:50:00,033 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 19 ms: TaskService.findBy +2022-04-04 09:50:00,034 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 09:50:00,035 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:50:00,035 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@20ff4943, true]' +2022-04-04 09:50:00,042 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: TaskService.findBy +2022-04-04 09:50:00,042 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 09:50:00,043 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:50:00,043 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 40 ms: NotificationService.sendNotifications +2022-04-04 09:50:00,043 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@16464102]' +2022-04-04 09:50:00,044 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 09:50:00,048 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 09:50:00,049 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@61d9d845, true]' +2022-04-04 09:50:00,055 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: TaskService.findBy +2022-04-04 09:50:00,056 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:50:00,056 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 09:50:00,056 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@37ed6258, true]' +2022-04-04 09:50:00,059 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: TaskService.findBy +2022-04-04 09:50:00,060 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 09:50:00,060 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 09:50:00,060 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 16 ms: NotificationService.sendNotifications +2022-04-04 09:50:00,060 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 58 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 09:50:00,061 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:50:00,063 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:50:00,063 DEBUG __ejb-thread-pool3 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:51:06,016 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:51:06,017 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:51:06,018 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:51:06,018 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:51:06,019 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:51:06,019 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:51:06,024 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:51:06,024 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:51:06,030 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:51:06,031 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:52:00,001 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:52:00,006 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:52:00,007 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:54:00,002 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:54:00,006 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:54:00,007 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:56:00,033 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:56:00,036 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:56:00,037 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 09:56:06,067 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 09:56:06,068 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 09:56:06,070 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 09:56:06,070 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 09:56:06,071 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 09:56:06,072 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserFacadeEjb.getCurrentUser +2022-04-04 09:56:06,076 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 09:56:06,077 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 09:56:06,084 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 09:56:06,084 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 09:58:00,001 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 09:58:00,006 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 09:58:00,007 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:00:00,001 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 10:00:00,002 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@11f74da9]' +2022-04-04 10:00:00,003 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 10:00:00,009 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:00:00,012 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@6f91599f, true]' +2022-04-04 10:00:00,024 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: TaskService.findBy +2022-04-04 10:00:00,026 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 10:00:00,027 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 10:00:00,028 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@4e98870c, true]' +2022-04-04 10:00:00,036 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: TaskService.findBy +2022-04-04 10:00:00,037 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 10:00:00,038 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 10:00:00,038 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 35 ms: NotificationService.sendNotifications +2022-04-04 10:00:00,039 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@4e0b0985]' +2022-04-04 10:00:00,039 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 10:00:00,042 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:00:00,043 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@35c81670, true]' +2022-04-04 10:00:00,047 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 10:00:00,048 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 10:00:00,049 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 10:00:00,050 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@4662c3a4, true]' +2022-04-04 10:00:00,053 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: TaskService.findBy +2022-04-04 10:00:00,054 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 10:00:00,054 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 10:00:00,055 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 16 ms: NotificationService.sendNotifications +2022-04-04 10:00:00,055 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 53 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 10:00:00,056 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:00:00,057 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:00:00,058 DEBUG __ejb-thread-pool3 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:01:06,111 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:01:06,111 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:01:06,113 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:01:06,114 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CurrentUserService.getCurrentUser +2022-04-04 10:01:06,114 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:01:06,115 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:01:06,119 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:01:06,119 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:01:06,125 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:01:06,126 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:02:00,001 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:02:00,006 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:02:00,007 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:04:00,001 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:04:00,004 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:04:00,005 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:06:00,000 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:06:00,003 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:06:00,003 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:06:06,154 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:06:06,155 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:06:06,157 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:06:06,158 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:06:06,160 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.getCurrentUser +2022-04-04 10:06:06,161 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:06:06,169 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:06:06,170 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:06:06,178 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:06:06,179 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:08:00,027 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:08:00,031 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:08:00,031 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:10:00,001 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:10:00,006 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:10:00,007 DEBUG __ejb-thread-pool3 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:10:00,010 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 10:10:00,011 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@ff36b7c]' +2022-04-04 10:10:00,013 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 10:10:00,019 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:10:00,021 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@15482f88, true]' +2022-04-04 10:10:00,029 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: TaskService.findBy +2022-04-04 10:10:00,030 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 10:10:00,031 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 10:10:00,032 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@4dd5b29f, true]' +2022-04-04 10:10:00,037 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: TaskService.findBy +2022-04-04 10:10:00,038 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 10:10:00,038 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 10:10:00,038 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 26 ms: NotificationService.sendNotifications +2022-04-04 10:10:00,039 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@56b180e]' +2022-04-04 10:10:00,039 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 10:10:00,042 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:10:00,043 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@7a66dddf, true]' +2022-04-04 10:10:00,046 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: TaskService.findBy +2022-04-04 10:10:00,047 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 10:10:00,048 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: MessagingService.sendEmail +2022-04-04 10:10:00,048 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@70c641e4, true]' +2022-04-04 10:10:00,053 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TaskService.findBy +2022-04-04 10:10:00,053 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 10:10:00,054 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 10:10:00,054 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 15 ms: NotificationService.sendNotifications +2022-04-04 10:10:00,054 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 43 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 10:11:06,185 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:11:06,185 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:11:06,185 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:11:06,186 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:11:06,186 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:11:06,186 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:11:06,189 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:11:06,190 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:11:06,195 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:11:06,195 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:12:00,000 TRACE __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:12:00,002 DEBUG __ejb-thread-pool5 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:12:00,003 DEBUG __ejb-thread-pool5 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:14:00,001 TRACE __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:14:00,007 DEBUG __ejb-thread-pool6 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:14:00,008 DEBUG __ejb-thread-pool6 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:16:00,001 TRACE __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:16:00,006 DEBUG __ejb-thread-pool1 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:16:00,007 DEBUG __ejb-thread-pool1 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:16:06,227 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:16:06,228 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:16:06,229 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:16:06,229 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:16:06,230 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:16:06,231 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:16:06,235 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:16:06,235 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:16:06,241 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:16:06,241 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:18:00,001 TRACE __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:18:00,002 DEBUG __ejb-thread-pool2 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:18:00,003 DEBUG __ejb-thread-pool2 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:19:28,354 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:28,355 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:28,355 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:28,355 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:28,356 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:28,356 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:28,359 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:28,359 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:28,363 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:28,363 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,590 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,591 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,592 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,592 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,593 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:19:30,593 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,598 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,598 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,602 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,603 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,643 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,644 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,644 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,645 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,645 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:30,646 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,650 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,650 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,766 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,767 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,782 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,782 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,783 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,783 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,783 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getCurrentUser +2022-04-04 10:19:30,783 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,784 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,784 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,784 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,785 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,785 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:30,785 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,786 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,786 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,786 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,786 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,786 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,787 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,787 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:30,787 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,788 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,789 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,790 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,791 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,794 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,795 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,801 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,802 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,803 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,803 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,804 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,804 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,805 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:30,805 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,811 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,811 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,820 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,821 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,824 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,825 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,825 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,826 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,826 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:30,827 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,833 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,833 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,834 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,835 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,836 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:19:30,836 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,836 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,837 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,838 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,839 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,839 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,840 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,840 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:30,840 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,844 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,844 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,845 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,846 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,846 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,846 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,860 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,860 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,872 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,872 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,874 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,874 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,875 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:30,876 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:30,877 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:19:30,877 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:30,881 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:30,882 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:30,883 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:30,884 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:30,922 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:30,922 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:30,925 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isCustomBranding with parameters 'null' +2022-04-04 10:19:30,926 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isCustomBranding +2022-04-04 10:19:30,941 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getLoginBackgroundPath with parameters 'null' +2022-04-04 10:19:30,942 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getLoginBackgroundPath +2022-04-04 10:19:30,946 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCustomFilesPath with parameters 'null' +2022-04-04 10:19:30,946 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCustomFilesPath +2022-04-04 10:19:30,965 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:30,966 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:30,970 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCustomBrandingLogoPath with parameters 'null' +2022-04-04 10:19:30,970 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCustomBrandingLogoPath +2022-04-04 10:19:31,026 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCustomFilesPath with parameters 'null' +2022-04-04 10:19:31,027 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCustomFilesPath +2022-04-04 10:19:31,028 WARN http-thread-pool::http-listener-1(2) d.symeda.sormas.ui.login.LoginScreen - Location for login is missing in loginmain.html +2022-04-04 10:19:31,032 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isUseLoginSidebar with parameters 'null' +2022-04-04 10:19:31,032 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isUseLoginSidebar +2022-04-04 10:19:31,035 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCustomFilesPath with parameters 'null' +2022-04-04 10:19:31,036 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCustomFilesPath +2022-04-04 10:19:31,278 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,278 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:31,371 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,371 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,372 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,372 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:31,372 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getCurrentUser +2022-04-04 10:19:31,373 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:31,375 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:31,376 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:31,380 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,381 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:31,381 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,382 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,382 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,382 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,383 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:31,383 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:31,383 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:31,384 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,384 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,384 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,384 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,385 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:31,385 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:31,386 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:31,386 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:31,386 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:31,386 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,387 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:31,387 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:19:31,388 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:31,390 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:31,391 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:31,391 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,392 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:31,392 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:31,393 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:31,396 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,396 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:31,398 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,398 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:31,424 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,425 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,425 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,426 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:31,426 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:31,427 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:31,429 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:31,429 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:31,433 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,433 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:31,476 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,477 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,477 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:31,478 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:31,478 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:31,478 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:31,480 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:31,481 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:31,490 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:31,490 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:34,545 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:34,546 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:34,547 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:34,547 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:34,547 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:34,548 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:34,550 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:34,551 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:34,555 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:34,555 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:34,954 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:34,955 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:34,957 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:34,958 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:34,960 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.getCurrentUser +2022-04-04 10:19:34,961 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:34,966 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:34,967 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:34,973 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:34,974 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:36,019 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,020 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,020 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,020 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,020 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,020 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,021 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,021 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,021 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:36,021 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:36,021 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,021 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,023 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,023 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,023 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,023 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,035 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:36,035 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:36,036 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:36,037 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:36,056 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,057 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,057 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,058 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,058 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:36,059 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,064 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,064 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,096 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getValidLoginRights with parameters '[NatUser, NatUser]' +2022-04-04 10:19:36,097 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByUserName with parameters '[NatUser]' +2022-04-04 10:19:36,148 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:36,149 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:36,150 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 10:19:36,163 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 10:19:36,163 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 10:19:36,164 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: AuditContextProducer.provideAuditor +2022-04-04 10:19:36,227 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:36,228 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:36,236 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 139 ms: UserService.getByUserName +2022-04-04 10:19:36,252 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:36,264 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigService.getAll with parameters 'null' +2022-04-04 10:19:36,275 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 10 ms: UserRoleConfigService.getAll +2022-04-04 10:19:36,280 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 27 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:36,281 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 184 ms: UserFacadeEjb.getValidLoginRights +2022-04-04 10:19:36,351 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getByUserName with parameters '[NatUser]' +2022-04-04 10:19:36,351 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByUserName with parameters '[NatUser]' +2022-04-04 10:19:36,353 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getByUserName +2022-04-04 10:19:36,354 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getByUserName +2022-04-04 10:19:36,373 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,374 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,377 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isSkipDefaultPasswordCheck with parameters 'null' +2022-04-04 10:19:36,377 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isSkipDefaultPasswordCheck +2022-04-04 10:19:36,395 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:36,396 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:36,416 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,416 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,417 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,434 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:36,434 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:36,436 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 10:19:36,437 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 10:19:36,438 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 10:19:36,438 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.provideAuditor +2022-04-04 10:19:36,442 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:36,443 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:36,445 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 27 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,445 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 28 ms: UserService.getCurrentUser +2022-04-04 10:19:36,446 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 30 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,452 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,453 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,465 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:36,466 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:36,520 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,521 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,521 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,522 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,522 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:36,522 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,526 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,527 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,528 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,528 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,529 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,529 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,530 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:36,531 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,531 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:36,531 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:36,535 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:36,535 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:36,541 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:36,541 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:36,606 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[DASHBOARD]' +2022-04-04 10:19:36,609 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,613 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:19:36,615 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,756 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,756 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,757 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:36,757 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:36,758 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:36,758 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:36,777 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Administrator, Nationale*r Benutzer*in]]' +2022-04-04 10:19:36,778 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigService.getAll with parameters 'null' +2022-04-04 10:19:36,780 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserRoleConfigService.getAll +2022-04-04 10:19:36,781 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:36,818 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CONTACT_TRACING]' +2022-04-04 10:19:36,820 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,822 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CAMPAIGNS]' +2022-04-04 10:19:36,823 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,841 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:36,842 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:36,844 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isCustomBranding with parameters 'null' +2022-04-04 10:19:36,845 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isCustomBranding +2022-04-04 10:19:36,847 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCustomBrandingLogoPath with parameters 'null' +2022-04-04 10:19:36,847 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCustomBrandingLogoPath +2022-04-04 10:19:36,865 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[DASHBOARD]' +2022-04-04 10:19:36,867 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,869 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:19:36,870 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,879 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CONTACT_TRACING]' +2022-04-04 10:19:36,881 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,887 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CAMPAIGNS]' +2022-04-04 10:19:36,888 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,891 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:19:36,893 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,897 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[TASK_MANAGEMENT]' +2022-04-04 10:19:36,898 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,903 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[PERSON_MANAGEMENT]' +2022-04-04 10:19:36,904 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,916 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:19:36,918 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,938 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_FOLLOWUP]' +2022-04-04 10:19:36,939 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:36,945 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[AGGREGATE_REPORTING]' +2022-04-04 10:19:36,946 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,951 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CONTACT_TRACING]' +2022-04-04 10:19:36,952 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,965 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[EVENT_SURVEILLANCE]' +2022-04-04 10:19:36,967 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,980 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[SAMPLES_LAB]' +2022-04-04 10:19:36,982 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,990 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[IMMUNIZATION_MANAGEMENT]' +2022-04-04 10:19:36,991 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:36,994 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[IMMUNIZATION_MANAGEMENT, REDUCED]' +2022-04-04 10:19:36,998 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 10:19:37,000 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[TRAVEL_ENTRIES]' +2022-04-04 10:19:37,002 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:37,003 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[SORMAS_TO_SORMAS_ACCEPT_REJECT]' +2022-04-04 10:19:37,005 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,009 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CAMPAIGNS]' +2022-04-04 10:19:37,011 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:37,014 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[WEEKLY_REPORTING]' +2022-04-04 10:19:37,015 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:37,019 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureDisabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:19:37,021 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureDisabled +2022-04-04 10:19:37,045 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[OUTBREAKS]' +2022-04-04 10:19:37,047 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,051 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:19:37,053 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,055 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isAnySurveillanceEnabled with parameters 'null' +2022-04-04 10:19:37,056 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isAnySurveillanceEnabled +2022-04-04 10:19:37,059 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[INFRASTRUCTURE_TYPE_AREA]' +2022-04-04 10:19:37,061 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,063 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isCountryEnabled with parameters 'null' +2022-04-04 10:19:37,065 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isCountryEnabled +2022-04-04 10:19:37,083 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isDevMode with parameters 'null' +2022-04-04 10:19:37,084 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isDevMode +2022-04-04 10:19:37,089 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[OUTBREAKS]' +2022-04-04 10:19:37,091 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,096 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[GDPR_CONSENT_POPUP]' +2022-04-04 10:19:37,098 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,133 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_FOLLOWUP]' +2022-04-04 10:19:37,134 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,142 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:37,142 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:37,365 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_FOLLOWUP]' +2022-04-04 10:19:37,367 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,391 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled with parameters 'null' +2022-04-04 10:19:37,392 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl with parameters 'null' +2022-04-04 10:19:37,392 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl +2022-04-04 10:19:37,393 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled +2022-04-04 10:19:37,409 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[de]' +2022-04-04 10:19:37,409 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:19:37,453 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:37,454 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:37,584 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationService.getAll with parameters 'null' +2022-04-04 10:19:37,590 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,591 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,592 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 10:19:37,593 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 10:19:37,593 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 10:19:37,594 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.provideAuditor +2022-04-04 10:19:37,595 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,596 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,597 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,597 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,599 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,599 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,600 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,600 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,601 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,601 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,602 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,602 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,603 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,603 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,604 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,605 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,606 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,606 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,608 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,608 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,609 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,610 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,611 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,612 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,613 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,613 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,614 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,615 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,616 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,616 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,617 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,617 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,618 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,619 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,619 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,620 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,621 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,621 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,623 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,623 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,624 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,625 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,626 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,627 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,628 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,628 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,629 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,630 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,631 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,632 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,633 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,633 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,634 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,634 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,635 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,635 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,636 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,636 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,638 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,638 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,640 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,641 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,643 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,644 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,646 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,647 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,649 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,650 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,651 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,652 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,653 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,654 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,656 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,656 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,658 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,658 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,660 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,661 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,663 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,663 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,664 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,665 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,666 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,667 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,668 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,668 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,669 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,670 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,671 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,672 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,673 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,674 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,675 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,676 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,677 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,678 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,680 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,680 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,681 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,682 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,683 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,683 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,684 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,685 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,686 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,686 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,687 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,688 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,690 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,690 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,691 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 107 ms: DiseaseConfigurationService.getAll +2022-04-04 10:19:37,692 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:19:37,693 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:37,694 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:37,694 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:37,694 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:37,695 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:19:37,705 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[de]' +2022-04-04 10:19:37,705 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:19:37,933 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionFacadeEjb.getAllActiveByServerCountry with parameters 'null' +2022-04-04 10:19:37,950 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryFacadeEjb.getServerCountry with parameters 'null' +2022-04-04 10:19:37,951 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryName with parameters 'null' +2022-04-04 10:19:37,951 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryName +2022-04-04 10:19:37,966 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByDefaultName with parameters '[Germany, false]' +2022-04-04 10:19:37,974 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: CountryService.getByDefaultName +2022-04-04 10:19:37,975 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 24 ms: CountryFacadeEjb.getServerCountry +2022-04-04 10:19:37,990 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.createBasicFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@5e7d1bcc]' +2022-04-04 10:19:37,990 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.createBasicFilter +2022-04-04 10:19:37,997 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:19:37,998 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:19:37,999 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 66 ms: RegionFacadeEjb.getAllActiveByServerCountry +2022-04-04 10:19:38,015 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getUsersByRegionAndRights with parameters '[null, null, [Kann f?r einen Fall verantwortlich sein]]' +2022-04-04 10:19:38,015 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getUserReferences with parameters '[[null], null, null, true, true, null, [Kann f?r einen Fall verantwortlich sein]]' +2022-04-04 10:19:38,016 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,016 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,017 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:38,018 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:38,018 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,019 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,020 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRoles with parameters '[[Kann f?r einen Fall verantwortlich sein]]' +2022-04-04 10:19:38,022 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserRoleConfigFacadeEjb.getEffectiveUserRoles +2022-04-04 10:19:38,044 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 28 ms: UserService.getUserReferences +2022-04-04 10:19:38,045 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 30 ms: UserFacadeEjb.getUsersByRegionAndRights +2022-04-04 10:19:38,048 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_FOLLOWUP]' +2022-04-04 10:19:38,050 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,064 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[de]' +2022-04-04 10:19:38,064 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:19:38,076 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[de]' +2022-04-04 10:19:38,077 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:19:38,080 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled with parameters 'null' +2022-04-04 10:19:38,080 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl with parameters 'null' +2022-04-04 10:19:38,080 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl +2022-04-04 10:19:38,081 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,098 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[AUTOMATIC_ARCHIVING, CASE]' +2022-04-04 10:19:38,101 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,106 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.getProperty with parameters '[AUTOMATIC_ARCHIVING, CASE, THRESHOLD_IN_DAYS, class java.lang.Integer]' +2022-04-04 10:19:38,109 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: FeatureConfigurationFacadeEjb.getProperty +2022-04-04 10:19:38,116 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[MANUAL_EXTERNAL_MESSAGES]' +2022-04-04 10:19:38,118 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,122 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isSmsServiceSetUp with parameters 'null' +2022-04-04 10:19:38,122 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isSmsServiceSetUp +2022-04-04 10:19:38,155 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SormasToSormasFacadeEjb.isSharingCasesContactsAndSamplesEnabledForUser with parameters 'null' +2022-04-04 10:19:38,155 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Daten aus einer SORMAS Instanz an eine andere ?bergeben]' +2022-04-04 10:19:38,156 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,156 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,156 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:38,157 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:38,157 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.hasRight +2022-04-04 10:19:38,157 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getS2SConfig with parameters 'null' +2022-04-04 10:19:38,158 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getS2SConfig +2022-04-04 10:19:38,158 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: SormasToSormasFacadeEjb.isSharingCasesContactsAndSamplesEnabledForUser +2022-04-04 10:19:38,160 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled with parameters 'null' +2022-04-04 10:19:38,161 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl with parameters 'null' +2022-04-04 10:19:38,161 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl +2022-04-04 10:19:38,161 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,164 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[EVENT_SURVEILLANCE]' +2022-04-04 10:19:38,166 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,192 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,193 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,194 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,195 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,204 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,204 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,207 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,207 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,210 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,211 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,212 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,213 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,215 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,216 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,219 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,220 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,223 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,224 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,226 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,227 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,230 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,230 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,232 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,232 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,238 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,238 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,241 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,241 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,246 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getSormasInstanceName with parameters 'null' +2022-04-04 10:19:38,246 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getSormasInstanceName +2022-04-04 10:19:38,248 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:19:38,248 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:19:38,250 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[ch]' +2022-04-04 10:19:38,251 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:19:38,360 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.count with parameters '[de.symeda.sormas.api.caze.CaseCriteria@47e43e33]' +2022-04-04 10:19:38,471 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.createUserFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.CriteriaQueryImpl@7ee64690, org.hibernate.query.criteria.internal.path.RootImpl@12939f58, de.symeda.sormas.backend.caze.CaseUserFilterCriteria@496a8857]' +2022-04-04 10:19:38,472 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,472 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,473 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseService.createUserFilter +2022-04-04 10:19:38,473 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.createCriteriaFilter with parameters '[de.symeda.sormas.api.caze.CaseCriteria@47e43e33, de.symeda.sormas.backend.caze.CaseQueryContext@34446b80]' +2022-04-04 10:19:38,491 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalShareInfoService.buildShareCriteriaFilter with parameters '[de.symeda.sormas.api.caze.CaseCriteria@47e43e33, org.hibernate.query.criteria.internal.CriteriaQueryImpl@7ee64690, org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@12939f58, caze, de.symeda.sormas.backend.caze.CaseService$$Lambda$2517/0x0000000842054040@20a11724]' +2022-04-04 10:19:38,492 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ExternalShareInfoService.buildShareCriteriaFilter +2022-04-04 10:19:38,493 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 20 ms: CaseService.createCriteriaFilter +2022-04-04 10:19:38,524 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 163 ms: CaseFacadeEjb.count +2022-04-04 10:19:38,546 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.count with parameters '[de.symeda.sormas.api.caze.CaseCriteria@70b58c77]' +2022-04-04 10:19:38,547 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.createUserFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.CriteriaQueryImpl@10c194c8, org.hibernate.query.criteria.internal.path.RootImpl@107bd3ae, de.symeda.sormas.backend.caze.CaseUserFilterCriteria@6e85904c]' +2022-04-04 10:19:38,547 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,547 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,548 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseService.createUserFilter +2022-04-04 10:19:38,548 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.createCriteriaFilter with parameters '[de.symeda.sormas.api.caze.CaseCriteria@70b58c77, de.symeda.sormas.backend.caze.CaseQueryContext@37891079]' +2022-04-04 10:19:38,548 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalShareInfoService.buildShareCriteriaFilter with parameters '[de.symeda.sormas.api.caze.CaseCriteria@70b58c77, org.hibernate.query.criteria.internal.CriteriaQueryImpl@10c194c8, org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@107bd3ae, caze, de.symeda.sormas.backend.caze.CaseService$$Lambda$2517/0x0000000842054040@355b938e]' +2022-04-04 10:19:38,549 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ExternalShareInfoService.buildShareCriteriaFilter +2022-04-04 10:19:38,549 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseService.createCriteriaFilter +2022-04-04 10:19:38,553 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: CaseFacadeEjb.count +2022-04-04 10:19:38,559 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.getIndexList with parameters '[de.symeda.sormas.api.caze.CaseCriteria@1724fa67, 0, 100, []]' +2022-04-04 10:19:38,571 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseListCriteriaBuilder.buildIndexCriteria with parameters '[de.symeda.sormas.api.caze.CaseCriteria@1724fa67, []]' +2022-04-04 10:19:38,574 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.inJurisdictionOrOwned with parameters '[de.symeda.sormas.backend.caze.CaseQueryContext@28549f0b]' +2022-04-04 10:19:38,574 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,575 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,575 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,576 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:19:38,577 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: CaseService.inJurisdictionOrOwned +2022-04-04 10:19:38,583 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.createUserFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.CriteriaQueryImpl@395a6731, org.hibernate.query.criteria.internal.path.RootImpl@303dc30f, de.symeda.sormas.backend.caze.CaseUserFilterCriteria@12420e62]' +2022-04-04 10:19:38,583 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,584 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,584 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CaseService.createUserFilter +2022-04-04 10:19:38,584 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.createCriteriaFilter with parameters '[de.symeda.sormas.api.caze.CaseCriteria@1724fa67, de.symeda.sormas.backend.caze.CaseQueryContext@28549f0b]' +2022-04-04 10:19:38,585 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalShareInfoService.buildShareCriteriaFilter with parameters '[de.symeda.sormas.api.caze.CaseCriteria@1724fa67, org.hibernate.query.criteria.internal.CriteriaQueryImpl@395a6731, org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@303dc30f, caze, de.symeda.sormas.backend.caze.CaseService$$Lambda$2517/0x0000000842054040@18f3645]' +2022-04-04 10:19:38,585 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ExternalShareInfoService.buildShareCriteriaFilter +2022-04-04 10:19:38,585 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CaseService.createCriteriaFilter +2022-04-04 10:19:38,586 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: CaseListCriteriaBuilder.buildIndexCriteria +2022-04-04 10:19:38,663 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled with parameters 'null' +2022-04-04 10:19:38,663 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl with parameters 'null' +2022-04-04 10:19:38,664 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getExternalSurveillanceToolGatewayUrl +2022-04-04 10:19:38,664 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ExternalSurveillanceToolGatewayFacadeEjb.isFeatureEnabled +2022-04-04 10:19:38,664 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalShareInfoService.getCaseShareCountAndLatestDate with parameters '[[345, 193, 260, 288, 275, 244, 231, 167, 155]]' +2022-04-04 10:19:38,784 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 119 ms: ExternalShareInfoService.getCaseShareCountAndLatestDate +2022-04-04 10:19:38,787 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:19:38,788 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,788 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,788 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:38,789 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:38,789 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:19:38,790 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensible Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:19:38,791 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,791 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,792 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:38,792 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:38,792 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.hasRight +2022-04-04 10:19:38,793 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:19:38,793 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,794 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,794 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:38,794 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:38,795 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:19:38,795 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensitive Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:19:38,796 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:38,796 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:38,796 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:19:38,797 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:19:38,797 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.hasRight +2022-04-04 10:19:38,800 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 241 ms: CaseFacadeEjb.getIndexList +2022-04-04 10:19:38,822 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[COVID-19]' +2022-04-04 10:19:38,822 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,897 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[Affenpocken]' +2022-04-04 10:19:38,897 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,901 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[Affenpocken]' +2022-04-04 10:19:38,902 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,905 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[Affenpocken]' +2022-04-04 10:19:38,906 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,909 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[Affenpocken]' +2022-04-04 10:19:38,909 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,911 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[Affenpocken]' +2022-04-04 10:19:38,912 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,914 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[Affenpocken]' +2022-04-04 10:19:38,915 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,918 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[COVID-19]' +2022-04-04 10:19:38,919 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:38,922 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[COVID-19]' +2022-04-04 10:19:38,922 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:19:39,016 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:39,017 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:19:39,824 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:19:39,825 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:39,826 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:19:39,826 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:19:39,826 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getCurrentUser +2022-04-04 10:19:39,827 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:19:39,830 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:19:39,830 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:19:39,835 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:19:39,835 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:20:00,000 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskFacadeEjb.sendNewAndDueTaskMessages with parameters 'null' +2022-04-04 10:20:00,001 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_START, TASK_START, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2308/0x0000000841e2bc40@7cb8edcc]' +2022-04-04 10:20:00,001 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 10:20:00,004 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:20:00,004 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@2aada0a0, true]' +2022-04-04 10:20:00,006 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: TaskService.findBy +2022-04-04 10:20:00,007 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_START, []]' +2022-04-04 10:20:00,008 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 10:20:00,008 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@7b37f9b3, true]' +2022-04-04 10:20:00,009 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: TaskService.findBy +2022-04-04 10:20:00,010 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_START, []]' +2022-04-04 10:20:00,010 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 10:20:00,010 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 9 ms: NotificationService.sendNotifications +2022-04-04 10:20:00,010 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: NotificationService.sendNotifications with parameters '[TASK_DUE, TASK_DUE, de.symeda.sormas.backend.task.TaskFacadeEjb$$Lambda$2325/0x0000000841eb3440@dfc9a0a]' +2022-04-04 10:20:00,011 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[TASK_NOTIFICATIONS]' +2022-04-04 10:20:00,012 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:20:00,013 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@758ae360, true]' +2022-04-04 10:20:00,014 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: TaskService.findBy +2022-04-04 10:20:00,015 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendEmail with parameters '[{}, TASK_DUE, []]' +2022-04-04 10:20:00,015 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendEmail +2022-04-04 10:20:00,016 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.findBy with parameters '[de.symeda.sormas.api.task.TaskCriteria@560005b9, true]' +2022-04-04 10:20:00,017 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: TaskService.findBy +2022-04-04 10:20:00,018 TRACE __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Started: MessagingService.sendSms with parameters '[{}, TASK_DUE, []]' +2022-04-04 10:20:00,019 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: MessagingService.sendSms +2022-04-04 10:20:00,019 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: NotificationService.sendNotifications +2022-04-04 10:20:00,019 DEBUG __ejb-thread-pool3 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 19 ms: TaskFacadeEjb.sendNewAndDueTaskMessages +2022-04-04 10:20:00,029 TRACE __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.updateCompleteness with parameters 'null' +2022-04-04 10:20:00,031 DEBUG __ejb-thread-pool4 d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CaseFacadeEjb.updateCompleteness +2022-04-04 10:20:00,031 DEBUG __ejb-thread-pool4 d.s.s.backend.common.CronService - calculateCaseCompletion finished. 0 cases, 0 s +2022-04-04 10:21:13,133 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,133 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,134 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,134 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:13,135 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:13,136 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:13,139 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:13,140 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:13,221 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:13,221 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,221 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,222 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:13,222 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:13,223 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:13,238 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionFacadeEjb.getAllActiveByServerCountry with parameters 'null' +2022-04-04 10:21:13,239 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryFacadeEjb.getServerCountry with parameters 'null' +2022-04-04 10:21:13,239 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryName with parameters 'null' +2022-04-04 10:21:13,240 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryName +2022-04-04 10:21:13,240 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByDefaultName with parameters '[Germany, false]' +2022-04-04 10:21:13,243 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CountryService.getByDefaultName +2022-04-04 10:21:13,244 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CountryFacadeEjb.getServerCountry +2022-04-04 10:21:13,244 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.createBasicFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@6c7f85e0]' +2022-04-04 10:21:13,244 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.createBasicFilter +2022-04-04 10:21:13,246 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:13,247 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:13,248 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 10:21:13,249 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 10:21:13,249 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 10:21:13,249 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.provideAuditor +2022-04-04 10:21:13,250 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: RegionFacadeEjb.getAllActiveByServerCountry +2022-04-04 10:21:13,283 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getCountByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:13,283 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:13,286 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: RegionService.getByUuid +2022-04-04 10:21:13,298 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getCountByRegion with parameters '[Voreingestellte Bundesl?nder]' +2022-04-04 10:21:13,302 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: DistrictService.getCountByRegion +2022-04-04 10:21:13,303 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 20 ms: DistrictFacadeEjb.getCountByRegion +2022-04-04 10:21:13,306 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:13,306 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,306 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:13,307 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:13,307 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:13,308 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:13,340 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: OutbreakFacadeEjb.getActive with parameters '[de.symeda.sormas.api.outbreak.OutbreakCriteria@6cbb0040]' +2022-04-04 10:21:13,371 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: OutbreakService.queryByCriteria with parameters '[de.symeda.sormas.api.outbreak.OutbreakCriteria@6cbb0040, null, disease, true]' +2022-04-04 10:21:13,376 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: OutbreakService.queryByCriteria +2022-04-04 10:21:13,499 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 158 ms: OutbreakFacadeEjb.getActive +2022-04-04 10:21:13,503 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[OUTBREAKS]' +2022-04-04 10:21:13,505 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:21:13,510 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:21:13,511 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:21:13,514 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isAnySurveillanceEnabled with parameters 'null' +2022-04-04 10:21:13,516 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isAnySurveillanceEnabled +2022-04-04 10:21:13,518 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isCountryEnabled with parameters 'null' +2022-04-04 10:21:13,520 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isCountryEnabled +2022-04-04 10:21:13,523 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[INFRASTRUCTURE_TYPE_AREA]' +2022-04-04 10:21:13,525 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:21:13,528 TRACE NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isDevMode with parameters 'null' +2022-04-04 10:21:13,528 DEBUG NatUser http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isDevMode +2022-04-04 10:21:13,566 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:13,566 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:18,226 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,228 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,231 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,234 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:18,236 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: UserService.getCurrentUser +2022-04-04 10:21:18,238 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:18,249 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:18,251 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:18,347 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:18,348 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,348 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,349 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:18,349 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:18,350 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:18,377 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionFacadeEjb.getAllActiveByServerCountry with parameters 'null' +2022-04-04 10:21:18,377 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryFacadeEjb.getServerCountry with parameters 'null' +2022-04-04 10:21:18,378 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryName with parameters 'null' +2022-04-04 10:21:18,378 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryName +2022-04-04 10:21:18,379 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByDefaultName with parameters '[Germany, false]' +2022-04-04 10:21:18,381 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CountryService.getByDefaultName +2022-04-04 10:21:18,382 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CountryFacadeEjb.getServerCountry +2022-04-04 10:21:18,383 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.createBasicFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@7a5a573c]' +2022-04-04 10:21:18,383 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.createBasicFilter +2022-04-04 10:21:18,385 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:18,386 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:18,386 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 10:21:18,387 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 10:21:18,389 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 10:21:18,390 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: AuditContextProducer.provideAuditor +2022-04-04 10:21:18,393 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 16 ms: RegionFacadeEjb.getAllActiveByServerCountry +2022-04-04 10:21:18,416 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getAllActiveByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,416 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,418 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: RegionService.getByUuid +2022-04-04 10:21:18,422 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:18,424 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:18,425 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 9 ms: DistrictFacadeEjb.getAllActiveByRegion +2022-04-04 10:21:18,432 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:18,432 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,433 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,433 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:18,433 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getCurrentUser +2022-04-04 10:21:18,434 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:18,440 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionFacadeEjb.getAllActiveByServerCountry with parameters 'null' +2022-04-04 10:21:18,441 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryFacadeEjb.getServerCountry with parameters 'null' +2022-04-04 10:21:18,442 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryName with parameters 'null' +2022-04-04 10:21:18,442 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryName +2022-04-04 10:21:18,443 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByDefaultName with parameters '[Germany, false]' +2022-04-04 10:21:18,444 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CountryService.getByDefaultName +2022-04-04 10:21:18,445 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: CountryFacadeEjb.getServerCountry +2022-04-04 10:21:18,446 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.createBasicFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@67f89cb5]' +2022-04-04 10:21:18,446 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.createBasicFilter +2022-04-04 10:21:18,448 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: RegionFacadeEjb.getAllActiveByServerCountry +2022-04-04 10:21:18,454 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getAllActiveByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,455 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,459 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: RegionService.getByUuid +2022-04-04 10:21:18,460 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: DistrictFacadeEjb.getAllActiveByRegion +2022-04-04 10:21:18,467 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:18,467 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,468 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,468 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:18,468 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:18,469 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:18,475 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionFacadeEjb.getAllActiveAsReference with parameters 'null' +2022-04-04 10:21:18,476 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getAllActive with parameters '[name, true]' +2022-04-04 10:21:18,478 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: RegionService.getAllActive +2022-04-04 10:21:18,479 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: RegionFacadeEjb.getAllActiveAsReference +2022-04-04 10:21:18,485 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getAllActiveByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,485 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,488 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: RegionService.getByUuid +2022-04-04 10:21:18,489 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: DistrictFacadeEjb.getAllActiveByRegion +2022-04-04 10:21:18,493 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getAllActiveByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,494 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,496 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: RegionService.getByUuid +2022-04-04 10:21:18,497 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: DistrictFacadeEjb.getAllActiveByRegion +2022-04-04 10:21:18,501 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:18,502 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,503 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:18,503 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:18,504 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:18,505 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:18,511 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionFacadeEjb.getAllActiveByServerCountry with parameters 'null' +2022-04-04 10:21:18,511 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryFacadeEjb.getServerCountry with parameters 'null' +2022-04-04 10:21:18,512 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryName with parameters 'null' +2022-04-04 10:21:18,512 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryName +2022-04-04 10:21:18,513 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByDefaultName with parameters '[Germany, false]' +2022-04-04 10:21:18,515 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: CountryService.getByDefaultName +2022-04-04 10:21:18,516 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: CountryFacadeEjb.getServerCountry +2022-04-04 10:21:18,516 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.createBasicFilter with parameters '[org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@4847f313]' +2022-04-04 10:21:18,517 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.createBasicFilter +2022-04-04 10:21:18,519 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: RegionFacadeEjb.getAllActiveByServerCountry +2022-04-04 10:21:18,560 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityFacadeEjb.getAllActiveLaboratories with parameters '[true]' +2022-04-04 10:21:18,574 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getAllActiveLaboratories with parameters '[true]' +2022-04-04 10:21:18,583 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:18,583 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:18,585 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:18,586 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:18,590 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:18,591 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:18,593 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 17 ms: FacilityService.getAllActiveLaboratories +2022-04-04 10:21:18,593 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 32 ms: FacilityFacadeEjb.getAllActiveLaboratories +2022-04-04 10:21:18,603 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getAllActiveByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,603 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,605 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: RegionService.getByUuid +2022-04-04 10:21:18,606 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: DistrictFacadeEjb.getAllActiveByRegion +2022-04-04 10:21:18,610 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getAllActiveByRegion with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,611 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByUuid with parameters '[00000000-0000-0000-0000-000000000003]' +2022-04-04 10:21:18,613 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: RegionService.getByUuid +2022-04-04 10:21:18,614 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: DistrictFacadeEjb.getAllActiveByRegion +2022-04-04 10:21:18,620 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[OUTBREAKS]' +2022-04-04 10:21:18,623 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:21:18,626 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[CASE_SURVEILANCE]' +2022-04-04 10:21:18,628 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:21:18,631 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isAnySurveillanceEnabled with parameters 'null' +2022-04-04 10:21:18,634 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isAnySurveillanceEnabled +2022-04-04 10:21:18,636 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isCountryEnabled with parameters 'null' +2022-04-04 10:21:18,640 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: FeatureConfigurationFacadeEjb.isCountryEnabled +2022-04-04 10:21:18,643 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isFeatureEnabled with parameters '[INFRASTRUCTURE_TYPE_AREA]' +2022-04-04 10:21:18,646 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FeatureConfigurationFacadeEjb.isFeatureEnabled +2022-04-04 10:21:18,649 TRACE NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isDevMode with parameters 'null' +2022-04-04 10:21:18,650 DEBUG NatUser http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isDevMode +2022-04-04 10:21:18,694 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:18,694 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:22,486 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:22,488 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:22,490 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:22,491 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:22,493 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.getCurrentUser +2022-04-04 10:21:22,495 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:22,503 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:22,504 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:22,517 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:22,518 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:23,104 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:23,105 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:23,105 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:23,106 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:23,106 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:23,106 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:23,108 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:23,109 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:23,112 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:23,112 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:31,624 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:31,626 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:31,628 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:31,630 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:31,632 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: UserService.getCurrentUser +2022-04-04 10:21:31,634 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:31,646 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:31,648 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:31,662 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:31,664 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:33,860 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:33,862 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:33,864 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:33,866 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:33,874 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: UserService.getCurrentUser +2022-04-04 10:21:33,876 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 15 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:33,888 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:33,890 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:33,903 TRACE http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:33,905 DEBUG http-thread-pool::http-listener-1(5) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:36,974 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:36,974 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:36,975 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:36,976 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:36,976 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:36,977 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:36,980 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:36,980 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:36,985 TRACE http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:36,985 DEBUG http-thread-pool::http-listener-1(1) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:38,126 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:38,127 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:38,128 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:38,128 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:38,129 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:21:38,129 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:38,133 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:38,133 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:38,137 TRACE http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:38,138 DEBUG http-thread-pool::http-listener-1(3) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:40,210 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,212 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,213 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,215 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:40,217 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.getCurrentUser +2022-04-04 10:21:40,219 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:40,223 TRACE http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:40,224 DEBUG http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:40,228 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:40,229 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,230 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,231 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:40,232 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:21:40,233 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:40,245 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityFacadeEjb.getIndexList with parameters '[de.symeda.sormas.api.infrastructure.facility.FacilityCriteria@701fb4e2, 0, 300, [de.symeda.sormas.api.utils.SortProperty@3a205ebb]]' +2022-04-04 10:21:40,246 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.buildCriteriaFilter with parameters '[de.symeda.sormas.api.infrastructure.facility.FacilityCriteria@701fb4e2, org.hibernate.query.criteria.internal.CriteriaBuilderImpl@347dc96e, org.hibernate.query.criteria.internal.path.RootImpl@6853570]' +2022-04-04 10:21:40,248 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: FacilityService.buildCriteriaFilter +2022-04-04 10:21:40,267 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 22 ms: FacilityFacadeEjb.getIndexList +2022-04-04 10:21:40,276 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:40,276 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:40,286 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getAllDiseases with parameters '[true, true, true]' +2022-04-04 10:21:40,286 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,286 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:40,287 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:40,287 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:40,287 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: DiseaseConfigurationFacadeEjb.getAllDiseases +2022-04-04 10:21:40,369 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonFacadeEjb.savePerson with parameters '[Malik Darius TINIBU-OKAR]' +2022-04-04 10:21:40,652 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.getByUuid with parameters '[T6ID5Z-3MDB3Q-ZSJO2F-4QHV2EWU]' +2022-04-04 10:21:40,657 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: PersonService.getByUuid +2022-04-04 10:21:40,662 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.createPerson with parameters 'null' +2022-04-04 10:21:40,663 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: PersonService.createPerson +2022-04-04 10:21:40,679 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: LocationFacadeEjb.fromDto with parameters '[, true]' +2022-04-04 10:21:40,696 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: LocationService.getByUuid with parameters '[U6ABKG-SGEGKI-JVSHX4-OWRMSDNA]' +2022-04-04 10:21:40,701 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: LocationService.getByUuid +2022-04-04 10:21:40,718 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ContinentService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,719 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ContinentService.getByReferenceDto +2022-04-04 10:21:40,750 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SubcontinentService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,752 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: SubcontinentService.getByReferenceDto +2022-04-04 10:21:40,752 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,753 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CountryService.getByReferenceDto +2022-04-04 10:21:40,754 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,754 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:40,755 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,756 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:40,776 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,777 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:40,778 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,778 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: FacilityService.getByReferenceDto +2022-04-04 10:21:40,779 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 99 ms: LocationFacadeEjb.fromDto +2022-04-04 10:21:40,978 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,979 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:40,980 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,981 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:40,982 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,982 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:40,983 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,983 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: FacilityService.getByReferenceDto +2022-04-04 10:21:40,984 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,984 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CountryService.getByReferenceDto +2022-04-04 10:21:40,984 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:40,985 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CountryService.getByReferenceDto +2022-04-04 10:21:40,985 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.ensurePersisted with parameters '[Malik Darius TINIBU-OKAR]' +2022-04-04 10:21:40,986 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:40,987 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:40,988 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideAuditor with parameters 'null' +2022-04-04 10:21:40,989 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled with parameters 'null' +2022-04-04 10:21:40,990 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isAuditorAttributeLoggingEnabled +2022-04-04 10:21:40,990 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.provideAuditor +2022-04-04 10:21:40,993 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.provideTransactionId with parameters 'null' +2022-04-04 10:21:40,994 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.provideTransactionId +2022-04-04 10:21:41,017 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@447b7e24]' +2022-04-04 10:21:41,041 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 23 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,042 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,043 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,046 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,048 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,050 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@31742ac5]' +2022-04-04 10:21:41,051 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,052 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,052 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,105 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 120 ms: PersonService.ensurePersisted +2022-04-04 10:21:41,106 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:41,107 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,108 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,108 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,109 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,109 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:21:41,110 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensible Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:41,111 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,111 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,112 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,113 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,114 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.hasRight +2022-04-04 10:21:41,115 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:41,116 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,116 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,117 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,118 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,119 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.hasRight +2022-04-04 10:21:41,119 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensitive Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:41,120 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,120 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,121 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,121 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,122 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:41,125 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 755 ms: PersonFacadeEjb.savePerson +2022-04-04 10:21:41,213 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.save with parameters '[XFREXQ-KCWAJ2-VWWWJ7-P4SECOSE - null]' +2022-04-04 10:21:41,287 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.getByUuid with parameters '[XFREXQ-KCWAJ2-VWWWJ7-P4SECOSE]' +2022-04-04 10:21:41,292 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,293 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,298 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@12f0956]' +2022-04-04 10:21:41,299 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,301 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,302 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,309 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 21 ms: CaseService.getByUuid +2022-04-04 10:21:41,316 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:41,317 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,318 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,319 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,320 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,321 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.hasRight +2022-04-04 10:21:41,322 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensible Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:41,323 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,324 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,325 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,326 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,327 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: UserService.hasRight +2022-04-04 10:21:41,329 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:41,331 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,333 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,334 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,335 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,336 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: UserService.hasRight +2022-04-04 10:21:41,337 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensitive Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:41,338 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,339 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,341 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,343 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,345 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 8 ms: UserService.hasRight +2022-04-04 10:21:41,355 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Zugriff auf Fall-Bereiche im Zusammenhang mit der Fallverwaltung]' +2022-04-04 10:21:41,358 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,360 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,361 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:41,362 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:41,363 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: UserService.hasRight +2022-04-04 10:21:41,390 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityFacadeEjb.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:41,392 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:41,397 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,398 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,404 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@4338f563]' +2022-04-04 10:21:41,407 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,409 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,410 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,420 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,421 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,423 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,424 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,427 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,429 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,431 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 39 ms: CommunityService.getByUuid +2022-04-04 10:21:41,432 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 41 ms: CommunityFacadeEjb.getByUuid +2022-04-04 10:21:41,473 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getByUuid with parameters '[00000000-0000-0000-0000-000000000004]' +2022-04-04 10:21:41,474 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByUuid with parameters '[00000000-0000-0000-0000-000000000004]' +2022-04-04 10:21:41,651 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,652 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,654 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@2f01b16]' +2022-04-04 10:21:41,655 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,656 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,657 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,659 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 185 ms: DistrictService.getByUuid +2022-04-04 10:21:41,659 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 185 ms: DistrictFacadeEjb.getByUuid +2022-04-04 10:21:41,660 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityFacadeEjb.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:41,662 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:41,664 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,665 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,667 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@673a8e21]' +2022-04-04 10:21:41,669 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,670 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,670 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,672 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 9 ms: CommunityService.getByUuid +2022-04-04 10:21:41,672 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: CommunityFacadeEjb.getByUuid +2022-04-04 10:21:41,690 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityFacadeEjb.getByUuid with parameters '[R56EOU-P6PKQ7-WGVBDT-CINTCGRA]' +2022-04-04 10:21:41,691 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByUuid with parameters '[R56EOU-P6PKQ7-WGVBDT-CINTCGRA]' +2022-04-04 10:21:41,693 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,695 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,699 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@1c5b138d]' +2022-04-04 10:21:41,701 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,702 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserFacadeEjb.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,703 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,703 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,704 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,705 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,705 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,706 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:21:41,706 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserFacadeEjb.getCurrentUser +2022-04-04 10:21:41,708 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,709 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,710 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.setUserLanguage with parameters '[null]' +2022-04-04 10:21:41,710 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 19 ms: FacilityService.getByUuid +2022-04-04 10:21:41,710 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.setUserLanguage +2022-04-04 10:21:41,711 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 21 ms: FacilityFacadeEjb.getByUuid +2022-04-04 10:21:41,717 TRACE http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Started: I18nFacadeEjb.removeUserLanguage with parameters 'null' +2022-04-04 10:21:41,718 DEBUG http-thread-pool::http-listener-1(4) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: I18nFacadeEjb.removeUserLanguage +2022-04-04 10:21:41,728 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalJournalService.handleExternalJournalPersonUpdateAsync with parameters '[Malik Darius TINIBU-OKAR]' +2022-04-04 10:21:41,729 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isExternalJournalActive with parameters 'null' +2022-04-04 10:21:41,730 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isExternalJournalActive +2022-04-04 10:21:41,731 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: ExternalJournalService.handleExternalJournalPersonUpdateAsync +2022-04-04 10:21:41,732 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[National USER - Administrator, Nationale*r Benutzer*in]' +2022-04-04 10:21:41,735 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,736 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,738 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@204fd61c]' +2022-04-04 10:21:41,740 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,741 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,742 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,746 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,747 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,803 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,804 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,807 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 74 ms: UserService.getByReferenceDto +2022-04-04 10:21:41,808 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.getByReferenceDto with parameters '[Malik Darius TINIBU-OKAR]' +2022-04-04 10:21:41,811 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:41,812 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:41,814 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@265337f3]' +2022-04-04 10:21:41,816 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:41,817 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:41,817 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:41,825 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 17 ms: PersonService.getByReferenceDto +2022-04-04 10:21:41,826 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:41,828 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getByReferenceDto +2022-04-04 10:21:41,842 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HospitalizationFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.hospitalization.HospitalizationDto@a318e980, true]' +2022-04-04 10:21:41,858 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HospitalizationService.getByUuid with parameters '[TON4R3-XOVCAN-ADZFMC-3QAPKACI]' +2022-04-04 10:21:41,863 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: HospitalizationService.getByUuid +2022-04-04 10:21:41,865 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 23 ms: HospitalizationFacadeEjb.fromDto +2022-04-04 10:21:41,882 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: EpiDataFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.epidata.EpiDataDto@21ff7aa6, true]' +2022-04-04 10:21:41,909 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: EpiDataService.getByUuid with parameters '[RYZFXA-OOXEWA-S6JKW7-LO6LCPMI]' +2022-04-04 10:21:42,059 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 149 ms: EpiDataService.getByUuid +2022-04-04 10:21:42,061 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 178 ms: EpiDataFacadeEjb.fromDto +2022-04-04 10:21:42,075 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: TherapyFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.therapy.TherapyDto@edcce30d, true]' +2022-04-04 10:21:42,095 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: TherapyService.getByUuid with parameters '[QWINYD-OIXFUX-EW6EOL-GYCMSC74]' +2022-04-04 10:21:42,101 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: TherapyService.getByUuid +2022-04-04 10:21:42,102 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 26 ms: TherapyFacadeEjb.fromDto +2022-04-04 10:21:42,120 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HealthConditionsMapper.fromDto with parameters '[de.symeda.sormas.api.clinicalcourse.HealthConditionsDto@ad62c12f, true]' +2022-04-04 10:21:42,136 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HealthConditionsService.getByUuid with parameters '[TFG63P-EPODZA-S33QOV-5J4F2MEA]' +2022-04-04 10:21:42,141 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: HealthConditionsService.getByUuid +2022-04-04 10:21:42,142 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 21 ms: HealthConditionsMapper.fromDto +2022-04-04 10:21:42,163 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ClinicalCourseFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.clinicalcourse.ClinicalCourseDto@a2f94ec5, true]' +2022-04-04 10:21:42,197 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ClinicalCourseService.getByUuid with parameters '[UTCJ24-VASPL3-37SFOE-R5OA2BTM]' +2022-04-04 10:21:42,201 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: ClinicalCourseService.getByUuid +2022-04-04 10:21:42,365 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 201 ms: ClinicalCourseFacadeEjb.fromDto +2022-04-04 10:21:42,380 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: MaternalHistoryFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.caze.maternalhistory.MaternalHistoryDto@d9253b2, true]' +2022-04-04 10:21:42,398 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: MaternalHistoryService.getByUuid with parameters '[TEPL6G-3MHAX5-FCNZUM-MLAFCCD4]' +2022-04-04 10:21:42,403 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: MaternalHistoryService.getByUuid +2022-04-04 10:21:42,405 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,406 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:42,407 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,408 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:42,409 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,409 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:42,409 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 28 ms: MaternalHistoryFacadeEjb.fromDto +2022-04-04 10:21:42,423 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PortHealthInfoFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.caze.porthealthinfo.PortHealthInfoDto@7f4770a4, true]' +2022-04-04 10:21:42,440 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PortHealthInfoService.getByUuid with parameters '[SBTZZS-UY7IM2-ZJB5EV-JQ572OIA]' +2022-04-04 10:21:42,446 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: PortHealthInfoService.getByUuid +2022-04-04 10:21:42,447 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 23 ms: PortHealthInfoFacadeEjb.fromDto +2022-04-04 10:21:42,448 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[Voreingestellte Bundesl?nder]' +2022-04-04 10:21:42,451 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: RegionService.getByReferenceDto +2022-04-04 10:21:42,451 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[Voreingestellter Landkreis]' +2022-04-04 10:21:42,454 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:42,455 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[Voreingestellte Gemeinde]' +2022-04-04 10:21:42,459 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:42,460 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,461 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:42,462 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,463 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:42,464 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,465 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:42,467 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByReferenceDto with parameters '[Standard Einrichtung]' +2022-04-04 10:21:42,470 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: FacilityService.getByReferenceDto +2022-04-04 10:21:42,471 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,471 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:42,472 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,472 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:42,485 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SymptomsFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.symptoms.SymptomsDto@5ab1b8b3, true]' +2022-04-04 10:21:42,514 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SymptomsService.getByUuid with parameters '[S4O4WY-6MKPAT-RUHWXW-RFXJKLHQ]' +2022-04-04 10:21:42,582 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 68 ms: SymptomsService.getByUuid +2022-04-04 10:21:42,762 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 276 ms: SymptomsFacadeEjb.fromDto +2022-04-04 10:21:42,777 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PointOfEntryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,777 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: PointOfEntryService.getByReferenceDto +2022-04-04 10:21:42,778 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:42,779 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:42,780 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.ensurePersisted with parameters '[Malik Darius TINIBU-OKAR (XFREXQ)]' +2022-04-04 10:21:42,781 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,782 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,784 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@4f3accb7]' +2022-04-04 10:21:42,786 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,788 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,788 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,791 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,791 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,793 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@45c887e2]' +2022-04-04 10:21:42,794 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,795 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,796 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,799 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,800 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,801 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@6a10afdc]' +2022-04-04 10:21:42,803 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,804 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,805 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,807 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,808 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,809 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@4e4ae7fd]' +2022-04-04 10:21:42,811 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,812 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,813 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,815 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,816 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,818 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@629b11d]' +2022-04-04 10:21:42,821 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,822 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,822 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,826 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,827 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,829 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@41539fbe]' +2022-04-04 10:21:42,830 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,832 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,833 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,836 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,837 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,839 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@392c1ac6]' +2022-04-04 10:21:42,842 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,843 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,844 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,846 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,846 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,849 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@1f5cdc9f]' +2022-04-04 10:21:42,851 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,852 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,853 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,856 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,857 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,858 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@56a037d0]' +2022-04-04 10:21:42,860 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:42,862 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:42,862 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:42,925 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 145 ms: CaseService.ensurePersisted +2022-04-04 10:21:42,943 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: VisitService.getAllRelevantVisits with parameters '[Malik Darius TINIBU-OKAR, COVID-19, null, Mon Feb 14 17:29:00 CET 2022]' +2022-04-04 10:21:42,951 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: VisitService.getAllRelevantVisits +2022-04-04 10:21:42,952 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.updateFollowUpDetails with parameters '[Malik Darius TINIBU-OKAR (XFREXQ), false]' +2022-04-04 10:21:42,970 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationService.getAll with parameters 'null' +2022-04-04 10:21:42,981 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,982 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,984 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,985 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,987 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,988 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,989 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,991 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,994 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,995 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,996 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,996 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:42,997 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:42,998 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,000 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,000 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,001 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,002 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,002 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,003 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,004 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,005 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,006 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,008 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,011 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,011 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,012 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,013 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,014 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,014 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,015 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,016 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,018 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,018 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,020 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,020 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,021 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,022 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,024 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,026 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,029 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,029 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,030 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,031 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,032 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,033 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,035 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,035 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,036 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,037 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,038 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,039 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,041 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,043 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,044 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,045 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,046 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,047 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,048 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,048 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,049 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,050 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,052 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,053 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,054 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,055 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,056 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,057 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,059 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,060 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,061 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,062 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,063 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,064 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,065 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,066 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,067 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,068 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,069 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,071 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,072 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,073 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,076 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,077 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,079 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,080 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,081 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,082 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,083 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,083 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,085 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,086 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,088 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,089 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,091 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,092 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,094 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,095 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,096 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,096 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,097 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,098 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,100 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,100 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,101 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,102 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,103 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,103 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,105 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,105 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,108 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,109 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,111 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 140 ms: DiseaseConfigurationService.getAll +2022-04-04 10:21:43,112 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.hasFollowUp with parameters '[COVID-19]' +2022-04-04 10:21:43,112 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.hasFollowUp +2022-04-04 10:21:43,126 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SampleService.getEarliestSampleDate with parameters '[[]]' +2022-04-04 10:21:43,127 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: SampleService.getEarliestSampleDate +2022-04-04 10:21:43,169 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.toDto with parameters '[Malik Darius TINIBU-OKAR (XFREXQ)]' +2022-04-04 10:21:43,328 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 158 ms: CaseFacadeEjb.toDto +2022-04-04 10:21:43,331 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DiseaseConfigurationFacadeEjb.getCaseFollowUpDuration with parameters '[COVID-19]' +2022-04-04 10:21:43,332 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DiseaseConfigurationFacadeEjb.getCaseFollowUpDuration +2022-04-04 10:21:43,332 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[CASE_FOLLOWUP, ALLOW_FREE_FOLLOW_UP_OVERWRITE]' +2022-04-04 10:21:43,363 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 30 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 10:21:43,365 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalJournalService.handleExternalJournalPersonUpdateAsync with parameters '[Malik Darius TINIBU-OKAR]' +2022-04-04 10:21:43,366 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isExternalJournalActive with parameters 'null' +2022-04-04 10:21:43,366 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isExternalJournalActive +2022-04-04 10:21:43,366 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ExternalJournalService.handleExternalJournalPersonUpdateAsync +2022-04-04 10:21:43,371 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,372 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,376 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@3000e33a]' +2022-04-04 10:21:43,378 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:43,379 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,380 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,397 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 444 ms: CaseService.updateFollowUpDetails +2022-04-04 10:21:43,398 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:43,398 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:43,399 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[CASE_SURVEILANCE, AUTOMATIC_RESPONSIBILITY_ASSIGNMENT]' +2022-04-04 10:21:43,405 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 10:21:43,406 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.hasUserRight with parameters '[[Nationale*r Benutzer*in, Administrator], Kann f?r einen Fall verantwortlich sein]' +2022-04-04 10:21:43,407 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.hasUserRight +2022-04-04 10:21:43,408 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getFacilityUsersOfHospital with parameters '[Standard Einrichtung]' +2022-04-04 10:21:43,470 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,472 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,484 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,485 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,488 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,489 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,546 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,547 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,549 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 141 ms: UserService.getFacilityUsersOfHospital +2022-04-04 10:21:43,550 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isTaskGenerationFeatureEnabled with parameters '[Falluntersuchung]' +2022-04-04 10:21:43,553 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,554 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,557 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@1c7247da]' +2022-04-04 10:21:43,559 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:43,560 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,561 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,563 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: FeatureConfigurationFacadeEjb.isTaskGenerationFeatureEnabled +2022-04-04 10:21:43,568 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: TaskService.ensurePersisted with parameters '[de.symeda.sormas.backend.task.Task@c87c3ee8]' +2022-04-04 10:21:43,571 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,572 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,574 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@414b6386]' +2022-04-04 10:21:43,576 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:43,577 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,578 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,582 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:43,583 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:43,585 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@6a228726]' +2022-04-04 10:21:43,586 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:43,587 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,588 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,600 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 29 ms: TaskService.ensurePersisted +2022-04-04 10:21:43,601 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isFeatureAutomaticCaseClassification with parameters 'null' +2022-04-04 10:21:43,601 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isFeatureAutomaticCaseClassification +2022-04-04 10:21:43,618 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseClassificationFacadeEjb.getClassification with parameters '[XFREXQ-KCWAJ2-VWWWJ7-P4SECOSE - null]' +2022-04-04 10:21:43,621 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:43,622 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:43,624 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:43,626 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:43,626 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:43,627 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:43,628 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:43,628 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:43,672 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonFacadeEjb.getPersonByUuid with parameters '[T6ID5Z-3MDB3Q-ZSJO2F-4QHV2EWU]' +2022-04-04 10:21:43,673 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:43,675 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,676 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,677 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:43,678 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:43,680 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: UserService.hasRight +2022-04-04 10:21:43,681 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensible Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:43,682 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,683 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,683 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:43,684 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:43,685 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:43,685 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:43,686 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,687 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,687 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:43,688 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:43,688 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:21:43,689 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensitive Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:43,689 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,690 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,691 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:43,691 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:43,692 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:43,694 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.getByUuid with parameters '[T6ID5Z-3MDB3Q-ZSJO2F-4QHV2EWU]' +2022-04-04 10:21:43,699 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: PersonService.getByUuid +2022-04-04 10:21:43,701 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.inJurisdictionOrOwned with parameters '[Malik Darius TINIBU-OKAR]' +2022-04-04 10:21:43,702 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,703 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,704 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,705 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:21:43,705 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FeatureConfigurationFacadeEjb.isPropertyValueTrue with parameters '[IMMUNIZATION_MANAGEMENT, REDUCED]' +2022-04-04 10:21:43,712 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: FeatureConfigurationFacadeEjb.isPropertyValueTrue +2022-04-04 10:21:43,763 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 61 ms: PersonService.inJurisdictionOrOwned +2022-04-04 10:21:43,764 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 91 ms: PersonFacadeEjb.getPersonByUuid +2022-04-04 10:21:43,779 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PathogenTestService.getAllByCase with parameters '[XFREXQ-KCWAJ2-VWWWJ7-P4SECOSE]' +2022-04-04 10:21:43,798 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 18 ms: PathogenTestService.getAllByCase +2022-04-04 10:21:43,831 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: EventService.getAllByCase with parameters '[XFREXQ-KCWAJ2-VWWWJ7-P4SECOSE]' +2022-04-04 10:21:43,832 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,833 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:43,834 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:43,834 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,046 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 214 ms: EventService.getAllByCase +2022-04-04 10:21:44,049 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 430 ms: CaseClassificationFacadeEjb.getClassification +2022-04-04 10:21:44,049 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[de]' +2022-04-04 10:21:44,050 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:21:44,062 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: VaccinationFacadeEjb.updateVaccinationStatuses with parameters '[Malik Darius TINIBU-OKAR (XFREXQ)]' +2022-04-04 10:21:44,077 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ImmunizationService.getByPersonAndDisease with parameters '[T6ID5Z-3MDB3Q-ZSJO2F-4QHV2EWU, COVID-19, true]' +2022-04-04 10:21:44,086 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,087 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,090 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@499b61b2]' +2022-04-04 10:21:44,092 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,094 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,095 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,101 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 24 ms: ImmunizationService.getByPersonAndDisease +2022-04-04 10:21:44,102 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 39 ms: VaccinationFacadeEjb.updateVaccinationStatuses +2022-04-04 10:21:44,102 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isConfiguredCountry with parameters '[de]' +2022-04-04 10:21:44,103 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isConfiguredCountry +2022-04-04 10:21:44,104 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.inJurisdictionOrOwned with parameters '[Malik Darius TINIBU-OKAR (XFREXQ)]' +2022-04-04 10:21:44,104 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,105 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,105 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,106 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: UserService.getCurrentUser +2022-04-04 10:21:44,111 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,112 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,115 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@2527d883]' +2022-04-04 10:21:44,116 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,117 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,118 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,127 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 23 ms: CaseService.inJurisdictionOrOwned +2022-04-04 10:21:44,129 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,129 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,130 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,131 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.getCurrentUser +2022-04-04 10:21:44,134 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2920 ms: CaseFacadeEjb.save +2022-04-04 10:21:44,150 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.getCountryLocale with parameters 'null' +2022-04-04 10:21:44,150 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.getCountryLocale +2022-04-04 10:21:44,188 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonFacadeEjb.savePerson with parameters '[Bandile Bandile APELOKO-TINIBU]' +2022-04-04 10:21:44,190 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.getByUuid with parameters '[WXQPWU-TGGJ5A-KUW4S3-E4JUSLFU]' +2022-04-04 10:21:44,198 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: PersonService.getByUuid +2022-04-04 10:21:44,199 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.createPerson with parameters 'null' +2022-04-04 10:21:44,200 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: PersonService.createPerson +2022-04-04 10:21:44,200 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: LocationFacadeEjb.fromDto with parameters '[, true]' +2022-04-04 10:21:44,201 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: LocationService.getByUuid with parameters '[UZQGEN-6RPNGL-CDR56H-BMOXSPBQ]' +2022-04-04 10:21:44,205 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: LocationService.getByUuid +2022-04-04 10:21:44,206 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ContinentService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,207 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ContinentService.getByReferenceDto +2022-04-04 10:21:44,207 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SubcontinentService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,208 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: SubcontinentService.getByReferenceDto +2022-04-04 10:21:44,208 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,208 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CountryService.getByReferenceDto +2022-04-04 10:21:44,209 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,209 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:44,209 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,210 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:44,211 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,212 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:44,212 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,213 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: FacilityService.getByReferenceDto +2022-04-04 10:21:44,214 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: LocationFacadeEjb.fromDto +2022-04-04 10:21:44,214 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,215 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:44,216 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,216 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:44,217 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,217 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:44,218 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,218 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: FacilityService.getByReferenceDto +2022-04-04 10:21:44,219 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,220 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CountryService.getByReferenceDto +2022-04-04 10:21:44,221 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CountryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,221 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CountryService.getByReferenceDto +2022-04-04 10:21:44,222 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.ensurePersisted with parameters '[Bandile Bandile APELOKO-TINIBU]' +2022-04-04 10:21:44,223 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,224 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,227 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@43df5b22]' +2022-04-04 10:21:44,230 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,232 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,233 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,235 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,236 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,239 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@2623f8f0]' +2022-04-04 10:21:44,241 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,242 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,243 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,254 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 31 ms: PersonService.ensurePersisted +2022-04-04 10:21:44,256 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:44,257 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,258 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,258 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,259 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,260 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:44,261 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensible Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:44,261 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,262 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,263 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,263 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,264 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:44,264 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:44,265 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,265 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,266 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,266 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,266 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:21:44,267 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensitive Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:44,267 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,268 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,268 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,269 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,269 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:21:44,270 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 81 ms: PersonFacadeEjb.savePerson +2022-04-04 10:21:44,330 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseFacadeEjb.save with parameters '[X5KAV3-LGMZ26-A5YRAX-7SVS2GVU - null]' +2022-04-04 10:21:44,333 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.getByUuid with parameters '[X5KAV3-LGMZ26-A5YRAX-7SVS2GVU]' +2022-04-04 10:21:44,337 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,338 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,340 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@625b2afa]' +2022-04-04 10:21:44,342 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,342 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,343 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,347 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: CaseService.getByUuid +2022-04-04 10:21:44,348 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:44,348 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,349 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,350 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,350 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,351 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:44,351 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensible Daten im Zust?ndigkeitsbereich einsehen]' +2022-04-04 10:21:44,352 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,352 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,353 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,353 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,354 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:44,354 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Personenbezogene Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:44,355 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,355 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,356 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,356 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,357 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 2 ms: UserService.hasRight +2022-04-04 10:21:44,357 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Sensitive Daten au?erhalb des Zust?ndigkeitsbereichs einsehen]' +2022-04-04 10:21:44,358 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,359 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,360 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,360 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,361 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:44,361 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.hasRight with parameters '[Zugriff auf Fall-Bereiche im Zusammenhang mit der Fallverwaltung]' +2022-04-04 10:21:44,361 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,362 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,362 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserRoleConfigFacadeEjb.getEffectiveUserRights with parameters '[[Nationale*r Benutzer*in, Administrator]]' +2022-04-04 10:21:44,363 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserRoleConfigFacadeEjb.getEffectiveUserRights +2022-04-04 10:21:44,364 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: UserService.hasRight +2022-04-04 10:21:44,364 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityFacadeEjb.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:44,365 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:44,369 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,369 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,371 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@3439ee8]' +2022-04-04 10:21:44,373 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,375 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,376 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,379 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: CommunityService.getByUuid +2022-04-04 10:21:44,380 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 15 ms: CommunityFacadeEjb.getByUuid +2022-04-04 10:21:44,380 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictFacadeEjb.getByUuid with parameters '[00000000-0000-0000-0000-000000000004]' +2022-04-04 10:21:44,381 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByUuid with parameters '[00000000-0000-0000-0000-000000000004]' +2022-04-04 10:21:44,386 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,386 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,388 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@4b4d8b9e]' +2022-04-04 10:21:44,390 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,392 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,393 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,395 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: DistrictService.getByUuid +2022-04-04 10:21:44,396 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 15 ms: DistrictFacadeEjb.getByUuid +2022-04-04 10:21:44,396 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityFacadeEjb.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:44,397 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByUuid with parameters '[00000000-0000-0000-0000-000000000005]' +2022-04-04 10:21:44,400 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,401 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,404 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@2a0832ef]' +2022-04-04 10:21:44,406 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,407 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,408 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,410 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: CommunityService.getByUuid +2022-04-04 10:21:44,410 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: CommunityFacadeEjb.getByUuid +2022-04-04 10:21:44,411 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityFacadeEjb.getByUuid with parameters '[R56EOU-P6PKQ7-WGVBDT-CINTCGRA]' +2022-04-04 10:21:44,412 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByUuid with parameters '[R56EOU-P6PKQ7-WGVBDT-CINTCGRA]' +2022-04-04 10:21:44,416 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,417 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,419 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@c2d9c9]' +2022-04-04 10:21:44,421 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,422 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,422 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,425 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 13 ms: FacilityService.getByUuid +2022-04-04 10:21:44,426 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: FacilityFacadeEjb.getByUuid +2022-04-04 10:21:44,427 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ExternalJournalService.handleExternalJournalPersonUpdateAsync with parameters '[Bandile Bandile APELOKO-TINIBU]' +2022-04-04 10:21:44,428 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ConfigFacadeEjb.isExternalJournalActive with parameters 'null' +2022-04-04 10:21:44,429 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: ConfigFacadeEjb.isExternalJournalActive +2022-04-04 10:21:44,429 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: ExternalJournalService.handleExternalJournalPersonUpdateAsync +2022-04-04 10:21:44,430 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[National USER - Administrator, Nationale*r Benutzer*in]' +2022-04-04 10:21:44,435 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,436 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,438 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@4c3cd719]' +2022-04-04 10:21:44,441 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,442 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,442 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,444 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 14 ms: UserService.getByReferenceDto +2022-04-04 10:21:44,445 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PersonService.getByReferenceDto with parameters '[Bandile Bandile APELOKO-TINIBU]' +2022-04-04 10:21:44,450 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,451 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,453 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@a4c7465]' +2022-04-04 10:21:44,456 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,457 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,458 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,463 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 17 ms: PersonService.getByReferenceDto +2022-04-04 10:21:44,464 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,464 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:44,465 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HospitalizationFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.hospitalization.HospitalizationDto@daefdeb2, true]' +2022-04-04 10:21:44,465 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HospitalizationService.getByUuid with parameters '[RHRW6E-ICO3SG-5A4VN6-CKS5KJCM]' +2022-04-04 10:21:44,470 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: HospitalizationService.getByUuid +2022-04-04 10:21:44,471 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: HospitalizationFacadeEjb.fromDto +2022-04-04 10:21:44,471 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: EpiDataFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.epidata.EpiDataDto@2c6fab9d, true]' +2022-04-04 10:21:44,472 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: EpiDataService.getByUuid with parameters '[QYPOLF-ZMPRNP-4V6O6Q-XCF6KH5M]' +2022-04-04 10:21:44,476 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: EpiDataService.getByUuid +2022-04-04 10:21:44,477 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: EpiDataFacadeEjb.fromDto +2022-04-04 10:21:44,478 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: TherapyFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.therapy.TherapyDto@85c2713c, true]' +2022-04-04 10:21:44,479 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: TherapyService.getByUuid with parameters '[U5Z4HP-7ATHIT-EL3GBV-URBUCORM]' +2022-04-04 10:21:44,484 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: TherapyService.getByUuid +2022-04-04 10:21:44,485 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 7 ms: TherapyFacadeEjb.fromDto +2022-04-04 10:21:44,485 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HealthConditionsMapper.fromDto with parameters '[de.symeda.sormas.api.clinicalcourse.HealthConditionsDto@bb886fdd, true]' +2022-04-04 10:21:44,486 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: HealthConditionsService.getByUuid with parameters '[T3LTW3-XYT7A6-D2VRTF-NPQ5CNDI]' +2022-04-04 10:21:44,491 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: HealthConditionsService.getByUuid +2022-04-04 10:21:44,492 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: HealthConditionsMapper.fromDto +2022-04-04 10:21:44,493 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ClinicalCourseFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.clinicalcourse.ClinicalCourseDto@85aa98f2, true]' +2022-04-04 10:21:44,493 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: ClinicalCourseService.getByUuid with parameters '[RPC4VY-4M2TTS-IV2LTF-6HUBSLCA]' +2022-04-04 10:21:44,498 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: ClinicalCourseService.getByUuid +2022-04-04 10:21:44,499 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 6 ms: ClinicalCourseFacadeEjb.fromDto +2022-04-04 10:21:44,500 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: MaternalHistoryFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.caze.maternalhistory.MaternalHistoryDto@15d2af80, true]' +2022-04-04 10:21:44,501 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: MaternalHistoryService.getByUuid with parameters '[XS4XAO-QKKJ3C-ASUSSF-CIMGKGGE]' +2022-04-04 10:21:44,506 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: MaternalHistoryService.getByUuid +2022-04-04 10:21:44,507 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,507 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:44,508 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,509 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:44,510 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,511 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:44,512 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 11 ms: MaternalHistoryFacadeEjb.fromDto +2022-04-04 10:21:44,512 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PortHealthInfoFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.caze.porthealthinfo.PortHealthInfoDto@ae0a42ab, true]' +2022-04-04 10:21:44,513 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PortHealthInfoService.getByUuid with parameters '[RD7ZI5-IRKC5L-VMHMMX-XBOQ2FGU]' +2022-04-04 10:21:44,518 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: PortHealthInfoService.getByUuid +2022-04-04 10:21:44,518 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: PortHealthInfoFacadeEjb.fromDto +2022-04-04 10:21:44,519 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[Voreingestellte Bundesl?nder]' +2022-04-04 10:21:44,523 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 3 ms: RegionService.getByReferenceDto +2022-04-04 10:21:44,524 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[Voreingestellter Landkreis]' +2022-04-04 10:21:44,528 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 4 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:44,529 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[Voreingestellte Gemeinde]' +2022-04-04 10:21:44,535 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:44,536 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: RegionService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,537 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: RegionService.getByReferenceDto +2022-04-04 10:21:44,537 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: DistrictService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,538 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: DistrictService.getByReferenceDto +2022-04-04 10:21:44,538 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CommunityService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,539 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CommunityService.getByReferenceDto +2022-04-04 10:21:44,539 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: FacilityService.getByReferenceDto with parameters '[Standard Einrichtung]' +2022-04-04 10:21:44,545 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 5 ms: FacilityService.getByReferenceDto +2022-04-04 10:21:44,546 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,546 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:44,547 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,547 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:44,548 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SymptomsFacadeEjb.fromDto with parameters '[de.symeda.sormas.api.symptoms.SymptomsDto@2263cc40, true]' +2022-04-04 10:21:44,548 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: SymptomsService.getByUuid with parameters '[XYMZHK-QLH7IA-F3SDQO-Y2IU2NW4]' +2022-04-04 10:21:44,597 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 49 ms: SymptomsService.getByUuid +2022-04-04 10:21:44,598 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 50 ms: SymptomsFacadeEjb.fromDto +2022-04-04 10:21:44,599 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: PointOfEntryService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,599 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: PointOfEntryService.getByReferenceDto +2022-04-04 10:21:44,600 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: UserService.getByReferenceDto with parameters '[null]' +2022-04-04 10:21:44,600 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: UserService.getByReferenceDto +2022-04-04 10:21:44,601 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CaseService.ensurePersisted with parameters '[Bandile Bandile APELOKO-TINIBU (X5KAV3)]' +2022-04-04 10:21:44,602 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,603 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,605 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@74f44082]' +2022-04-04 10:21:44,607 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,608 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,608 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,610 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,611 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,612 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@5d09fe8a]' +2022-04-04 10:21:44,614 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,615 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,615 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,617 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,618 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,620 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@23d6eaf8]' +2022-04-04 10:21:44,621 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,623 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,623 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,625 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,626 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,628 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@22347260]' +2022-04-04 10:21:44,630 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,631 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,631 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,633 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' +2022-04-04 10:21:44,634 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: AuditContextProducer.getCurrentlyLoggedInUser +2022-04-04 10:21:44,636 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditLogServiceBean.receiveChanges with parameters '[de.symeda.auditlog.api.ChangeEvent@778a174]' +2022-04-04 10:21:44,638 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 1 ms: AuditLogServiceBean.receiveChanges +2022-04-04 10:21:44,639 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: CurrentUserService.getCurrentUser with parameters 'null' +2022-04-04 10:21:44,640 DEBUG NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Finished in 0 ms: CurrentUserService.getCurrentUser +2022-04-04 10:21:44,642 TRACE NatUser http-thread-pool::http-listener-1(2) d.s.s.b.u.PerformanceLoggingInterceptor - Started: AuditContextProducer.getCurrentlyLoggedInUser with parameters 'null' diff --git a/sormas-backend/src/test/resources/testcontainers/Dockerfile b/sormas-backend/src/test/resources/testcontainers/Dockerfile index 117649da021..22a2cde3efa 100644 --- a/sormas-backend/src/test/resources/testcontainers/Dockerfile +++ b/sormas-backend/src/test/resources/testcontainers/Dockerfile @@ -1,7 +1,7 @@ FROM postgres:10.18-alpine RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.13/main/ musl=1.2.2-r1 musl-dev=1.2.2-r1 && \ - apk add --no-cache openssl=1.1.1n-r0 curl=7.79.1-r0 tzdata=2021a-r0 py-pip=20.3.4-r1 python3-dev=3.9.5-r2 \ + apk add --no-cache openssl=1.1.1n-r0 curl=7.79.1-r1 tzdata=2021a-r0 py-pip=20.3.4-r1 python3-dev=3.9.5-r2 \ postgresql-dev=13.6-r0 postgresql-contrib=13.6-r0 make=4.3-r0 gcc=10.3.1_git20210424-r2 py3-psutil=5.8.0-r1 && \ pip install --no-cache-dir pgxnclient==1.3.2 && \ pgxnclient install temporal_tables diff --git a/sormas-backend/src/test/resources/testcontainers/setup_sormas_db.sh b/sormas-backend/src/test/resources/testcontainers/setup_sormas_db.sh index 3f2f6a6a85b..6a458a2a81a 100644 --- a/sormas-backend/src/test/resources/testcontainers/setup_sormas_db.sh +++ b/sormas-backend/src/test/resources/testcontainers/setup_sormas_db.sh @@ -4,28 +4,26 @@ set -e # Set up the database echo "Starting database setup..." -SORMAS_POSTGRES_USER=sormas_user -SORMAS_POSTGRES_PASSWORD=password -DB_NAME=sormas -DB_NAME_AUDIT=sormas_audit +AUDIT_DB=sormas_audit -psql -v ON_ERROR_STOP=1 --username "${SORMAS_POSTGRES_USER}" < sormas-base de.symeda.sormas - 1.70.4 + 1.71.0 ../ diff --git a/sormas-base/doc/keycloak.md b/sormas-base/doc/keycloak.md index 8eecd090c89..53c090dd2e6 100644 --- a/sormas-base/doc/keycloak.md +++ b/sormas-base/doc/keycloak.md @@ -52,6 +52,11 @@ Email configurations are optional and are not part of the default configuration. In case the system relies on users activating their own accounts it's required to configure these settings. +#### Audit Logging +Audit logging of all login activity can be done by setting `org.keycloak.events` to `DEBUG`. To enable this, please copy +the files from `sormas-base/setup/keycloak/audit-logging/` to `/opt/jboss/startup-scripts/` inside your Keycloak server +and restart the server. + #### Custom Configuration The configuration provided by default is the minimum required configuration for Keycloak to work together with SORMAS. diff --git a/sormas-base/pom.xml b/sormas-base/pom.xml index d487e957b29..fae94450ad3 100644 --- a/sormas-base/pom.xml +++ b/sormas-base/pom.xml @@ -5,7 +5,7 @@ de.symeda.sormas sormas-base pom - 1.70.4 + 1.71.0 1.8 @@ -785,7 +785,7 @@ com.h2database h2 - 1.4.200 + 2.1.210 test diff --git a/sormas-base/setup/keycloak/audit-logging/standalone-ha-logging.cli b/sormas-base/setup/keycloak/audit-logging/standalone-ha-logging.cli new file mode 100644 index 00000000000..421f058fc34 --- /dev/null +++ b/sormas-base/setup/keycloak/audit-logging/standalone-ha-logging.cli @@ -0,0 +1,4 @@ +embed-server --server-config=standalone-ha.xml --std-out=echo +/subsystem=logging/logger=org.keycloak.events/:add(category=org.keycloak.events,level=DEBUG) +stop-embedded-server + diff --git a/sormas-base/setup/keycloak/audit-logging/standalone-logging.cli b/sormas-base/setup/keycloak/audit-logging/standalone-logging.cli new file mode 100644 index 00000000000..3295c90c802 --- /dev/null +++ b/sormas-base/setup/keycloak/audit-logging/standalone-logging.cli @@ -0,0 +1,4 @@ +embed-server --server-config=standalone.xml --std-out=echo +/subsystem=logging/logger=org.keycloak.events/:add(category=org.keycloak.events,level=DEBUG) +stop-embedded-server + diff --git a/sormas-cargoserver/pom.xml b/sormas-cargoserver/pom.xml index 69d03a322b0..66938bd1fba 100644 --- a/sormas-cargoserver/pom.xml +++ b/sormas-cargoserver/pom.xml @@ -3,7 +3,7 @@ de.symeda.sormas sormas-base - 1.70.4 + 1.71.0 ../sormas-base @@ -18,6 +18,16 @@ ${project.version} serverlibsjar + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + de.symeda.sormas @@ -155,6 +165,14 @@ sormas-serverlibs serverlibsjar + + ch.qos.logback + logback-core + + + ch.qos.logback + logback-classic + https://repo.maven.apache.org/maven2/fish/payara/distributions/payara/${payara.version}/payara-${payara.version}.zip @@ -175,6 +193,10 @@ ${project.build.directory}/domain.xml sormas/config/ + + ${project.build.directory}/logback.xml + sormas/config/ + @@ -208,4 +230,4 @@ - \ No newline at end of file + diff --git a/sormas-cargoserver/src/main/resources/domain/domain.xml b/sormas-cargoserver/src/main/resources/domain/domain.xml index 340a71c6cc4..1b5d56da746 100644 --- a/sormas-cargoserver/src/main/resources/domain/domain.xml +++ b/sormas-cargoserver/src/main/resources/domain/domain.xml @@ -248,6 +248,8 @@ [9|]-Xbootclasspath/a:${com.sun.aas.installRoot}/lib/grizzly-npn-api.jar -Xmx4096m -Dlogback.configurationFile=${com.sun.aas.instanceRoot}/config/logback.xml + -Dcargo.glassfish.domain.debug=true + -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6009 diff --git a/sormas-cargoserver/src/main/resources/domain/logback.xml b/sormas-cargoserver/src/main/resources/domain/logback.xml new file mode 100644 index 00000000000..85aba29e8c5 --- /dev/null +++ b/sormas-cargoserver/src/main/resources/domain/logback.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + ${LOG_FOLDER}/application.debug + + ${LOG_FOLDER}/application.%d{yyyy-ww}.debug + 2 + + + %date %-5level %X{USER} %X{APP} %thread %logger{36} - %msg%n + + + + + ${LOG_FOLDER}/application.info + + ${LOG_FOLDER}/application.%d{yyyy-ww}.info + 5 + + + INFO + + + %date %-5level %X{USER} %X{APP} %logger{36} - %msg%n + + + + + ${LOG_FOLDER}/application.warn + + ${LOG_FOLDER}/application.%d{yyyy-ww}.warn + 5 + + + WARN + + + %date %-5level %X{USER} %X{APP} %logger{36} - %msg%n + + + + + + ERROR + + + + 20 + + localhost + + + SORMAS: %logger{20} - %m + + %date %-5level %X{USER} %X{APP} %logger{36} - %msg%n + + + USER + SYSTEM + + + + + + %.-1level%.10d{HHmmss.SSS}|%5.-5X{SORMAS}> %msg \(%C.java:%L\)%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sormas-e2e-performance-tests/SormasPoc.jmx b/sormas-e2e-performance-tests/SormasPoc.jmx index 180c01c3fa1..e0f4c4fb24b 100644 --- a/sormas-e2e-performance-tests/SormasPoc.jmx +++ b/sormas-e2e-performance-tests/SormasPoc.jmx @@ -1,5 +1,5 @@ - + @@ -34,13 +34,13 @@ user_name - RestUser + RestAuto = Name of the user used to place requests user_password - PTLXe9UYoTFP + umpQyGMSq4zy = Password of the user used to place requests @@ -89,7 +89,7 @@ - + continue false @@ -149,7 +149,7 @@ false [{ "firstName": "Jmeter", - "lastName": "User", + "lastName": "User1", "sex": "FEMALE", "uuid": "${person_uuid}" }] @@ -177,7 +177,7 @@ OK - Assertion.response_data + Assertion.response_message false 16 @@ -255,7 +255,7 @@ OK - Assertion.response_data + Assertion.response_message false 16 @@ -901,7 +901,17 @@ Assertion.response_code false - 8 + 2 + + + + + OK + + + Assertion.response_message + false + 16 @@ -1200,11 +1210,11 @@ "uuid": "${case_uuid}", "followUpStatus": "FOLLOW_UP", "clinicalCourse": { - "healthConditions": { - "uuid": "${__UUID()}" - }, "uuid": "${__UUID()}" }, + "healthConditions": { + "uuid": "${__UUID()}" + }, "reportDate": ${current_date}, "reportingUser": { "uuid": "${sormas_national_rest_user_uuid}" @@ -1295,7 +1305,7 @@ OK - Assertion.response_data + Assertion.response_message false 16 @@ -1452,7 +1462,7 @@ OK - Assertion.response_data + Assertion.response_message false 16 @@ -1872,1493 +1882,6 @@ - - continue - - false - 1 - - 1 - 1 - false - - - true - - - - - - https://${server_url} - RestUser - PTLXe9UYoTFP - - - - - false - - - - - - content-type - application/json - - - accept - application/json, application/javascript, text/javascript, text/json - - - - - - - current_date - - - - ${__time(/1000,)} - - - false - - - - true - - - - false - [{ - "firstName": "Jmeter-check", - "lastName": "User", - "sex": "FEMALE", - "uuid": "${person_uuid}" -}] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/persons/push - POST - true - false - true - false - - - - - - - - person_uuid - - - - ${__UUID()} - - - false - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - [ - { - "uuid": "${__UUID()}", - "pseudonymized": false, - "disease": "CORONAVIRUS", - "person": "${person_uuid}", - "reportDate": ${current_date}, - "positiveTestResultDate" : ${current_date}, - "recoveryDate" : ${current_date}, - "externalId" : "123", - "reportingUser": "${sormas_nationaluser_uuid}", - "archived": false, - "immunizationStatus": "ACQUIRED", - "meansOfImmunization": "VACCINATION", - "immunizationManagementStatus": "COMPLETED", - "responsibleRegion": "${sormas_region_uuid}", - "responsibleDistrict": "${sormas_district_uuid}", - "responsibleCommunity": "${sormas_community_uuid}" - } -] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/immunizations/push - POST - true - false - true - false - - - - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/clinicalvisits/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/communities/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/eventparticipants/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/outbreaks/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/pathogentests/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/prescriptions/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/tasks/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/samples/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/visits/uuids - GET - true - false - true - false - - - - - - - false - first_clinical_visit_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/continents/uuids - GET - true - false - true - false - - - - - - - false - first_continents_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/countries/uuids - GET - true - false - true - false - - - - - - - false - first_countries_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/districts/uuids - GET - true - false - true - false - - - - - - - false - district_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/events/uuids - GET - true - false - true - false - - - - - - - false - first_events_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/facilities/uuids - GET - true - false - true - false - - - - - - - false - first_facility_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/cases/uuids - GET - true - false - true - false - - - - - - - false - first_case_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/cases/${first_case_uuid} - GET - true - false - true - false - - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/persons/uuids - GET - true - false - true - false - - - - - - - false - first_person_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/persons/${first_person_uuid} - GET - true - false - true - false - - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/regions/uuids - GET - true - false - true - false - - - - - - - false - available_region - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/contacts/uuids - GET - true - false - true - false - - - - - - - false - first_contact_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/immunizations/uuids - GET - true - false - true - false - - - - - - - false - first_immunization_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - false - - = - true - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/immunizations/${first_immunization_uuid} - GET - true - false - true - false - - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - [ - { - "caseClassification": "NOT_CLASSIFIED", - "uuid": "${case_uuid}", - "followUpStatus": "FOLLOW_UP", - "clinicalCourse": { - "healthConditions": { - "uuid": "${__UUID()}" - }, - "uuid": "${__UUID()}" - }, - "reportDate": ${current_date}, - "reportingUser": { - "uuid": "${sormas_national_rest_user_uuid}" - }, - "surveillanceOfficer": { - "uuid": "${sormas_survoff_uuid}" - }, - "outcome": "NO_OUTCOME", - "investigationStatus": "PENDING", - "caseOrigin": "IN_COUNTRY", - "disease": "CORONAVIRUS", - "healthFacilityDetails": "Details", - "hospitalization": { - "uuid": "${__UUID()}" - }, - "therapy": { - "uuid": "${__UUID()}" - }, - "community": { - "uuid": "${sormas_community_uuid}" - }, - "symptoms": { - "uuid": "${__UUID()}" - }, - "epiData": { - "uuid": "${__UUID()}" - }, - "pseudonymized": false, - "person": { - "uuid": "${person_uuid}" - }, - "portHealthInfo": { - "uuid": "${__UUID()}" - }, - "district": { - "uuid": "${sormas_district_uuid}" - }, - "region": { - "uuid": "${sormas_region_uuid}" - }, - "responsibleRegion": { - "uuid": "${sormas_region_uuid}" - }, - "responsibleDistrict": { - "uuid": "${sormas_district_uuid}" - }, - "healthFacility": { - "uuid": "SORMAS-CONSTID-ISNONE-FACILITY" - }, - "maternalHistory": { - "uuid": "${__UUID()}" - } - } -] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/cases/push - POST - true - false - true - false - - - - - - - - case_uuid - - - - ${__UUID()} - - - false - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - [ - { - "eventTitle": "${current_date}", - "eventLocation": { - "uuid": "${__UUID()}" - }, - "eventStatus": "SIGNAL", - "reportingUser": { - "uuid": "${sormas_national_rest_user_uuid}" - }, - "eventInvestigationStatus": "PENDING", - "reportDateTime": ${current_date}, - "uuid": "${event_uuid}", - "startDate": ${current_date} - } -] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/events/push - POST - true - false - true - false - - - - - - - false - first_events_uuid - "(.*?)" - $1$ - Not Found - 1 - - - - - event_uuid - - - - ${__UUID()} - - - false - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - [ - { - "district": { - "uuid": "${district_uuid}" - }, - "epiData": { - "uuid": "${__UUID()}" - }, - "healthConditions": { - "uuid": "${__UUID()}" - }, - "reportDateTime": ${current_date}, - "person": { - "uuid": "${first_person_uuid}" - }, - "region": { - "uuid": "${available_region}" - }, - "reportingUser": { - "uuid": "${sormas_national_rest_user_uuid}" - }, - "contactClassification": "UNCONFIRMED", - "disease": "CORONAVIRUS", - "followUpStatus": "FOLLOW_UP", - "relationToCase": "SAME_HOUSEHOLD", - "uuid": "${__UUID()}" - } -] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/contacts/push - POST - true - false - true - false - - - - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - [ - { - "taskType": "WEEKLY_REPORT_GENERATION", - "dueDate": 1621931465785, - "assigneeUser": { - "uuid": "${sormas_hospital_informant_uuid}" - }, - "taskContext": "GENERAL", - "priority": "NORMAL", - "uuid": "${task_uuid}", - "suggestedStart": 1621931465785, - "taskStatus": "PENDING" - } -] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/tasks/push - POST - true - false - true - false - - - - - - - - task_uuid - - - - ${__UUID()} - - - false - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - [ - { - "sampleMaterial": "BLOOD", - "samplePurpose": "EXTERNAL", - "associatedCase": { - "uuid": "${case_uuid}" - }, - "reportingUser": { - "uuid": "${sormas_national_rest_user_uuid}" - }, - "pathogenTestResult": "PENDING", - "sampleDateTime": ${current_date}, - "reportDateTime": ${current_date}, - "lab": { - "uuid": "${__UUID()}" - }, - "uuid": "${sample_uuid}" - } -] - = - - - - ${server_url} - ${server_port} - ${server_protocol} - - /sormas-rest/samples/push - POST - true - false - true - false - - - - - - - - sample_uuid - - - - ${__UUID()} - - - false - - - - - OK - - - Assertion.response_data - false - 16 - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - false - - saveConfig - - - true - true - true - - true - true - true - true - false - true - true - false - false - false - true - false - false - false - true - 0 - true - true - true - true - true - true - - - - - - diff --git a/sormas-e2e-performance-tests/daily-build-scenario.properties b/sormas-e2e-performance-tests/daily-build-scenario.properties index cc10e7ff172..2d8ffedaf80 100644 --- a/sormas-e2e-performance-tests/daily-build-scenario.properties +++ b/sormas-e2e-performance-tests/daily-build-scenario.properties @@ -1,11 +1,5 @@ -# Load Thread Group +# Jenkins Daily Build Thread Group -group1.usercount=0 +group1.usercount=1 group1.rampup=30 -group1.duration=1800 - -# Jenkins Daily Build Thread Group - -group2.usercount=1 -group2.rampup=1 -group2.duration=60 \ No newline at end of file +group1.duration=1800 \ No newline at end of file diff --git a/sormas-e2e-tests/README.md b/sormas-e2e-tests/README.md index d05a5f57598..a2f9c441478 100644 --- a/sormas-e2e-tests/README.md +++ b/sormas-e2e-tests/README.md @@ -39,31 +39,31 @@ issues that might block successful web development. ``` * Install Gradle -* Install Allure(To check this run `allure serve` from IntelliJ command line) + +* Setup Allure 2.13.6 + ```text + 1. Download allure from: https://github.com/allure-framework/allure2/releases/tag/2.13.6 + 2. Run bat file from bin directory + 3. Set ALLURE environment variables + ``` + ![config](./images/sc9.png) + + ![config](./images/sc10.png) * Install IntelliJ IDEA please follow the steps [here](https://www.jetbrains.com/idea/) * Launch IntelliJ IDEA and click on `Import project` - ![config](./images/sc1.png) - * As a new window is opened select `build.gradle` in the project directory and click `Open` Alternatively go to IDea Preferences and search for `gradle` - ![config](./images/sc2.png) - * Open `Preferences` -> `Plugins` and install `Cucumber for Java` plugin - ![config](./images/sc4.png) - * Open `Preferences` -> `Compiler` and enable checkbox `Annotation processing` - ![config](./images/sc6.png) - * Open `Preferences` -> `Plugins` and install `Lombok` plugin - ![config](./images/sc7.png) - -##Enable tests execution from local machine + +## Enable tests execution from local machine * Navigate to: resources/configuration/properties/common.properties The default setup is set for remote execution: diff --git a/sormas-e2e-tests/build.gradle b/sormas-e2e-tests/build.gradle index 9ddb862320e..393bc092327 100755 --- a/sormas-e2e-tests/build.gradle +++ b/sormas-e2e-tests/build.gradle @@ -69,6 +69,10 @@ dependencies { compile group: 'org.testng', name: 'testng', version: '6.14.3' compile 'com.opencsv:opencsv:5.6' + implementation 'org.apache.poi:poi:4.0.0' + implementation 'org.apache.poi:poi-ooxml:4.0.0' + compile 'com.detectlanguage:detectlanguage:1.1.0' + } task format(type: GoogleJavaFormat) { diff --git a/sormas-e2e-tests/customReports/apiMeasurements/data/results.txt b/sormas-e2e-tests/customReports/apiMeasurements/data/results.txt new file mode 100644 index 00000000000..5bdc9aa07b6 --- /dev/null +++ b/sormas-e2e-tests/customReports/apiMeasurements/data/results.txt @@ -0,0 +1,5 @@ +contacts/push=1479>2000< +events/push=540>1000< +cases/push=2049 - FAILED>2000< +samples/push=5158 - FAILED>2000< +persons/push=867>1000< diff --git a/sormas-e2e-tests/customReports/images/logo.png b/sormas-e2e-tests/customReports/apiMeasurements/images/logo.png similarity index 100% rename from sormas-e2e-tests/customReports/images/logo.png rename to sormas-e2e-tests/customReports/apiMeasurements/images/logo.png diff --git a/sormas-e2e-tests/customReports/data/results.txt b/sormas-e2e-tests/customReports/data/results.txt deleted file mode 100644 index 253a5cf132d..00000000000 --- a/sormas-e2e-tests/customReports/data/results.txt +++ /dev/null @@ -1,19 +0,0 @@ -Contacts page=4.308/ -Surveillance Dashboard page=0.832/ -Samples page=3.854/ -Cases page=5.647/ -Events page=5.836/ -Tasks page=8.724/ -Persons page=11.526/ -Contacts Dashboard page=6.935/ -Immunizations page=17.396/ -Samples page=2.355/ -Contacts page=3.61/ -Surveillance Dashboard page=0.323/ -Tasks page=7.982/ -Samples page=6.320/ -Events page=7.194/ -Contacts page=7.955/ -Persons page=8.142/ -Cases page=2.486/ -Contacts Dashboard page=0.328/ diff --git a/sormas-e2e-tests/customReports/images/warn.jpg b/sormas-e2e-tests/customReports/images/warn.jpg deleted file mode 100644 index 2ff1fdaf562..00000000000 Binary files a/sormas-e2e-tests/customReports/images/warn.jpg and /dev/null differ diff --git a/sormas-e2e-tests/customReports/pagesMeasurements/data/results.txt b/sormas-e2e-tests/customReports/pagesMeasurements/data/results.txt new file mode 100644 index 00000000000..00036845a36 --- /dev/null +++ b/sormas-e2e-tests/customReports/pagesMeasurements/data/results.txt @@ -0,0 +1,9 @@ +Contacts page=Couldn't load page under 20s/ +Persons page=Couldn't load page under 20s/ +Immunizations page=Couldn't load page under 20s/ +Events page=Couldn't load page under 20s/ +Samples page=Couldn't load page under 20s/ +Surveillance Dashboard page=Couldn't load page under 20s/ +Cases page=19.697/ +Tasks page=30.694/ +Contacts Dashboard page=0.343/ diff --git a/sormas-e2e-tests/customReports/pagesMeasurements/images/logo.png b/sormas-e2e-tests/customReports/pagesMeasurements/images/logo.png new file mode 100644 index 00000000000..ecf0c4f573b Binary files /dev/null and b/sormas-e2e-tests/customReports/pagesMeasurements/images/logo.png differ diff --git a/sormas-e2e-tests/images/sc10.PNG b/sormas-e2e-tests/images/sc10.PNG new file mode 100644 index 00000000000..2ef6c0be4b2 Binary files /dev/null and b/sormas-e2e-tests/images/sc10.PNG differ diff --git a/sormas-e2e-tests/images/sc9.PNG b/sormas-e2e-tests/images/sc9.PNG new file mode 100644 index 00000000000..487363cd6c3 Binary files /dev/null and b/sormas-e2e-tests/images/sc9.PNG differ diff --git a/sormas-e2e-tests/scripts/runApiMeasurements.sh b/sormas-e2e-tests/scripts/runApiMeasurements.sh new file mode 100644 index 00000000000..d331bc26d77 --- /dev/null +++ b/sormas-e2e-tests/scripts/runApiMeasurements.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# SORMAS® - Surveillance Outbreak Response Management & Analysis System +# Copyright © 2016-2022 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 . +# + +#This shell script is the execution entry point for the jenkins job used to meassure the loading time for all main pages + +echo "Script started at:" +date +"%T" + +echo "Deleting allure report folder..." +rm -rf ./allureReports +echo "Deleting custom report" +rm -rf ./customReports/apiMeasurements/customReport.html +echo "Cleaning old results from results.txt file" +cat /dev/null > ./customReports/apiMeasurements/data/results.txt +echo "Executing gradle clean..." +./gradlew clean goJF +echo "Starting all BDD tests under @ApiMeasurements tag..." +./gradlew startTests -Dcucumber.tags="@ApiMeasurements" -Dheadless=true -Dcourgette.threads=1 -DenvConfig=/srv/dockerdata/jenkins_new/sormas-files/envData.json --stacktrace --debug --scan \ No newline at end of file diff --git a/sormas-e2e-tests/scripts/runPagesMeasurements.sh b/sormas-e2e-tests/scripts/runPagesMeasurements.sh index 08f22dcd180..b87b5981f73 100644 --- a/sormas-e2e-tests/scripts/runPagesMeasurements.sh +++ b/sormas-e2e-tests/scripts/runPagesMeasurements.sh @@ -25,11 +25,11 @@ date +"%T" echo "Deleting allure report folder..." rm -rf ./allureReports echo "Deleting custom report" -rm -rf ./customReports/customReport.html +rm -rf ./customReports/pagesMeasurements/customReport.html eho "Deleting BarChart image" -rm -rf ./customReports/images/BarChart.jpeg +rm -rf ./customReports/pagesMeasurements/images/BarChart.jpeg echo "Cleaning old results from results.txt file" -cat /dev/null > ./customReports/data/results.txt +cat /dev/null > ./customReports/pagesMeasurements/data/results.txt echo "Executing gradle clean..." ./gradlew clean goJF echo "Starting all BDD tests under @PagesMeasurements tag..." diff --git a/sormas-e2e-tests/src/main/java/customreport/chartbuilder/ReportChartBuilder.java b/sormas-e2e-tests/src/main/java/customreport/chartbuilder/ReportChartBuilder.java index 876a092f921..5681207676f 100644 --- a/sormas-e2e-tests/src/main/java/customreport/chartbuilder/ReportChartBuilder.java +++ b/sormas-e2e-tests/src/main/java/customreport/chartbuilder/ReportChartBuilder.java @@ -1,6 +1,6 @@ package customreport.chartbuilder; -import customreport.data.TableRowObject; +import customreport.data.TablePageRowObject; import java.awt.*; import java.io.File; import java.util.List; @@ -16,12 +16,13 @@ public abstract class ReportChartBuilder { public static final int width = 1300; public static final int height = 800; - public static final String generateChartPath = "customReports/images/BarChart.jpeg"; + public static final String generateChartPath = + "customReports/pagesMeasurements/images/BarChart.jpeg"; - public static void buildChartForData(List data) { + public static void buildChartForData(List data) { try { DefaultCategoryDataset dataSet = new DefaultCategoryDataset(); - for (TableRowObject entry : data) { + for (TablePageRowObject entry : data) { String page = entry.getTestName(); dataSet.addValue(Double.valueOf(entry.getCurrentTime()), page, page); } @@ -39,7 +40,7 @@ public static void buildChartForData(List data) { File BarChart = new File(generateChartPath); ChartUtils.saveChartAsJPEG(BarChart, barChart, width, height); } catch (Exception e) { - log.warn("Unable to generate results chart: " + e.getStackTrace()); + log.warn("Unable to generate results chart: {} ", e.getMessage()); } } } diff --git a/sormas-e2e-tests/src/main/java/customreport/data/TableApiRowObject.java b/sormas-e2e-tests/src/main/java/customreport/data/TableApiRowObject.java new file mode 100644 index 00000000000..5deaac76c2d --- /dev/null +++ b/sormas-e2e-tests/src/main/java/customreport/data/TableApiRowObject.java @@ -0,0 +1,13 @@ +package customreport.data; + +import lombok.*; + +@Value +@AllArgsConstructor +@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) +@Builder(toBuilder = true, builderClassName = "builder") +public class TableApiRowObject { + String testName; + String currentTime; + String maxTime; +} diff --git a/sormas-e2e-tests/src/main/java/customreport/data/TableDataManager.java b/sormas-e2e-tests/src/main/java/customreport/data/TableDataManager.java index 42af2fb0f56..16db5609d63 100644 --- a/sormas-e2e-tests/src/main/java/customreport/data/TableDataManager.java +++ b/sormas-e2e-tests/src/main/java/customreport/data/TableDataManager.java @@ -15,12 +15,15 @@ @Slf4j public abstract class TableDataManager { - private static List tableRowsDataList = new ArrayList<>(); - private static final String resultsTextPath = "customReports/data/results.txt"; + private static List tablePageRowsDataList = new ArrayList<>(); + private static List tableApiRowsDataList = new ArrayList<>(); + private static final String pagesResultsTextPath = + "customReports/pagesMeasurements/data/results.txt"; + private static final String apiResultsTextPath = "customReports/apiMeasurements/data/results.txt"; @SneakyThrows - public static void addRowEntity(String testName, String elapsedTime) { - File file = new File(resultsTextPath); + public static void addPagesRowEntity(String testName, String elapsedTime) { + File file = new File(pagesResultsTextPath); FileWriter fr = new FileWriter(file, true); BufferedWriter br = new BufferedWriter(fr); PrintWriter pr = new PrintWriter(br); @@ -30,10 +33,22 @@ public static void addRowEntity(String testName, String elapsedTime) { fr.close(); } - public static void convertData() { + @SneakyThrows + public static void addApiRowEntity(String testName, String elapsedTime, String maxTime) { + File file = new File(apiResultsTextPath); + FileWriter fr = new FileWriter(file, true); + BufferedWriter br = new BufferedWriter(fr); + PrintWriter pr = new PrintWriter(br); + pr.println(testName + "=" + elapsedTime + ">" + maxTime + "<"); + pr.close(); + br.close(); + fr.close(); + } + + public static void convertPagesData() { StringBuilder stringBuilder = new StringBuilder(); try { - File myObj = new File(resultsTextPath); + File myObj = new File(pagesResultsTextPath); Scanner myReader = new Scanner(myObj); while (myReader.hasNextLine()) { String data = myReader.nextLine(); @@ -46,19 +61,45 @@ public static void convertData() { List dataList = Arrays.asList(stringBuilder.toString().split("/")); for (String result : dataList) { int indexOfSeparation = result.indexOf("="); - tableRowsDataList.add( - TableRowObject.builder() + tablePageRowsDataList.add( + TablePageRowObject.builder() .testName(result.substring(0, indexOfSeparation)) .currentTime(result.substring(indexOfSeparation + 1)) .build()); } } - public static List getTableRowsDataList() { - return tableRowsDataList; + public static void convertApiData() { + StringBuilder stringBuilder = new StringBuilder(); + try { + File myObj = new File(apiResultsTextPath); + Scanner myReader = new Scanner(myObj); + while (myReader.hasNextLine()) { + String data = myReader.nextLine(); + stringBuilder.append(data); + } + myReader.close(); + } catch (FileNotFoundException e) { + log.error("Unable to read results text file " + e.getStackTrace()); + } + List dataList = Arrays.asList(stringBuilder.toString().split("<")); + for (String result : dataList) { + int indexStopName = result.indexOf("="); + int indexStopExecutionTime = result.indexOf(">"); + tableApiRowsDataList.add( + TableApiRowObject.builder() + .testName(result.substring(0, indexStopName)) + .currentTime(result.substring(indexStopName + 1, indexStopExecutionTime)) + .maxTime(result.substring(indexStopExecutionTime + 1)) + .build()); + } + } + + public static List getTablePageRowsDataList() { + return tablePageRowsDataList; } - public static String getTableRowsAsHtml() { + public static String getPageRowsAsHtml() { StringBuilder htmlCode = new StringBuilder(); String tableRowHtml = "\n" @@ -68,25 +109,64 @@ public static String getTableRowsAsHtml() { "\n" + " test-name-placeholder \n" + " time-placeholder "; - for (TableRowObject tableRowObject : tableRowsDataList) { + for (TablePageRowObject tablePageRowObject : tablePageRowsDataList) { try { - Double time = Double.parseDouble(tableRowObject.getCurrentTime()); + Double time = Double.parseDouble(tablePageRowObject.getCurrentTime()); if (time < 10) { htmlCode.append( tableRowHtml - .replace("test-name-placeholder", tableRowObject.getTestName()) - .replace("time-placeholder", tableRowObject.getCurrentTime())); + .replace("test-name-placeholder", tablePageRowObject.getTestName()) + .replace("time-placeholder", tablePageRowObject.getCurrentTime())); } else { htmlCode.append( tableRowHtmlWithWarning - .replace("test-name-placeholder", tableRowObject.getTestName()) - .replace("time-placeholder", tableRowObject.getCurrentTime())); + .replace("test-name-placeholder", tablePageRowObject.getTestName()) + .replace("time-placeholder", tablePageRowObject.getCurrentTime())); } } catch (NumberFormatException e) { htmlCode.append( tableRowHtmlWithWarning - .replace("test-name-placeholder", tableRowObject.getTestName()) - .replace("time-placeholder", tableRowObject.getCurrentTime())); + .replace("test-name-placeholder", tablePageRowObject.getTestName()) + .replace("time-placeholder", tablePageRowObject.getCurrentTime())); + } + } + return htmlCode.toString(); + } + + public static String getApiRowsAsHtml() { + StringBuilder htmlCode = new StringBuilder(); + String tableRowHtml = + "\n" + + " test-name-placeholder \n" + + " time-placeholder " + + " maxTime-placeholder " + + ""; + String tableRowHtmlWithWarning = + "\n" + + " test-name-placeholder \n" + + " time-placeholder " + + " maxTime-placeholder " + + ""; + for (TableApiRowObject tableApiRowObject : tableApiRowsDataList) { + try { + if (tableApiRowObject.getCurrentTime().contains("FAILED")) { + htmlCode.append( + tableRowHtmlWithWarning + .replace("test-name-placeholder", tableApiRowObject.getTestName()) + .replace("time-placeholder", tableApiRowObject.getCurrentTime()) + .replace("maxTime-placeholder", tableApiRowObject.getMaxTime())); + } else { + htmlCode.append( + tableRowHtml + .replace("test-name-placeholder", tableApiRowObject.getTestName()) + .replace("time-placeholder", tableApiRowObject.getCurrentTime()) + .replace("maxTime-placeholder", tableApiRowObject.getMaxTime())); + } + } catch (NumberFormatException e) { + htmlCode.append( + tableRowHtml + .replace("test-name-placeholder", tableApiRowObject.getTestName()) + .replace("time-placeholder", tableApiRowObject.getCurrentTime())); } } return htmlCode.toString(); diff --git a/sormas-e2e-tests/src/main/java/customreport/data/TableRowObject.java b/sormas-e2e-tests/src/main/java/customreport/data/TablePageRowObject.java similarity index 91% rename from sormas-e2e-tests/src/main/java/customreport/data/TableRowObject.java rename to sormas-e2e-tests/src/main/java/customreport/data/TablePageRowObject.java index bc44ba21ad2..515a7261ad1 100644 --- a/sormas-e2e-tests/src/main/java/customreport/data/TableRowObject.java +++ b/sormas-e2e-tests/src/main/java/customreport/data/TablePageRowObject.java @@ -10,7 +10,7 @@ @AllArgsConstructor @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) @Builder(toBuilder = true, builderClassName = "builder") -public class TableRowObject { +public class TablePageRowObject { String testName; String currentTime; } diff --git a/sormas-e2e-tests/src/main/java/customreport/reportbuilder/CustomReportBuilder.java b/sormas-e2e-tests/src/main/java/customreport/reportbuilder/CustomReportBuilder.java index a62adcb52d2..341d47fd999 100644 --- a/sormas-e2e-tests/src/main/java/customreport/reportbuilder/CustomReportBuilder.java +++ b/sormas-e2e-tests/src/main/java/customreport/reportbuilder/CustomReportBuilder.java @@ -10,17 +10,22 @@ @Slf4j public abstract class CustomReportBuilder { - public static final String pathToHtmlTemplate = - "./src/main/java/customreport/template/customReport.txt"; - public static final String exportPath = "customReports/customReport.html"; + public static final String pathToPagesReportHtmlTemplate = + "./src/main/java/customreport/template/customReportPages.txt"; + public static final String pathToApiReportHtmlTemplate = + "./src/main/java/customreport/template/customReportApi.txt"; + public static final String pathToExportPagesReport = + "customReports/pagesMeasurements/customReport.html"; + public static final String pathToExportApiReport = + "customReports/apiMeasurements/customReport.html"; public static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyy hh:mm a"); - public static void generateReport(String rowsData) { + public static void generatePagesMeasurementsReport(String rowsData) { try { - String reportIn = new String(Files.readAllBytes(Paths.get(pathToHtmlTemplate))); + String reportIn = new String(Files.readAllBytes(Paths.get(pathToPagesReportHtmlTemplate))); Files.write( - Paths.get(exportPath), + Paths.get(pathToExportPagesReport), reportIn .replace("$table_data_placeholder", rowsData) .replace("$Date_text", "Created on: " + LocalDateTime.now().format(formatter)) @@ -28,7 +33,23 @@ public static void generateReport(String rowsData) { StandardOpenOption.CREATE); } catch (Exception e) { - log.info("Error when writing Custom report file: " + e.getStackTrace()); + log.info("Error when writing Custom report file: {}", e.getStackTrace()); + } + } + + public static void generateApiMeasurementsReport(String rowsData) { + try { + String reportIn = new String(Files.readAllBytes(Paths.get(pathToApiReportHtmlTemplate))); + Files.write( + Paths.get(pathToExportApiReport), + reportIn + .replace("$table_data_placeholder", rowsData) + .replace("$Date_text", "Created on: " + LocalDateTime.now().format(formatter)) + .getBytes(), + StandardOpenOption.CREATE); + + } catch (Exception e) { + log.info("Error when writing Custom report file: {}", e.getStackTrace()); } } } diff --git a/sormas-e2e-tests/src/main/java/customreport/template/customReportApi.txt b/sormas-e2e-tests/src/main/java/customreport/template/customReportApi.txt new file mode 100644 index 00000000000..03ab17518bc --- /dev/null +++ b/sormas-e2e-tests/src/main/java/customreport/template/customReportApi.txt @@ -0,0 +1,51 @@ + + + + + + + + + +
+
+
Logo
+
+

$Date_text

+
+
+

API endpoints loading measurements results

+
+
+
+
+
+
+ + + + + + + + + + $table_data_placeholder + +
Endpoint pathEndpoint loading time (milliseconds)Maximum response time (milliseconds)
+
+
+
+ + + diff --git a/sormas-e2e-tests/src/main/java/customreport/template/customReport.txt b/sormas-e2e-tests/src/main/java/customreport/template/customReportPages.txt similarity index 100% rename from sormas-e2e-tests/src/main/java/customreport/template/customReport.txt rename to sormas-e2e-tests/src/main/java/customreport/template/customReportPages.txt diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseClassification.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseClassification.java index 2e9f6aca3f8..a7b8cec4e56 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseClassification.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseClassification.java @@ -70,6 +70,16 @@ public static String getUIValueForGivenAPIValue(String option) { throw new Exception("Unable to find " + option + " value in CaseClassification Enum"); } + @SneakyThrows + public static String getCaptionValueFor(String option) { + CaseClassification[] classifications = CaseClassification.values(); + for (CaseClassification value : classifications) { + if (value.getClassificationAPIvalue().equalsIgnoreCase(option)) + return value.getClassificationUIvalue(); + } + throw new Exception("Unable to find " + option + " value in CaseClassification Enum"); + } + public static String getRandomUIClassification() { Random random = new Random(); return String.valueOf( diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseOutcome.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseOutcome.java index 5862dc56587..90e7766b07e 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseOutcome.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CaseOutcome.java @@ -24,37 +24,40 @@ @Getter public enum CaseOutcome { - NO_OUTCOME("No Outcome Yet"), - NOT_YET_CLASSIFIED("Not yet classified"), - INVESTIGATION_PENDING("Investigation pending"), - INVESTIGATION_DONE("Investigation done"), - INVESTIGATION_DISCARDED("Investigation discarded"), - DECEASED("Deceased"), - RECOVERED("Recovered"), - UNKNOWN("Unknown"), - SEQUELAE_YES("Yes"), - SEQUELAE_NO("No"), - SEQUELAE_UNKNOWN("Unknown"), - PLACE_OF_STAY_HOME("Home"), - PLACE_OF_STAY_FACILITY("Facility"), - FACILITY_STANDARD_EINRICHTUNG("Standard Einrichtung"), - FACILITY_VOREINGESTELLTE_GESUNDHEITSEINRICHTUNG("Voreingestellte Gesundheitseinrichtung"), - FACILITY_OTHER("Other facility"), - QUARANTINE_HOME("Home"), - QUARANTINE_INSTITUTIONAL("Institutional"), - QUARANTINE_NONE("None"), - QUARANTINE_UNKNOWN("Unknown"), - QUARANTINE_OTHER("Other"), - VACCINATED_STATUS_VACCINATED("Vaccinated"), - VACCINATED_STATUS_UNVACCINATED("Unvaccinated"), - VACCINATED_STATUS_UNKNOWN("Unknown"); + NO_OUTCOME("No Outcome Yet", "Noch kein Ergebnis bekannt"), + NOT_YET_CLASSIFIED("Not yet classified", "0. Nicht klassifiziert"), + INVESTIGATION_PENDING("Investigation pending", "Untersuchung ausstehend"), + INVESTIGATION_DONE("Investigation done", "Untersuchung durchgef\u00FChrt"), + INVESTIGATION_DISCARDED("Investigation discarded", "Untersuchung verworfen"), + DECEASED("Deceased", "Verstorben"), + RECOVERED("Recovered", "Genesen"), + UNKNOWN("Unknown", "Unbekannt"), + SEQUELAE_YES("Yes", "Ja"), + SEQUELAE_NO("No", "Nein"), + SEQUELAE_UNKNOWN("Unknown", "Unbekannt"), + PLACE_OF_STAY_HOME("Home", "Zuhause"), + PLACE_OF_STAY_FACILITY("Facility", "Einrichtung"), + FACILITY_STANDARD_EINRICHTUNG("Standard Einrichtung", "Standard Einrichtung"), + FACILITY_VOREINGESTELLTE_GESUNDHEITSEINRICHTUNG( + "Voreingestellte Gesundheitseinrichtung", "Voreingestellte Gesundheitseinrichtung"), + FACILITY_OTHER("Other facility", "Andere Einrichtung"), + QUARANTINE_HOME("Home", "H\u00E4uslich"), + QUARANTINE_INSTITUTIONAL("Institutional", "Institutionell"), + QUARANTINE_NONE("None", "Keine"), + QUARANTINE_UNKNOWN("Unknown", "Unbekannt"), + QUARANTINE_OTHER("Other", "Sonstiges"), + VACCINATED_STATUS_VACCINATED("Vaccinated", "Geimpft"), + VACCINATED_STATUS_UNVACCINATED("Unvaccinated", "Ungeimpft"), + VACCINATED_STATUS_UNKNOWN("Unknown", "Unbekannt"); // TODO refactor all these values to cover UI values and API values to have a common Enum for both private final String name; + private final String nameDE; - CaseOutcome(String name) { + CaseOutcome(String name, String nameDE) { this.name = name; + this.nameDE = nameDE; } public static String getRandomOutcome() { @@ -70,4 +73,13 @@ public static String getValueFor(String option) { } throw new Exception("Unable to find " + option + " value in CaseOutcome Enum"); } + + @SneakyThrows + public static String getValueForDE(String option) { + CaseOutcome[] caseOutcomeOptions = CaseOutcome.values(); + for (CaseOutcome value : caseOutcomeOptions) { + if (value.getNameDE().equalsIgnoreCase(option)) return value.getNameDE(); + } + throw new Exception("Unable to find " + option + " value in CaseOutcome Enum"); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CommunityValues.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CommunityValues.java index 3d1dda60110..8cd21e468d5 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CommunityValues.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CommunityValues.java @@ -22,22 +22,44 @@ @Getter public enum CommunityValues { - VoreingestellteGemeinde("Voreingestellte Gemeinde", "QWK33J-XYN3DE-5CSXFJ-MMFOKNKM"); + VoreingestellteGemeinde( + "Voreingestellte Gemeinde", "QWK33J-XYN3DE-5CSXFJ-MMFOKNKM", "UPKYUC-HD6D2W-EZVF5S-Q3PQSE5A"); private final String name; - private final String uuid; + private final String uuidMain; + private final String uuidDE; - CommunityValues(String name, String uuid) { + CommunityValues(String name, String uuidMain, String uuidDE) { this.name = name; - this.uuid = uuid; + this.uuidMain = uuidMain; + this.uuidDE = uuidDE; } @SneakyThrows - public static String getValueFor(String option) { + public static String getNameValueForUuid(String option) { CommunityValues[] communityValuesOptions = CommunityValues.values(); for (CommunityValues value : communityValuesOptions) { - if (value.uuid.equalsIgnoreCase(option)) return value.name; + if (value.uuidMain.equalsIgnoreCase(option) || value.uuidDE.equalsIgnoreCase(option)) + return value.name; } throw new Exception("Unable to find " + option + " value in Community Enum"); } + + @SneakyThrows + public static String getUuidValueForLocale(String communityName, String locale) { + CommunityValues[] communityValues = CommunityValues.values(); + for (CommunityValues value : communityValues) { + if (value.name().equalsIgnoreCase(communityName)) { + if (locale.equalsIgnoreCase("main") || locale.equalsIgnoreCase("performance")) { + return value.getUuidMain(); + } + if (locale.equalsIgnoreCase("DE")) { + return value.getUuidDE(); + } + } + } + throw new Exception( + String.format( + "Unable to find uuid for community: %s and locale: %s", communityName, locale)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/ContinentUUIDs.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/ContinentUUIDs.java index fa583f65335..57c71a183d9 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/ContinentUUIDs.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/ContinentUUIDs.java @@ -18,19 +18,34 @@ package org.sormas.e2etests.enums; import lombok.Getter; +import lombok.SneakyThrows; @Getter public enum ContinentUUIDs { - Europe("W2FUSQ-PXGMRZ-V6ZTOE-6EPIKCSI"); + Europe("W2FUSQ-PXGMRZ-V6ZTOE-6EPIKCSI", "VFJAQB-RGCNWG-7WS2IX-HJBECAVM"); - private final String option; + private final String uuidMain; + private final String uuidDe; - ContinentUUIDs(String option) { - this.option = option; + ContinentUUIDs(String uuidMain, String uuidDe) { + this.uuidMain = uuidMain; + this.uuidDe = uuidDe; } - @Override - public String toString() { - return this.option; + @SneakyThrows + public static String getUuidValueForLocale(String continent, String locale) { + ContinentUUIDs[] continentUUIDs = ContinentUUIDs.values(); + for (ContinentUUIDs value : continentUUIDs) { + if (value.name().equalsIgnoreCase(continent)) { + if (locale.equalsIgnoreCase("main") || locale.equalsIgnoreCase("performance")) { + return value.getUuidMain(); + } + if (locale.equalsIgnoreCase("DE")) { + return value.getUuidDe(); + } + } + } + throw new Exception( + String.format("Unable to find uuid for continent: %s and locale: %s", continent, locale)); } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CountryUUIDs.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CountryUUIDs.java index 0066756d54c..47d7b86b98c 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CountryUUIDs.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/CountryUUIDs.java @@ -18,19 +18,34 @@ package org.sormas.e2etests.enums; import lombok.Getter; +import lombok.SneakyThrows; @Getter public enum CountryUUIDs { - Germany("SUSZ6P-4YQIB3-WMSLMG-IAPRKJ4Y"); + Germany("SUSZ6P-4YQIB3-WMSLMG-IAPRKJ4Y", "XZGQNV-LR5PHR-XGX55Q-PXD4CJMI"); - private final String option; + private final String uuidMain; + private final String uuidDe; - CountryUUIDs(String option) { - this.option = option; + CountryUUIDs(String uuidMain, String uuidDe) { + this.uuidMain = uuidMain; + this.uuidDe = uuidDe; } - @Override - public String toString() { - return this.option; + @SneakyThrows + public static String getUuidValueForLocale(String country, String locale) { + CountryUUIDs[] countryUUIDs = CountryUUIDs.values(); + for (CountryUUIDs value : countryUUIDs) { + if (value.name().equalsIgnoreCase(country)) { + if (locale.equalsIgnoreCase("main") || locale.equalsIgnoreCase("performance")) { + return value.getUuidMain(); + } + if (locale.equalsIgnoreCase("DE")) { + return value.getUuidDe(); + } + } + } + throw new Exception( + String.format("Unable to find uuid for country: %s and locale: %s", country, locale)); } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DiseasesValues.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DiseasesValues.java index e5de581ce89..9afdf86bfee 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DiseasesValues.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DiseasesValues.java @@ -42,7 +42,6 @@ public enum DiseasesValues { "Unspecified VHF", "Nicht n\u00E4her bezeichnete h\u00E4morrhagische Viruskrankheit"), POLIO("POLIO", "Poliomyelitis", "Poliomyelitis"), - OTHER("OTHER", "Other Epidemic Disease", "Andere epidemische Krankheit"), YELLOW_FEVER("YELLOW_FEVER", "Yellow Fever", "Gelbfieber"); private final String diseaseName; diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DistrictsValues.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DistrictsValues.java index 8e395137efa..0390fb30a7b 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DistrictsValues.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/DistrictsValues.java @@ -22,31 +22,54 @@ @Getter public enum DistrictsValues { - VoreingestellterLandkreis("Voreingestellter Landkreis", "SZ75BK-5OUMFU-V2DTKG-5BYACHFE"); + VoreingestellterLandkreis( + "Voreingestellter Landkreis", + "SZ75BK-5OUMFU-V2DTKG-5BYACHFE", + "R5N4WB-3LGKHX-HGFZ3K-7POBSFBQ"); private final String name; - private final String uuid; + private final String uuidMain; + private final String uuidDE; - DistrictsValues(String name, String uuid) { + DistrictsValues(String name, String uuidMain, String uuidDE) { this.name = name; - this.uuid = uuid; + this.uuidMain = uuidMain; + this.uuidDE = uuidDE; } @SneakyThrows - public static String getNameByUUID(String option) { + public static String getNameValueForUuid(String option) { DistrictsValues[] districtValuesOptions = DistrictsValues.values(); for (DistrictsValues value : districtValuesOptions) { - if (value.uuid.equalsIgnoreCase(option)) return value.name; + if (value.uuidMain.equalsIgnoreCase(option) || value.uuidDE.equalsIgnoreCase(option)) + return value.name; } throw new Exception("Unable to find " + option + " value in District Enum"); } @SneakyThrows - public static String getValueFor(String option) { + public static String getNameValueFor(String option) { DistrictsValues[] districtsValues = DistrictsValues.values(); for (DistrictsValues value : districtsValues) { if (value.getName().equalsIgnoreCase(option)) return value.getName(); } throw new Exception("Unable to find " + option + " value in District Enum"); } + + @SneakyThrows + public static String getUuidValueForLocale(String districtName, String locale) { + DistrictsValues[] districtsValues = DistrictsValues.values(); + for (DistrictsValues value : districtsValues) { + if (value.name().equalsIgnoreCase(districtName)) { + if (locale.equalsIgnoreCase("main") || locale.equalsIgnoreCase("performance")) { + return value.getUuidMain(); + } + if (locale.equalsIgnoreCase("DE")) { + return value.getUuidDE(); + } + } + } + throw new Exception( + String.format("Unable to find uuid for district: %s and locale: %s", districtName, locale)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityCategory.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityCategory.java index 5a35a8cba6f..235b190ef0b 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityCategory.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityCategory.java @@ -24,15 +24,17 @@ @Getter public enum FacilityCategory { - ACCOMMODATION("Accommodation"), - CARE_FACILITY("Care facility"), - MEDICAL_FACILITY("Medical facility"), - RESIDENCE("Residence"); + ACCOMMODATION("Accommodation", "Beherbergungsst\u00E4tten"), + CARE_FACILITY("Care facility", "Pflegeeinrichtung"), + MEDICAL_FACILITY("Medical facility", "Medizinische Einrichtung"), + RESIDENCE("Residence", "Wohnst\u00E4tte"); private final String facility; + private final String facilityDE; - FacilityCategory(String aFacilityCategory) { + FacilityCategory(String aFacilityCategory, String aFacilityCategoryDE) { facility = aFacilityCategory; + facilityDE = aFacilityCategoryDE; } public static String getRandomFacility() { diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityType.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityType.java index 3bf9cc86028..2b7b6038f9e 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityType.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/FacilityType.java @@ -24,17 +24,21 @@ @Getter public enum FacilityType { - CAMPSITE("Campsite"), - CRUISE_SHIP("Cruise ship"), - HOTEL_LODGE("Hotel, B&B, inn, lodge"), - MASS_ACCOMMODATION("Mass accommodation (e.g. guest and harvest workers)"), - OTHER_ACCOMMODATION("Other Accommodation)"); + CAMPSITE("Campsite", "Campingplatz/Zeltplatz"), + CRUISE_SHIP("Cruise ship", "Kreuzfahrtschiff"), + HOTEL_LODGE("Hotel, B&B, inn, lodge", "Hotel, B&B, Gasthof"), + MASS_ACCOMMODATION( + "Mass accommodation (e.g. guest and harvest workers)", + "Massenunterkunft (z.B. Gast- und Erntearbeiter)"), + OTHER_ACCOMMODATION("Other Accommodation", "Andere Beherbergungsst\u00E4tte"); private final String type; + private final String typeDE; - FacilityType(String aType) { + FacilityType(String aType, String aTypeDE) { type = aType; + typeDE = aTypeDE; } public static String getRandomFacilityType() { diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RegionsValues.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RegionsValues.java index c0d85b1d32c..bb36faa2102 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RegionsValues.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RegionsValues.java @@ -22,22 +22,45 @@ @Getter public enum RegionsValues { - VoreingestellteBundeslander("Voreingestellte Bundesl\u00E4nder", "RKVAOM-ZNAAFU-R2KF6Z-6BENKHEY"); + VoreingestellteBundeslander( + "Voreingestellte Bundesl\u00E4nder", + "RKVAOM-ZNAAFU-R2KF6Z-6BENKHEY", + "UXYTS3-SYILLD-2YI5UM-BZD62B6I"); private final String name; - private final String uuid; + private final String uuidMain; + private final String uuidDE; - RegionsValues(String name, String uuid) { + RegionsValues(String name, String uuidMain, String uuidDE) { this.name = name; - this.uuid = uuid; + this.uuidMain = uuidMain; + this.uuidDE = uuidDE; } @SneakyThrows - public static String getValueFor(String option) { + public static String getNameValueForUuid(String option) { RegionsValues[] regionValuesOptions = RegionsValues.values(); for (RegionsValues value : regionValuesOptions) { - if (value.uuid.equalsIgnoreCase(option)) return value.name; + if (value.uuidMain.equalsIgnoreCase(option) || value.uuidDE.equalsIgnoreCase(option)) + return value.name; } throw new Exception("Unable to find " + option + " value in Region Enum"); } + + @SneakyThrows + public static String getUuidValueForLocale(String regionName, String locale) { + RegionsValues[] regionValuesOptions = RegionsValues.values(); + for (RegionsValues value : regionValuesOptions) { + if (value.name.equalsIgnoreCase(regionName)) { + if (locale.equalsIgnoreCase("main") || locale.equalsIgnoreCase("performance")) { + return value.getUuidMain(); + } + if (locale.equalsIgnoreCase("DE")) { + return value.getUuidDE(); + } + } + } + throw new Exception( + String.format("Unable to find uuid for region: %s and locale: %s", regionName, locale)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RiskLevelValues.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RiskLevelValues.java index c9004f84e5f..9cde4a7f18b 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RiskLevelValues.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/RiskLevelValues.java @@ -6,18 +6,20 @@ @Getter public enum RiskLevelValues { - LOW("LOW", "Low risk"), - Moderate("MODERATE", "Moderate risk"), - HIGH("HIGH", "High risk"), - UNKNOWN("UNKNOWN", "Unknown"); + LOW("LOW", "Low risk", "Geringes Risiko"), + Moderate("MODERATE", "Moderate risk", "M\u00E4\u00DFiges Risiko"), + HIGH("HIGH", "High risk", "Hohes Risiko"), + UNKNOWN("UNKNOWN", "Unknown", "Unbekannt"); private final String riskLevelName; private final String riskLevelCaption; + private final String riskLevelCaptionDE; private static Random random = new Random(); - RiskLevelValues(String riskLevelName, String riskLevelCaption) { + RiskLevelValues(String riskLevelName, String riskLevelCaption, String riskLevelCaptionDE) { this.riskLevelName = riskLevelName; this.riskLevelCaption = riskLevelCaption; + this.riskLevelCaptionDE = riskLevelCaptionDE; } @SneakyThrows @@ -29,6 +31,15 @@ public static String getCaptionForName(String option) { throw new Exception("Unable to find " + option + " value in RiskLevelValues Enum"); } + @SneakyThrows + public static String getCaptionForNameDE(String option) { + RiskLevelValues[] riskyLevelOptions = RiskLevelValues.values(); + for (RiskLevelValues value : riskyLevelOptions) { + if (value.riskLevelName.equalsIgnoreCase(option)) return value.riskLevelCaptionDE; + } + throw new Exception("Unable to find " + option + " value in RiskLevelValues Enum"); + } + @SneakyThrows public static String getRandomUIRiskLevelDifferentThan(String excludedOption) { RiskLevelValues[] riskLevelValueOptions = RiskLevelValues.values(); @@ -39,6 +50,17 @@ public static String getRandomUIRiskLevelDifferentThan(String excludedOption) { } throw new Exception("Unable to provide option different than: " + excludedOption); } + + @SneakyThrows + public static String getRandomUIRiskLevelDifferentThanDE(String excludedOption) { + RiskLevelValues[] riskLevelValueOptions = RiskLevelValues.values(); + for (RiskLevelValues value : riskLevelValueOptions) { + if (!value.getRiskLevelCaption().equalsIgnoreCase(excludedOption) + && !value.getRiskLevelName().equalsIgnoreCase(excludedOption)) + return value.getRiskLevelCaptionDE(); + } + throw new Exception("Unable to provide option different than: " + excludedOption); + } /** Returns values used for API tests */ public static String getRandomRiskLevelName() { return String.valueOf(RiskLevelValues.values()[random.nextInt(values().length)].riskLevelName); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SourceTypeValues.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SourceTypeValues.java index 78732eeb56e..a3ad0b23822 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SourceTypeValues.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SourceTypeValues.java @@ -6,19 +6,22 @@ @Getter public enum SourceTypeValues { - NOT_APPLICABLE("NOT_APPLICABLE", "Not applicable"), - MEDIA_NEWS("MEDIA_NEWS", "Media/News"), - HOTLINE_PERSON("HOTLINE_PERSON", "Hotline/Person"), - MATHEMATICAL_MODEL("MATHEMATICAL_MODEL", "Mathematical model"), - INSTITUTIONAL_PARTNER("INSTITUTIONAL_PARTNER", "Institutional partner"); + NOT_APPLICABLE("NOT_APPLICABLE", "Not applicable", "Nicht erhoben"), + MEDIA_NEWS("MEDIA_NEWS", "Media/News", "Medien/ Nachrichten"), + HOTLINE_PERSON("HOTLINE_PERSON", "Hotline/Person", "Hotline/ Person"), + MATHEMATICAL_MODEL("MATHEMATICAL_MODEL", "Mathematical model", "Mathematisches Modell"), + INSTITUTIONAL_PARTNER( + "INSTITUTIONAL_PARTNER", "Institutional partner", "Institutioneller Partner"); private final String sourceTypeName; private final String sourceTypeCaption; + private final String sourceTypeCaptionDE; private static Random random = new Random(); - SourceTypeValues(String sourceTypeName, String sourceTypeCaption) { + SourceTypeValues(String sourceTypeName, String sourceTypeCaption, String sourceTypeCaptionDE) { this.sourceTypeName = sourceTypeName; this.sourceTypeCaption = sourceTypeCaption; + this.sourceTypeCaptionDE = sourceTypeCaptionDE; } @SneakyThrows @@ -30,6 +33,15 @@ public static String getCaptionForName(String option) { throw new Exception("Unable to find " + option + " value in SourceTypeValues Enum"); } + @SneakyThrows + public static String getCaptionForNameDE(String option) { + SourceTypeValues[] sourceTypeOptions = SourceTypeValues.values(); + for (SourceTypeValues value : sourceTypeOptions) { + if (value.getSourceTypeName().equalsIgnoreCase(option)) return value.getSourceTypeCaptionDE(); + } + throw new Exception("Unable to find " + option + " value in SourceTypeValues Enum"); + } + @SneakyThrows public static String getRandomSourceTypeDifferentThan(String excludedOption) { SourceTypeValues[] sourceTypeValuesOptions = SourceTypeValues.values(); @@ -40,6 +52,17 @@ public static String getRandomSourceTypeDifferentThan(String excludedOption) { } throw new Exception("Unable to provide option different than: " + excludedOption); } + + @SneakyThrows + public static String getRandomSourceTypeDifferentThanDE(String excludedOption) { + SourceTypeValues[] sourceTypeValuesOptions = SourceTypeValues.values(); + for (SourceTypeValues value : sourceTypeValuesOptions) { + if (!value.getSourceTypeCaptionDE().equalsIgnoreCase(excludedOption) + && !value.getSourceTypeName().equalsIgnoreCase(excludedOption)) + return value.getSourceTypeCaptionDE(); + } + throw new Exception("Unable to provide option different than: " + excludedOption); + } /** Returns values used for API tests */ public static String getRandomSourceTypeName() { return String.valueOf( diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SubcontinentUUIDs.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SubcontinentUUIDs.java index b29fc4db75d..3bbd07f476f 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SubcontinentUUIDs.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/SubcontinentUUIDs.java @@ -18,19 +18,35 @@ package org.sormas.e2etests.enums; import lombok.Getter; +import lombok.SneakyThrows; @Getter public enum SubcontinentUUIDs { - WesternEurope("VMRXWX-EAGV7L-JFKP26-F3DBSBFU"); + WesternEurope("VMRXWX-EAGV7L-JFKP26-F3DBSBFU", "ST63QN-LZAE3C-L5QMQJ-LCTEKGIA"); - private final String option; + private final String uuidMain; + private final String uuidDe; - SubcontinentUUIDs(String option) { - this.option = option; + SubcontinentUUIDs(String uuidMain, String uuidDe) { + this.uuidMain = uuidMain; + this.uuidDe = uuidDe; } - @Override - public String toString() { - return this.option; + @SneakyThrows + public static String getUuidValueForLocale(String subContinent, String locale) { + SubcontinentUUIDs[] subContinentUUIDs = SubcontinentUUIDs.values(); + for (SubcontinentUUIDs value : subContinentUUIDs) { + if (value.name().equalsIgnoreCase(subContinent)) { + if (locale.equalsIgnoreCase("main") || locale.equalsIgnoreCase("performance")) { + return value.getUuidMain(); + } + if (locale.equalsIgnoreCase("DE")) { + return value.getUuidDe(); + } + } + } + throw new Exception( + String.format( + "Unable to find uuid for subcontinent: %s and locale: %s", subContinent, locale)); } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/ActivityAsCaseType.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/ActivityAsCaseType.java index ad0982c7b58..5042e0bb844 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/ActivityAsCaseType.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/ActivityAsCaseType.java @@ -1,5 +1,24 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.enums.cases.epidemiologicalData; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -29,4 +48,13 @@ public static ActivityAsCaseType fromString(String activity) { log.error("Couldn't map activity !"); return null; } + + @SneakyThrows + public static String getForName(String option) { + ActivityAsCaseType[] options = ActivityAsCaseType.values(); + for (ActivityAsCaseType value : options) { + if (value.getActivityCase().equalsIgnoreCase(option)) return value.activityCase; + } + throw new Exception("Unable to find " + option + " value in ActivityAsCase Enum"); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfActivityExposure.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfActivityExposure.java index 3e9dba13a4b..7fa599ba835 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfActivityExposure.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfActivityExposure.java @@ -25,6 +25,16 @@ public enum TypeOfActivityExposure { "Work", "Travel", "Sport", "Visit", "Habitation", "Personal Services", "Unknown" }; + public static String[] ListOfTypeOfActivityExposureDE = { + "Arbeit", + "Reisen", + "Sport", + "Besuch", + "Wohnen /Aufhalten", + "Pers\u00F6nliche Dienstleistungen", + "Unbekannt" + }; + public String getActivity() { return activity; } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfGathering.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfGathering.java index a9fa5ee1b86..5c68b425f55 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfGathering.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfGathering.java @@ -1,24 +1,37 @@ package org.sormas.e2etests.enums.cases.epidemiologicalData; +import lombok.SneakyThrows; + public enum TypeOfGathering { - PARTY("Party"), - RELIGIOUS_GATHERING("Religious Gathering"), - CHOIR_SINGING_CLUB_ORCHESTRA("Choir/Singing Club/Orchestra"), - CONCERT("Concert"), - DEMONSTRATION("Demonstration"), - CARNIVAL("Carnival"), - FAIR("Fair"), - SPORTING_EVENT("Sporting event"), - OTHER("Other"); + PARTY("Party", "Feier"), + RELIGIOUS_GATHERING("Religious Gathering", "Religi\u00F6se Versammlung"), + CHOIR_SINGING_CLUB_ORCHESTRA("Choir/Singing Club/Orchestra", "Chor/Gesangverein/Orchester"), + CONCERT("Concert", "Konzert"), + DEMONSTRATION("Demonstration", "Demonstration"), + CARNIVAL("Carnival", "Karneval"), + FAIR("Fair", "Messe"), + SPORTING_EVENT("Sporting event", "Sportveranstaltung"), + OTHER("Other", "Sonstiges"); private final String gatheringType; + private final String gatheringTypeDE; - TypeOfGathering(String gatheringType) { + TypeOfGathering(String gatheringType, String gatheringTypeDE) { this.gatheringType = gatheringType; + this.gatheringTypeDE = gatheringTypeDE; } @Override public String toString() { return this.gatheringType; } + + @SneakyThrows + public static String getNameForDE(String option) { + TypeOfGathering[] typeOfGatheringOption = TypeOfGathering.values(); + for (TypeOfGathering value : typeOfGatheringOption) { + if (value.gatheringType.equalsIgnoreCase(option)) return value.gatheringTypeDE; + } + throw new Exception("Unable to find " + option + " value in TypeOfGathering Enum"); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfPlace.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfPlace.java index d34015df263..7c71bf99240 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfPlace.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/enums/cases/epidemiologicalData/TypeOfPlace.java @@ -6,26 +6,32 @@ @Slf4j public enum TypeOfPlace { - FACILITY("Facility"), - FESTIVITIES("Festivities"), - HOME("Home"), - MEANS_OF_TRANSPORT("Means of transport"), - PUBLIC_PLACE("Public place"), - SCATTERED("Scattered"), - UNKNOWN("Unknown"), - OTHER("Other"); + FACILITY("Facility", "Einrichtung"), + FESTIVITIES("Festivities", "Festlichkeiten"), + HOME("Home", "Zuhause"), + MEANS_OF_TRANSPORT("Means of transport", "Transportmittel"), + PUBLIC_PLACE("Public place", "\u00D6ffentlicher Raum"), + SCATTERED("Scattered", "Verstreut"), + UNKNOWN("Unknown", "Unbekannt"), + OTHER("Other", "Sonstiges"); private final String uiValue; + private final String uiValueDE; private static Random random = new Random(); - TypeOfPlace(String uiValue) { + TypeOfPlace(String uiValue, String uiValueDE) { this.uiValue = uiValue; + this.uiValueDE = uiValueDE; } public String getUiValue() { return uiValue; } + public String getUiValueDE() { + return uiValueDE; + } + public static TypeOfPlace fromString(String place) { for (TypeOfPlace typeOfPlace : TypeOfPlace.values()) { if (typeOfPlace.uiValue.equalsIgnoreCase(place)) { @@ -45,6 +51,15 @@ public static String getValueFor(String option) { throw new Exception("Unable to find " + option + " value in TypeOfPlaceValues Enum"); } + @SneakyThrows + public static String getValueForDE(String option) { + TypeOfPlace[] typeOfPlaceOptions = TypeOfPlace.values(); + for (TypeOfPlace value : typeOfPlaceOptions) { + if (value.name().equalsIgnoreCase(option)) return value.getUiValueDE(); + } + throw new Exception("Unable to find " + option + " value in TypeOfPlaceValues Enum"); + } + @SneakyThrows public static String getRandomUITypeOfPlaceDifferentThan(String excludedOption) { TypeOfPlace[] TypeOfPlaceOptions = TypeOfPlace.values(); @@ -54,6 +69,15 @@ public static String getRandomUITypeOfPlaceDifferentThan(String excludedOption) throw new Exception("Unable to provide option different than: " + excludedOption); } + @SneakyThrows + public static String getRandomUITypeOfPlaceDifferentThanDE(String excludedOption) { + TypeOfPlace[] TypeOfPlaceOptions = TypeOfPlace.values(); + for (TypeOfPlace value : TypeOfPlaceOptions) { + if (!value.getUiValue().equalsIgnoreCase(excludedOption)) return value.getUiValueDE(); + } + throw new Exception("Unable to provide option different than: " + excludedOption); + } + public static String getRandomUITypeOfPlace() { return String.valueOf(TypeOfPlace.values()[random.nextInt(values().length)]); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/envconfig/manager/EnvironmentManager.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/envconfig/manager/EnvironmentManager.java index 3c153a69d76..76a6cc13ffe 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/envconfig/manager/EnvironmentManager.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/envconfig/manager/EnvironmentManager.java @@ -25,18 +25,23 @@ import org.sormas.e2etests.envconfig.dto.EnvUser; import org.sormas.e2etests.envconfig.dto.Environment; import org.sormas.e2etests.envconfig.dto.Environments; +import org.testng.Assert; @Slf4j public class EnvironmentManager { private ObjectMapper objectMapper; private static Environments environments; + private static boolean wasJsonChecked; @SneakyThrows public EnvironmentManager() { objectMapper = new ObjectMapper(); environments = objectMapper.readValue(ConfigFileReader.getConfigurationFile(), Environments.class); + if (!wasJsonChecked) { + validateJsonData(); + } } @SneakyThrows @@ -73,4 +78,34 @@ private Environment getEnvironment(String identifier) { .findFirst() .get(); } + + private void validateJsonData() { + environments.getEnvironments().stream() + .forEach( + environment -> { + Assert.assertFalse( + environment.getIdentifier().isEmpty(), + "Environment identifier field cannot be empty!"); + Assert.assertFalse( + environment.getName().isEmpty(), "Environment name field cannot be empty!"); + Assert.assertFalse( + environment.getUrl().isEmpty(), "Environment url field cannot be empty!"); + Assert.assertFalse( + environment.getUsers().isEmpty(), "Environment users list cannot be empty!"); + environment.getUsers().stream() + .forEach( + envUser -> { + Assert.assertFalse( + envUser.getUserRole().isEmpty(), "User role field cannot be empty!"); + Assert.assertFalse( + envUser.getUsername().isEmpty(), "User name field cannot be empty!"); + Assert.assertFalse( + envUser.getUuid().isEmpty(), "User uuid field cannot be empty!"); + Assert.assertFalse( + envUser.getPassword().isEmpty(), + "User password field cannot be empty!"); + }); + }); + wasJsonChecked = true; + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/AboutPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/AboutPage.java new file mode 100644 index 00000000000..64986d76abc --- /dev/null +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/AboutPage.java @@ -0,0 +1,7 @@ +package org.sormas.e2etests.pages.application; + +import org.openqa.selenium.By; + +public class AboutPage { + public static final By DATA_DICTIONARY_BUTTON = By.id("aboutDataDictionary"); +} diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/NavBarPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/NavBarPage.java index 8c9f0e08fac..760ecd1fc45 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/NavBarPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/NavBarPage.java @@ -33,6 +33,8 @@ public class NavBarPage { public static final By CONFIRM_NAVIGATION = By.cssSelector(("[id=actionConfirm]")); public static final By REPORTS_BUTTON = By.cssSelector("div#reports"); public static final By CONFIGURATION_BUTTON = By.cssSelector("div#configuration"); + public static final By ABOUT_BUTTON = By.cssSelector("div#about"); + public static final By USER_SETTINGS_BUTTON = By.cssSelector("[id='actionSettings-2']"); public static final By ENTRIES_BUTTON = By.cssSelector("div#travelEntries"); public static final By LOGOUT_BUTTON = By.cssSelector("[id='actionLogout-2']"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseDirectoryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseDirectoryPage.java index 2af921b4279..e8740139794 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseDirectoryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseDirectoryPage.java @@ -101,6 +101,7 @@ public static final By getCaseResultsUuidLocator(String uuid) { By.cssSelector("[id='relevanceStatus'] [class='v-filterselect-button']"); public static final By BULK_ACTIONS = By.id("bulkActions-2"); public static final By BULK_ACTIONS_VALUES = By.id("bulkActions-10"); + public static final By BULK_CREATE_QUARANTINE_ORDER = By.id("bulkActions-9"); public static final By CASE_REPORTING_USER_FILTER = By.cssSelector("[id='reportingUserLike']"); public static final By CASE_YEAR_FILTER = By.cssSelector("[id='birthdateYYYY'] [class='v-filterselect-button']"); @@ -135,6 +136,7 @@ public static final By getCaseResultsUuidLocator(String uuid) { public static final By DATE_TO_COMBOBOX = By.cssSelector("#dateTo input"); public static final By MORE_BUTTON = By.id("more"); public static final By ENTER_BULK_EDIT_MODE = By.id("actionEnterBulkEditMode"); + public static final By LEAVE_BULK_EDIT_MODE = By.id("actionLeaveBulkEditMode"); public static final By ALL_RESULTS_CHECKBOX = By.xpath("//th[@role='columnheader']//input[@type='checkbox']/../.."); public static final By NEW_EVENT_CHECKBOX = By.xpath("//*[contains(text(),'New event')]/.."); @@ -143,14 +145,38 @@ public static final By getCaseResultsUuidLocator(String uuid) { public static final By SEARCH_BUTTON = By.id("search"); public static final By CASE_EPIDEMIOLOGICAL_DATA_TAB = By.cssSelector("#tab-cases-epidata"); public static final By EPIDEMIOLOGICAL_DATA_TAB = By.cssSelector("#tab-cases-epidata"); + public static final By CONTACTS_DATA_TAB = By.cssSelector("#tab-cases-contacts"); public static final By FIRST_PERSON_ID = By.xpath("//td[10]//a"); public static final By FIRST_CASE_ID = By.xpath("//td[1]//a"); public static final By IMPORT_BUTTON = By.id("actionImport"); public static final By DETAILED_IMPORT_BUTTON = By.id("importDetailed"); public static final By DOWNLOAD_IMPORT_GUIDE_BUTTON = By.id("import-step-1"); public static final By DOWNLOAD_DATA_DICTIONARY_BUTTON = By.id("importDownloadDataDictionary"); + public static final By FACILITY_ACTIVITY_AS_CASE_COMBOBOX = + By.cssSelector(".v-window #typeOfPlace div"); + public static final By CASE_MEANS_OF_TRANSPORT = + By.cssSelector(".v-window #meansOfTransport div"); + public static final By CASE_MEANS_OF_TRANSPORT_DETAILS = By.id("meansOfTransportDetails"); + public static final By CASE_CONNECTION_NUMBER = By.id("connectionNumber"); + public static final By CASE_SEAT_NUMBER = By.id("seatNumber"); + public static final By CASE_ACTION_CONFIRM = By.id("actionConfirm"); + public static final By CASE_ACTION_CANCEL = By.id("actionCancel"); + public static final By UPLOAD_DOCUMENT_TO_ENTITIES_CHECKBOX = + By.xpath("//label[text()='Also upload the generated documents to the selected entities']"); + public static final By CLOSE_FORM_BUTTON = By.xpath("//div[@class='v-window-closebox']"); + public static final By REINFECTION_STATUS_COMBOBOX = + By.cssSelector("[id='reinfectionStatus'] [class='v-filterselect-button']"); + + public static By getCheckboxByIndex(String idx) { + return By.xpath(String.format("(//input[@type=\"checkbox\"])[%s]", idx)); + } public static By getResultByIndex(String rowNumber) { return By.xpath(String.format("//tr[%s]//a", rowNumber)); } + + public static final By CASE_CLOSE_WINDOW_BUTTON = + By.xpath("//div[contains(@class,'v-window-closebox')]"); + public static final By CASE_INFO_BUTTON = By.cssSelector("[id='info']"); + // TODO refactor the other headers based on the last one added } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseImportExportPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseImportExportPage.java index d77c9bf9d87..582bb0d979f 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseImportExportPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CaseImportExportPage.java @@ -24,6 +24,7 @@ public class CaseImportExportPage { public static final By CASE_EXPORT_BUTTON = By.id("export"); public static final By CUSTOM_CASE_EXPORT_BUTTON = By.id("exportCaseCustom"); + public static final By BASIC_CASE_EXPORT_BUTTON = By.id("exportBasic"); public static final By NEW_EXPORT_CONFIGURATION_BUTTON = By.id("exportNewExportConfiguration"); public static final By CONFIGURATION_NAME_INPUT = By.xpath("//*[@class='v-widget v-has-caption v-caption-on-top']//input"); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CreateNewCasePage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CreateNewCasePage.java index e3f68ea466b..683141a34a7 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CreateNewCasePage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/CreateNewCasePage.java @@ -23,6 +23,8 @@ public class CreateNewCasePage { public static final By DATE_OF_REPORT_INPUT = By.cssSelector(".v-window #reportDate input"); public static final By DISEASE_COMBOBOX = By.cssSelector(".v-window #disease div"); + public static final By LINE_LISTING_DISEASE_COMBOBOX = By.cssSelector("#lineListingDisease div"); + public static final By LINE_LISTING_DISCARD_BUTTON = By.cssSelector(".v-window #actionDiscard"); public static final By DISEASE_VARIANT_COMBOBOX = By.cssSelector(".v-window #diseaseVariant div"); public static final By RESPONSIBLE_REGION_COMBOBOX = By.cssSelector(".v-window #responsibleRegion div"); @@ -30,6 +32,9 @@ public class CreateNewCasePage { By.cssSelector(".v-window #responsibleDistrict div"); public static final By RESPONSIBLE_COMMUNITY_COMBOBOX = By.cssSelector(".v-window #responsibleCommunity div"); + public static final By FACILITY_CATEGORY_COMBOBOX = By.cssSelector("#typeGroup div"); + public static final By FACILITY_TYPE_COMBOBOX = By.cssSelector("#type div"); + public static final By FACILITY_COMBOBOX = By.cssSelector("#healthFacility div"); public static final By PLACE_OF_STAY_HOME = By.xpath("//div[@location='facilityOrHomeLoc']//label[contains(text(), 'Home')]"); public static final By FIRST_NAME_INPUT = @@ -62,4 +67,22 @@ public class CreateNewCasePage { By.cssSelector("[location='enterHomeAddressNow'] span.v-checkbox"); public static final By CASE_DISEASE_VARIANT_COMBOBOX = By.cssSelector(".v-window #diseaseVariant div"); + public static final By PERSON_SEARCH_LOCATOR_BUTTON = By.id("personSearchLoc"); + public static final By UUID_EXTERNAL_ID_EXTERNAL_TOKEN_LIKE_INPUT = + By.id("uuidExternalIdExternalTokenLike"); + public static final By FIRST_NAME_LIKE_INPUT = + By.xpath("//div[@class= 'filters-container']//div[contains(@location, 'firstName')]//input"); + public static final By LAST_NAME_LIKE_INPUT = + By.xpath("//div[@class= 'filters-container']//div[contains(@location, 'lastName')]//input"); + public static final By PERSON_CASE_WINDOW_SEARCH_CASE_BUTTON = By.id("actionSearch"); + public static final By CREATE_A_NEW_CASE_CONFIRMATION_BUTTON = By.xpath("//*[text()='Create a new case']"); + public static final By SELECT_PERSON_WINDOW_CONFIRM_BUTTON = + By.xpath( + "//div[contains(@class, 'popupContent')]//span[contains(text(), 'Confirm')]//ancestor::div[@id='commit']"); + public static final By SELECT_PERSON_WINDOW_CONFIRM_BUTTON_DE = + By.xpath( + "//div[contains(@class, 'popupContent')]//span[contains(text(), 'Best\u00E4tigen')]//ancestor::div[@id='commit']"); + public static final By PERSON_CASE_WINDOW_SEARCH_FIRST_RESULT_OPTION = + By.xpath( + "//div[@class='v-grid v-widget v-has-width']//div[@class='v-grid-tablewrapper']/table/tbody[@class='v-grid-body']/tr[@class='v-grid-row v-grid-row-has-data']"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePage.java index 7041b868030..0e2a1c25ef3 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePage.java @@ -170,4 +170,54 @@ public class EditCasePage { By.cssSelector("#caseReferenceDefinition input"); public static final By BACK_TO_CASES_BUTTON = By.id("tab-cases"); public static final By CASE_DATA_TITLE = By.cssSelector("[location='caseDataHeadingLoc']"); + public static final By EDIT_CASE_EPIDEMIOLOGICAL_DATA = By.cssSelector("#tab-cases-epidata"); + public static final By PICK_OR_CREATE_PERSON_POPUP_HEADER = + By.xpath("//*[contains(text(),'Pick or create person')]"); + public static final By PICK_OR_CREATE_CASE_POPUP_HEADER = + By.xpath("//*[contains(text(),'Pick or create case')]"); + public static final By CREATE_NEW_PERSON_CHECKBOX = + By.xpath("//label[text()='Create a new person']"); + public static final By CREATE_NEW_CASE_CHECKBOX = By.xpath("//label[text()='Create a new case']"); + public static final By CURRENT_HOSPITALIZATION_POPUP = + By.xpath("//*[contains(text(),'Current hospitalization')]"); + public static final By SAVE_AND_OPEN_HOSPITALIZATION_BUTTON = + By.cssSelector(".popupContent #actionConfirm"); + public static final By PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL = + By.xpath( + "//label[text()='Genomsequenz des Virus von vorausgehender SARS-CoV-2-Infektion ist bekannt']"); + public static final By CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL = + By.xpath( + "//label[text()='Genomsequenz des Virus der aktuellen SARS-CoV-2-Infektion ist bekannt']"); + public static final By PREVIOUS_AND_CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL = + By.xpath( + "//label[text()='Genomsequenzen der Viren von vorausgehender und aktueller SARS-CoV-2-Infektion stimmen nicht \u00FCberein']"); + public static final By PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL = + By.xpath( + "//label[text()='Person hat nach einer best\u00E4tigten SARS-CoV-2-Infektion die akute respiratorische Erkrankung \u00FCberwunden']"); + public static final By PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL = + By.xpath("//label[text()='Person hatte eine asymptomatische SARS-CoV-2-Infektion']"); + public static final By COVID_GENOME_COPY_NUMBER_DE_LABEL = + By.xpath( + "//label[text()='Anzahl der SARS-CoV-2-Genomkopien im Rahmen des aktuellen PCR-Nachweises >=10^6/ml oder Ct-Wert < 30']"); + public static final By INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL = + By.xpath( + "//label[text()='Person wurde mittels PCR positiv auf SARS-CoV-2 getestet, aber Anzahl der SARS-CoV-2-Genomkopien im Rahmen des aktuellen PCR-Nachweises <10^6/ml oder Ct-Wert >= 30 oder beide Angaben nicht bekannt']"); + public static final By PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL = + By.xpath( + "//label[text()='Person wurde nach der vorausgehenden SARS-CoV-2-Infektion mittels PCR abschlie\u00DFend mindestens einmal negativ getestet']"); + public static final By THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL = + By.xpath( + "//label[text()='Der letzte positive PCR-Nachweis der vorausgehenden Infektion ist l\u00E4nger als 3 Monate zur\u00FCckliegend']"); + public static final By CREATE_A_NEW_CASE_FOR_THE_SAME_PERSON_DE_CHECKBOX = + By.xpath("//*[text()='Neuen Fall erstellen']"); + public static final By REINFECTION_EYE_ICON = By.xpath("//span[@class='v-icon v-icon-eye']"); + public static final By TOOLTIP_EYE_ICON_HOVER = By.xpath("//div[@class='v-tooltip-text']"); + public static final By REINFECTION_STATUS_LABEL = By.cssSelector("#reinfectionStatus input"); + public static final By CREATE_DOCUMENT_TEMPLATES = By.id("Create"); + public static final By UPLOAD_DOCUMENT_CHECKBOX = + By.xpath("//label[text()='Also upload the generated document to this entity']"); + public static final By POPUPS_INPUTS = By.cssSelector(".popupContent input"); + public static final By GENERATED_DOCUMENT_NAME = + By.xpath( + "//div[text()='Documents']/../parent::div/../../following-sibling::div//div[@class='v-label v-widget caption-truncated v-label-caption-truncated v-label-undef-w']"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePersonPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePersonPage.java index 01f49613522..30bdd60f3fb 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePersonPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditCasePersonPage.java @@ -34,7 +34,8 @@ public class EditCasePersonPage { public static final By DATE_OF_BIRTH_YEAR_INPUT = By.cssSelector("#birthdateYYYY input"); public static final By DATE_OF_BIRTH_MONTH_INPUT = By.cssSelector("#birthdateMM input"); public static final By DATE_OF_BIRTH_DAY_INPUT = By.cssSelector("#birthdateDD input"); - public static final By PRESENT_CONDITION_COMBOBOX = By.cssSelector("#presentCondition div"); + public static final By PRESENT_CONDITION_COMBOBOX = + By.cssSelector("[id='presentCondition'] [class='v-filterselect-button']"); public static final By DATE_OF_DEATH_INPUT = By.cssSelector("#deathDate input"); public static final By CASE_OF_DEATH = By.cssSelector("#causeOfDeath"); public static final By CASE_OF_DEATH_COMBOBOX = By.cssSelector("#causeOfDeath div"); @@ -53,4 +54,5 @@ public class EditCasePersonPage { public static final By AREA_TYPE_COMBOBOX = By.cssSelector("#areaType div"); public static final By COUNTRY_COMBOBOX = By.cssSelector("#country div"); public static final By GEOCODE_BUTTON = By.cssSelector("#geocodeButton"); + public static final By SEE_CASES_FOR_THIS_PERSON_BUTTON = By.id("See cases for this person"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditContactsPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditContactsPage.java index 5ecb863c3ba..d5f66975e96 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditContactsPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EditContactsPage.java @@ -40,4 +40,10 @@ public class EditContactsPage { public static final By IMPORT_POPUP_BUTTON = By.cssSelector("[class='v-button']"); public static final By COMMIT_BUTTON = By.id("commit"); public static final By IMPORT_SUCCESS = By.xpath("//*[text()='Import successful!']"); + public static final By RESULTS_IN_GRID_IMPORT_POPUP = + By.xpath( + " //div[contains(@class, 'popupContent')]//tr[contains(@class, 'v-grid-row-has-data')]"); + public static final By FIRST_RESULT_IN_GRID_IMPORT_POPUP = + By.xpath( + " //div[contains(@class, 'popupContent')]//tr[contains(@class, 'v-grid-row-has-data')]//td"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EpidemiologicalDataCasePage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EpidemiologicalDataCasePage.java index cb53e4d8374..bcae0100977 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EpidemiologicalDataCasePage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/EpidemiologicalDataCasePage.java @@ -56,6 +56,14 @@ public class EpidemiologicalDataCasePage { public static final By HANDLING_SAMPLES_OPTIONS = By.cssSelector(".v-window #handlingSamples .v-select-option"); public static final By TYPE_OF_PLACE_COMBOBOX = By.cssSelector(".v-window #typeOfPlace div"); + public static final By FACILITY_CATEGORY_POPUP_COMBOBOX = + By.cssSelector(".v-window #typeGroup div"); + public static final By FACILITY_TYPE_POPUP_COMBOBOX = + By.cssSelector(".v-window #facilityType div"); + public static final By BLUE_ERROR_EXCLAMATION_MARK_EXPOSURE_POPUP = + By.xpath("//span[@class='v-errorindicator v-errorindicator-info']"); + public static final By BLUE_ERROR_EXCLAMATION_MARK_EXPOSURE_POPUP_TEXT = + By.xpath("//div[@class='gwt-HTML']"); public static final By CONTINENT_COMBOBOX = By.cssSelector(".v-window #continent div"); public static final By SUBCONTINENT_COMBOBOX = By.cssSelector(".v-window #subcontinent div"); public static final By COUNTRY_COMBOBOX = By.cssSelector(".v-window #country div"); @@ -101,4 +109,17 @@ public class EpidemiologicalDataCasePage { public static final By OPEN_SAVED_ACTIVITY_BUTTON = By.xpath("//div[contains(@id, 'de.symeda.sormas.api.activityascase')]"); public static final By CONTACT_TO_CASE_COMBOBOX = By.cssSelector(".v-window #contactToCase div"); + public static final By EXPOSURE_PROBABLE_INFECTION_ENVIRONMENT_CHECKBOX = + By.cssSelector(".v-window #probableInfectionEnvironment label"); + public static final By EXPOSURE_ACTION_CANCEL = By.id("actionCancel"); + public static final By EXPOSURE_ACTION_CONFIRM = By.id("actionConfirm"); + public static final By EXPOSURE_CHOOSE_CASE_BUTTON = By.id("contactChooseCase"); + public static final By CONTACTS_WITH_SOURCE_CASE_BOX = + By.cssSelector("[location='sourceContacts']"); + public static final By TYPE_OF_ACTIVITY_EXPOSURES = + By.xpath("//table[@class='v-table-table']//td[2]/div/div"); + + public static By getExposureTableData(Integer tdNr) { + return By.xpath(String.format("//table[@class='v-table-table']//td[%s]", tdNr)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/HospitalizationTabPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/HospitalizationTabPage.java index 920a4db5f36..af1a60d3cde 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/HospitalizationTabPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/cases/HospitalizationTabPage.java @@ -49,4 +49,10 @@ public class HospitalizationTabPage { public static final By BLUE_ERROR_EXCLAMATION_MARK = By.xpath("//span[@class='v-errorindicator v-errorindicator-info']"); public static final By BLUE_ERROR_EXCLAMATION_MARK_TEXT = By.xpath("//div[@class='gwt-HTML']"); + public static final By PLACE_OF_STAY_IN_HOSPITAL_POPUP = + By.xpath("//*[contains(text(),'Place of stay in hospital')]"); + public static final By FACILITY_POPUP_CHECKBOX = + By.cssSelector(".v-window-contents #healthFacility div"); + public static final By PLACE_OF_STAY_IN_HOSPITAL_POPUP_SAVE_BUTTON = + By.cssSelector(".v-window-contents #commit"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/CommunitiesTabPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/CommunitiesTabPage.java new file mode 100644 index 00000000000..e8b0d23a216 --- /dev/null +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/CommunitiesTabPage.java @@ -0,0 +1,47 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.pages.application.configuration; + +import org.openqa.selenium.By; + +public class CommunitiesTabPage { + + public static final By COMMUNITIES_NEW_ENTRY_BUTTON = By.cssSelector("div#actionNewEntry"); + public static final By CREATE_NEW_ENTRY_COMMUNITIES_NAME_INPUT = + By.cssSelector(".popupContent #name"); + public static final By CREATE_NEW_ENTRY_COMMUNITIES_REGION_COMBOBOX = + By.cssSelector(".popupContent #region input + div"); + public static final By CREATE_NEW_ENTRY_COMMUNITIES_DISTRICT_COMBOBOX = + By.cssSelector(".popupContent #district input + div"); + public static final By SAVE_NEW_ENTRY_COMMUNITIES = By.cssSelector(".popupContent #commit"); + public static final By SEARCH_COMMUNITY_INPUT = By.cssSelector("#search"); + public static final By RESET_FILTERS_COMMUNITIES_BUTTON = By.cssSelector("#actionResetFilters"); + public static final By EDIT_COMMUNITY_BUTTON = By.xpath("//span[@class='v-icon v-icon-edit']"); + public static final By ARCHIVE_COMMUNITY_BUTTON = + By.cssSelector(".popupContent #actionArchiveInfrastructure"); + public static final By DEARCHIVE_COMMUNITY_BUTTON = + By.cssSelector(".popupContent #actionDearchiveInfrastructure"); + public static final By CONFIRM_ARCHIVING_COMMUNITY_TEXT = + By.xpath("//*[contains(text(),'Confirm archiving')]"); + public static final By CONFIRM_DEARCHIVING_COMMUNITY_TEXT = + By.xpath("//*[contains(text(),'Confirm de-archiving')]"); + public static final By CONFIRM_ARCHIVING_YES_BUTTON = + By.cssSelector(".popupContent #actionConfirm"); + public static final By COMMUNITY_FILTER_COMBOBOX = By.cssSelector("#relevanceStatus > div"); +} diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/DistrictsTabPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/DistrictsTabPage.java new file mode 100644 index 00000000000..e7f1a914c5f --- /dev/null +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/DistrictsTabPage.java @@ -0,0 +1,40 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.pages.application.configuration; + +import org.openqa.selenium.By; + +public class DistrictsTabPage { + + public static final By DISTRICTS_NEW_ENTRY_BUTTON = By.cssSelector("div#actionNewEntry"); + public static final By CREATE_NEW_ENTRY_DISTRICTS_NAME_INPUT = + By.cssSelector(".popupContent #name"); + public static final By CREATE_NEW_ENTRY_DISTRICTS_REGION_COMBOBOX = + By.cssSelector(".popupContent #region input + div"); + public static final By CREATE_NEW_ENTRY_DISTRICTS_EPID_CODE_INPUT = + By.cssSelector(".popupContent #epidCode"); + public static final By SAVE_NEW_ENTRY_DISTRICTS = By.cssSelector(".popupContent #commit"); + public static final By SEARCH_DISTRICT_INPUT = By.cssSelector("#search"); + public static final By RESET_FILTERS_DISTRICTS_BUTTON = By.cssSelector("#actionResetFilters"); + public static final By EDIT_DISTRICT_BUTTON = By.xpath("//span[@class='v-icon v-icon-edit']"); + public static final By ARCHIVE_DISTRICT_BUTTON = + By.cssSelector(".popupContent #actionArchiveInfrastructure"); + public static final By CONFIRM_ARCHIVING_DISTRICT_TEXT = + By.xpath("//*[contains(text(),'Archivieren best\u00E4tigen')]"); +} diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/FacilitiesTabPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/FacilitiesTabPage.java index 944312c995a..ec60d152194 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/FacilitiesTabPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/configuration/FacilitiesTabPage.java @@ -36,4 +36,12 @@ public class FacilitiesTabPage { public static final By CLOSE_POPUP_FACILITIES_BUTTON = By.id("actionCancel"); public static final By CLOSE_FACILITIES_IMPORT_BUTTON = By.xpath("//div[@class='v-window-closebox']"); + public static final By FACILITIES_NEW_ENTRY_BUTTON = By.id("create"); + public static final By FACILITY_NAME_INPUT = By.cssSelector("#name"); + public static final By REGION_COMBOBOX = + By.cssSelector(".v-window [location='region'] [role='combobox'] div"); + public static final By DISTRICT_COMBOBOX = + By.cssSelector(".v-window [location='district'] [role='combobox'] div"); + public static final By FACILITY_CATEGORY_COMBOBOX = By.cssSelector(".v-window #typeGroup div"); + public static final By FACILITY_TYPE_COMBOBOX = By.cssSelector(".v-window #type div"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactDirectoryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactDirectoryPage.java index befc19f1ba4..618c9ce5a14 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactDirectoryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactDirectoryPage.java @@ -22,7 +22,7 @@ public class ContactDirectoryPage { public static final By NEW_CONTACT_PAGE_BUTTON = By.id("contactNewContact"); - public static final By LINE_LISTING = By.cssSelector("[id='lineListing']"); + public static final By LINE_LISTING = By.id("lineListing"); public static final By MULTIPLE_OPTIONS_SEARCH_INPUT = By.cssSelector("#contactOrCaseLike"); public static final By PERSON_LIKE_SEARCH_INPUT = By.cssSelector("#personLike"); public static final By APPLY_FILTERS_BUTTON = By.id("actionApplyFilters"); @@ -87,4 +87,12 @@ public class ContactDirectoryPage { public static final By NEW_ENTRY_EPIDEMIOLOGICAL_DATA = By.id("actionNewEntry"); public static final By FIRST_PERSON_ID = By.xpath("//td[8]//a"); public static final By FIRST_CONTACT_ID = By.xpath("//td[1]//a"); + public static final By BULK_CREATE_QUARANTINE_ORDER = By.id("bulkActions-8"); + + public static By getCheckboxByUUID(String uuid) { + return By.xpath( + String.format( + "//td//a[text()=\"%s\"]/../preceding-sibling::td//input[@type=\"checkbox\"]", + uuid.substring(0, 6).toUpperCase())); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactImportExportPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactImportExportPage.java new file mode 100644 index 00000000000..81674980936 --- /dev/null +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactImportExportPage.java @@ -0,0 +1,32 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.pages.application.contacts; + +import org.openqa.selenium.By; + +public class ContactImportExportPage { + + public static final By CUSTOM_CONTACT_EXPORT = By.id("exportCustom"); + public static final By EXPORT_CONFIGURATION_DATA_ID_CHECKBOX_CONTACT = + By.xpath("//label[text()='Contact ID']"); + public static final By EXPORT_CONFIGURATION_DATA_FIRST_NAME_CHECKBOX_CONTACT = + By.xpath("//label[text()='First name of contact person']"); + public static final By EXPORT_CONFIGURATION_DATA_LAST_NAME_CHECKBOX_CONTACT = + By.xpath("//label[text()='Last name of contact person']"); +} diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactsLineListingPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactsLineListingPage.java index bec740af570..bf30f3d04d6 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactsLineListingPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/ContactsLineListingPage.java @@ -62,6 +62,12 @@ public class ContactsLineListingPage { By.cssSelector("[id='lineListingContactLineField_1'] [id='sex'] div"); public static final By ADD_LINE = By.cssSelector("[id='lineListingAddLine']"); public static final By LINE_LISTING_ACTION_SAVE = By.cssSelector("[id='actionSave']"); + public static final By CONTACT_CHOOSE_CASE = By.id("contactChooseCase"); + public static final By LINE_LISTING_SELECTED_SOURCE_CASE_NAME_AND_ID_TEXT = + By.cssSelector("div[class='v-slot'] div[class='v-label v-widget v-label-undef-w']"); + public static final By LINE_LISTING_DISEASE_OF_SOURCE_CASE = + By.cssSelector( + "div#lineListingSharedInfoField > .v-has-width.v-layout.v-vertical.v-verticallayout.v-widget div#disease > .v-filterselect-input"); public static By getLineListingDateReportInputByIndex(String dateOfReportNumber) { return By.xpath(String.format("(//div[@id='dateOfReport']//input)[%s]", dateOfReportNumber)); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/CreateNewContactPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/CreateNewContactPage.java index f9b1670957b..cd48973f484 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/CreateNewContactPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/CreateNewContactPage.java @@ -65,12 +65,16 @@ public class CreateNewContactPage { public static final By MULTI_DAY_CONTACT_LABEL = By.xpath("//*[@id='multiDayContact']/label"); public static final By FIRST_DAY_CONTACT_DATE = By.cssSelector("#firstContactDate input"); public static final By CHOOSE_CASE_BUTTON = By.id("contactChooseCase"); + public static final By SOURCE_CASE_WINDOW_CONTACT_DE = + By.xpath("//div[contains(@class, 'popupContent')]//input[@placeholder='Suche...']"); public static final By SOURCE_CASE_WINDOW_CONTACT = By.xpath("//div[contains(@class, 'popupContent')]//input[@placeholder='Search...']"); - public static final By SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION = By.xpath("//div[contains(@class, 'popupContent')]//table//tbody//tr[1]"); public static final By SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON = By.xpath( "//div[contains(@class, 'popupContent')]//span[contains(text(), 'Confirm')]//ancestor::div[@id='commit']"); + public static final By SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON_DE = + By.xpath( + "//div[contains(@class, 'popupContent')]//span[contains(text(), 'Best\u00E4tigen')]//ancestor::div[@id='commit']"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/EditContactPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/EditContactPage.java index 7d27a5d251c..bd8447353ef 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/EditContactPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/contacts/EditContactPage.java @@ -27,6 +27,9 @@ public class EditContactPage { public static final By REPORT_DATE = By.cssSelector("#reportDateTime input"); public static final By DISEASE_COMBOBOX = By.cssSelector(".v-verticallayout [location='disease'] [role='combobox'] div"); + public static final By DISEASE_VALUE = + By.xpath( + "//div[contains(@class, 'v-expand')]//span[text()='Disease']/../following-sibling::div"); public static final By CASE_ID_IN_EXTERNAL_SYSTEM_INPUT = By.cssSelector("#caseIdExternalSystem"); public static final By LAST_CONTACT_DATE = By.cssSelector("#lastContactDate input"); public static final By CASE_OR_EVENT_INFORMATION_INPUT = @@ -99,10 +102,12 @@ public class EditContactPage { public static final By POPUP_YES_BUTTON = By.id("actionConfirm"); public static final By SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON = By.id("caseSearchCase"); public static final By SOURCE_CASE_WINDOW_CASE_INPUT = By.cssSelector(".v-window-wrap input"); + public static final By SOURCE_CASE_WINDOW_CASE_INPUT_NESTED = + By.xpath("//div[contains(@class, 'popupContent')]//input[@placeholder='Search...']"); public static final By SOURCE_CASE_WINDOW_CONFIRM_BUTTON = By.cssSelector(".v-window-wrap #commit"); public static final By SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION = - By.cssSelector("tr[class*='v-grid-row-has-data']"); + By.cssSelector(".v-window-contents tr[class*='v-grid-row-has-data']"); public static final By CHANGE_CASE_BUTTON = By.id("contactChangeCase"); public static final By CASE_ID_LABEL = By.id("caseIdLabel"); public static final By CONTACT_CLASSIFICATION_RADIO_BUTTON = By.cssSelector(".v-radiobutton"); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/dashboard/Surveillance/SurveillanceDashboardPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/dashboard/Surveillance/SurveillanceDashboardPage.java index 21a05ed7eae..31015e45b32 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/dashboard/Surveillance/SurveillanceDashboardPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/dashboard/Surveillance/SurveillanceDashboardPage.java @@ -25,8 +25,7 @@ public class SurveillanceDashboardPage { By.xpath("(//div[contains(@class,'v-select-optiongroup')]//span)[1]"); public static final By CONTACTS_BUTTON = By.xpath("(//div[contains(@class,'v-select-optiongroup')]//span)[2]"); - public static final By LOGOUT_BUTTON = - By.cssSelector("#actionLogout span.v-menubar-menuitem-caption"); + public static final By LOGOUT_BUTTON = By.cssSelector("#actionLogout"); public static final By COVID19_DISEASE_COUNTER = By.cssSelector("div.v-verticallayout-background-disease-coronavirus > div > div > div"); public static final By CASE_COUNTER = @@ -37,4 +36,383 @@ public class SurveillanceDashboardPage { public static final By REFERENCE_DEFINITION_FULFILLED_CASES_NUMBER = By.xpath( "/html/body/div[1]/div/div[2]/div/div[2]/div/div/div/div[2]/div/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div[7]/div/div[2]/div"); + public static final By CURRENT_PERIOD = By.id("currentPeriod"); + public static final By COMPARISON_PERIOD = By.id("comparisonPeriod"); + public static final By DATE_TYPE = By.cssSelector("div#dateType > .v-filterselect-input"); + public static final By REGION_COMBOBOX = + By.cssSelector("div:nth-of-type(3) > div[role='combobox'] > .v-filterselect-input"); + public static final By RESET_FILTERS = By.cssSelector("div#actionResetFilters"); + public static final By APPLY_FILTERS = By.cssSelector("div#actionApplyFilters"); + public static final By DISEASE_METRICS = + By.cssSelector( + ".v-has-width.v-layout.v-margin-left.v-margin-right.v-vertical.v-verticallayout.v-verticallayout-vspace-top-4.v-widget.vspace-top-4"); + public static final By DISEASE_SLIDER = + By.cssSelector( + "div:nth-of-type(3) > .v-has-height.v-has-width.v-widget > .highcharts-container > .highcharts-root > .highcharts-background"); + public static final By EPIDEMIOLOGICAL_CURVE = + By.cssSelector( + "div:nth-of-type(1) > .v-has-height.v-has-width.v-layout.v-margin-bottom.v-margin-left.v-margin-right.v-margin-top.v-vertical.v-verticallayout.v-widget > .v-expand > div:nth-of-type(1) > .v-has-width.v-horizontal.v-horizontallayout.v-horizontallayout-vspace-4.v-layout.v-widget.vspace-4 > .v-expand > .v-align-bottom.v-slot.v-slot-h2.v-slot-vspace-4.v-slot-vspace-top-none"); + public static final By STATUS_MAP = By.cssSelector("[id^='leaflet_']"); + public static final By SHOW_ALL_DISEASES = By.cssSelector("#dashboardShowAllDiseases"); + public static final By DISEASE_CATEGORIES_COUNTER = + By.cssSelector("[class='v-verticallayout v-layout v-vertical v-widget v-has-width']"); + public static final By DISEASE_CATEGORIES = + By.cssSelector("[class='col-lg-6 col-xs-12 '][location='burden'] >div>div>div>div>div"); + public static final By AFP_DISEASE_BOX = By.xpath("//div[contains(text(),'AFP')]"); + public static final By ANTHRAX_DISEASE_BOX = By.xpath("//div[contains(text(),'Anthrax')]"); + public static final By COVID_19_DISEASE_BOX = By.xpath("//div[contains(text(),'COVID-19')]"); + public static final By CHOLERA_DISEASE_BOX = By.xpath("//div[contains(text(),'Cholera')]"); + public static final By CRS_DISEASE_BOX = By.xpath("//div[contains(text(),'CRS')]"); + public static final By DENGUE_DISEASE_BOX = By.xpath("//div[contains(text(),'Dengue')]"); + public static final By FIRST_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By SECOND_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By THIRD_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By FOURTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By FIFTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By SIXTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[6]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By TOTAL_DATA_FIRST_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"); + public static final By TOTAL_DATA_SECOND_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"); + public static final By TOTAL_DATA_THIRD_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"); + public static final By TOTAL_DATA_FOURTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"); + public static final By TOTAL_DATA_FIFTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"); + public static final By TOTAL_DATA_SIXTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[6]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"); + public static final By COMPARED_DATA_FIRST_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]"); + public static final By COMPARED_DATA_SECOND_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]"); + public static final By COMPARED_DATA_THIRD_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]"); + public static final By COMPARED_DATA_FOURTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]"); + public static final By COMPARED_DATA_FIFTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]"); + public static final By COMPARED_DATA_SIXTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[6]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS = By.xpath("//div[contains(text(),'Number of events')]"); + public static final By FATALITIES = By.xpath("//div[contains(text(),'Fatalities')]"); + public static final By LAST_REPORT = By.xpath("//div[contains(text(),'Last report:')]"); + public static final By LAST_REPORT_FIRST_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By LAST_REPORT_SECOND_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By LAST_REPORT_THIRD_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By LAST_REPORT_FOURTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By LAST_REPORT_FIFTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By LAST_REPORT_SIXTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[6]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By FATALITIES_FIRST_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]"); + public static final By FATALITIES_SECOND_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]"); + public static final By FATALITIES_THIRD_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]"); + public static final By FATALITIES_FOURTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[2]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]"); + public static final By FATALITIES_FIFTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[2]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]"); + public static final By FATALITIES_SIXTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[6]/div[2]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS_FIRST_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS_SECOND_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS_THIRD_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS_FOURTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[4]/div[2]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS_FIFTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[5]/div[2]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]"); + public static final By NUMBER_OF_EVENTS_SIXTH_DISEASE_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[6]/div[2]/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]"); + public static final By DISEASE_BURDEN_INFORMATION = + By.xpath("//div[contains(text(),'Disease Burden Information')]"); + public static final By BURDEN_TABLE_VIEW_SWITCH = By.xpath("//div[@id='showTableView']"); + public static final By BURDEN_TILE_VIEW_SWITCH = By.xpath("//div[@id='showTileView']"); + public static final By DISEASE_BURDEN_BOX_DISEASES = By.xpath("//thead/tr[1]/th[1]/div[1]"); + public static final By DISEASE_BURDEN_BOX_NEW_CASES = + By.xpath("//div[contains(text(),'New cases')]"); + public static final By DISEASE_BURDEN_BOX_PREVIOUS_CASES = + By.xpath("//div[contains(text(),'Previous cases')]"); + public static final By DISEASE_BURDEN_BOX_DYNAMIC = By.xpath("//div[contains(text(),'Dynamic')]"); + public static final By DISEASE_BURDEN_BOX_NUMBER_OF_EVENTS = + By.xpath("//div[contains(text(),'Number of events')]"); + public static final By DISEASE_BURDEN_BOX_OUTBREAK_DISTRICTS = + By.xpath("//div[contains(text(),'Outbreak districts')]"); + public static final By DISEASE_BURDEN_BOX_FATALITIES = By.xpath("//thead/tr[1]/th[7]/div[1]"); + public static final By DISEASE_BURDEN_BOX_CFR = By.xpath("//div[contains(text(),'CFR')]"); + public static final By DISEASE_BURDEN_BOX_FIRST_DISEASE = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[1]"); + public static final By DISEASE_BURDEN_BOX_SECOND_DISEASE = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[2]/td[1]"); + public static final By DISEASE_BURDEN_BOX_THIRD_DISEASE = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[3]/td[1]"); + public static final By DISEASE_BURDEN_BOX_FOURTH_DISEASE = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[4]/td[1]"); + public static final By DISEASE_BURDEN_BOX_FIFTH_DISEASE = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[5]/td[1]"); + public static final By DISEASE_BURDEN_BOX_SIXTH_DISEASE = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[6]/td[1]"); + public static final By AFP_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'AFP')]"); + public static final By ANTHRAX_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Anthrax')]"); + public static final By COVID_19_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'COVID-19')]"); + public static final By CHOLERA_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Cholera')]"); + public static final By CRS_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'CRS')]"); + public static final By DENGUE_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Dengue')]"); + public static final By EVD_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'EVD')]"); + public static final By GUINEA_WORM_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Guinea Worm')]"); + public static final By RABIES_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Rabies')]"); + public static final By NEW_FLU_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'New Flu')]"); + public static final By LASSA_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Lassa')]"); + public static final By MEASLES_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Measles')]"); + public static final By MENINGITIS_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Meningitis')]"); + public static final By MONKEYPOX_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Monkeypox')]"); + public static final By PLAGUE_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Plague')]"); + public static final By POLIO_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Polio')]"); + public static final By VHF_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'VHF')]"); + public static final By YELLOW_FEVER_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath("//span[contains(text(),'Yellow Fever')]"); + public static final By NEW_CASES_COUNTER_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By NEW_EVENTS_COUNTER_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By TEST_RESULTS_COUNTER_BOX_IN_CAROUSEL_SLIDER_BAR = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By STATISTICS_CHARTS = By.cssSelector("[id^='highchart_']"); + public static final By DIFFERENCE_IN_NUMBER_OF_CASES_GRAPH = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]"); + public static final By CASES_METRICS_MAIN_BOX = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]"); + public static final By CASES_METRICS_CONFIRMED_NO_SYMPTOMS_BOX = + By.xpath("//div[contains(text(),'Confirmed no symptoms')]"); + public static final By CASES_METRICS_CONFIRMED_BOX = + By.xpath("//div[contains(text(),'Confirmed')]"); + public static final By CASES_METRICS_CONFIRMED_UNKNOWN_SYMPTOMS_BOX = + By.xpath("//div[contains(text(),'Confirmed unknown symptoms')]"); + public static final By CASES_METRICS_PROBABLE_BOX = + By.xpath("//div[contains(text(),'Probable')]"); + public static final By CASES_METRICS_SUSPECT_BOX = By.xpath("//div[contains(text(),'Suspect')]"); + public static final By CASES_METRICS_NOT_A_CASE_BOX = + By.xpath("//div[contains(text(),'Not A Case')]"); + public static final By CASES_METRICS_NOT_YET_CLASSIFIED_BOX = + By.xpath("//div[contains(text(),'Not Yet Classified')]"); + public static final By FATALITIES_COUNTER = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[1]/div[2]"); + public static final By NEW_EVENTS_COUNTER = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By NEW_EVENTS_TYPE_CLUSTER = By.xpath("//div[contains(text(),'Cluster')]"); + public static final By NEW_EVENTS_TYPE_EVENT = By.xpath("//div[contains(text(),'Event')]"); + public static final By NEW_EVENTS_TYPE_SIGNAL = By.xpath("//div[contains(text(),'Signal')]"); + public static final By NEW_EVENTS_TYPE_SCREENING = + By.xpath("//div[contains(text(),'Screening')]"); + public static final By NEW_EVENTS_TYPE_DROPPED = By.xpath("//div[contains(text(),'Dropped')]"); + public static final By TEST_RESULTS_COUNTER = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]"); + public static final By TEST_RESULTS_POSITIVE = By.xpath("//div[contains(text(),'Positive')]"); + public static final By TEST_RESULTS_NEGATIVE = By.xpath("//div[contains(text(),'Negative')]"); + public static final By TEST_RESULTS_PENDING = By.xpath("//div[contains(text(),'Pending')]"); + public static final By TEST_RESULTS_INDETERMINATE = + By.xpath("//div[contains(text(),'Indeterminate')]"); + public static final By LEGEND_DATA = + By.xpath( + "/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/*[name()='svg'][1]/*[name()='rect'][1]"); + public static final By LEGEND_CHART_DOWNLOAD_BUTTON = + By.xpath( + "//*[name()='g' and contains(@class,'highcharts')]//*[name()='g' and contains(@class,'highcharts')]//*[name()='path' and contains(@class,'highcharts')]"); + public static final By DOWNLOAD_CHART_OPTION_PRINT_CHART = + By.xpath("//li[contains(text(),'Print chart')]"); + public static final By DOWNLOAD_CHART_OPTION_DOWNLOAD_PNG_IMAGE = + By.xpath("//li[contains(text(),'Download PNG image')]"); + public static final By DOWNLOAD_CHART_OPTION_DOWNLOAD_JPEG_IMAGE = + By.xpath("//li[contains(text(),'Download JPEG image')]"); + public static final By DOWNLOAD_CHART_OPTION_DOWNLOAD_PDF_DOCUMENT = + By.xpath("//li[contains(text(),'Download PDF document')]"); + public static final By DOWNLOAD_CHART_OPTION_DOWNLOAD_SVG_VECTOR_IMAGE = + By.xpath("//li[contains(text(),'Download SVG vector image')]"); + public static final By DOWNLOAD_CHART_OPTION_DOWNLOAD_CSV = + By.xpath("//li[contains(text(),'Download CSV')]"); + public static final By DOWNLOAD_CHART_OPTION_DOWNLOAD_XLS = + By.xpath("//li[contains(text(),'Download XLS')]"); + public static final By LEGEND_DATA_EXPAND_EPI_CURVE_BUTTON = + By.xpath("//div[@id='expandEpiCurve']"); + public static final By LEGEND_DATA_DEAD_OR_ALIVE_BUTTON = + By.xpath("//label[contains(text(),'Alive or dead')]/parent::*"); + public static final By LEGEND_DATA_CASE_STATUS_BUTTON = + By.xpath("//label[contains(text(),'Case status')]/parent::*"); + public static final By LEGEND_DATA_GROUPING_BUTTON = By.xpath("//div[@id='dashboardGrouping']"); + public static final By LEGEND_DATA_GROUPING_DAY = + By.xpath("//label[contains(text(),'Day')]/preceding::input[1]"); + public static final By LEGEND_DATA_GROUPING_EPI_WEEK = + By.xpath("//label[contains(text(),'Epi Week')]/preceding::input[1]"); + public static final By LEGEND_DATA_GROUPING_MONTH = + By.xpath("//label[contains(text(),'Month')]/preceding::input[1]"); + public static final By LEGEND_DATA_GROUPING_ALWAYS_SHOW_AT_LEAST_7_ENTRIES = + By.xpath("//label[contains(text(),'Always show at least 7 entries')]"); + public static final By LEGEND_CHART_CASE_STATUS_CONFIRMED = + By.cssSelector( + "g.highcharts-legend-item.highcharts-column-series.highcharts-color-undefined.highcharts-series-5 > text > tspan"); + public static final By LEGEND_CHART_CASE_STATUS_CONFIRMED_UNKNOWN_SYMPTOMS = + By.cssSelector( + "g.highcharts-legend-item.highcharts-column-series.highcharts-color-undefined.highcharts-series-3 > text > tspan"); + public static final By LEGEND_CHART_CASE_STATUS_SUSPECT = + By.cssSelector( + "g.highcharts-legend-item.highcharts-column-series.highcharts-color-undefined.highcharts-series-1 > text > tspan"); + public static final By LEGEND_CHART_CASE_STATUS_CONFIRMED_NO_SYMPTOMS = + By.cssSelector( + "g.highcharts-legend-item.highcharts-column-series.highcharts-color-undefined.highcharts-series-4 > text > tspan"); + public static final By LEGEND_CHART_CASE_STATUS_PROBABLE = + By.cssSelector( + "g.highcharts-legend-item.highcharts-column-series.highcharts-color-undefined.highcharts-series-2 > text > tspan"); + public static final By LEGEND_CHART_CASE_STATUS_NOT_YET_CLASSIFIED = + By.cssSelector( + "g.highcharts-legend-item.highcharts-column-series.highcharts-color-undefined.highcharts-series-0 > text > tspan"); + public static final By LEGEND_CHART_ALIVE_OR_DEAD_UNKNOWN = + By.xpath("//*/text()[normalize-space(.)='Unknown']/parent::*"); + public static final By LEGEND_CHART_ALIVE_OR_DEAD_DEAD = + By.xpath("//*/text()[normalize-space(.)='Dead']/parent::*"); + public static final By LEGEND_CHART_ALIVE_OR_DEAD_ALIVE = + By.xpath("//*/text()[normalize-space(.)='Alive']/parent::*"); + public static final By ZOOM_IN_BUTTON_ON_MAP = By.cssSelector("[title='Zoom in']"); + public static final By ZOOM_OUT_BUTTON_ON_MAP = By.cssSelector("[title='Zoom out']"); + public static final By FULL_SCREEN_BUTTON_ON_MAP = By.cssSelector("[title='View Fullscreen']"); + public static final By EXIT_FULL_SCREEN_BUTTON_ON_MAP = + // By.cssSelector("a[title='Exit Fullscreen']"); + By.cssSelector(".leaflet-control-fullscreen.leaflet-control"); + public static final By EXPAND_MAP_BUTTON = By.cssSelector("#expandMap"); + public static final By COLLAPSE_MAP_BUTTON = By.cssSelector("#collapseMap"); + public static final By DASHBOARD_MAP_KEY_BUTTON = By.cssSelector("#dashboardMapKey"); + public static final By DASHBOARD_MAP_KEY_ONLY_NOT_YET_CLASSIFIED_CASES = + By.xpath("//div[contains(text(),'Only Not Yet Classified Cases')]"); + public static final By DASHBOARD_MAP_KEY_SUSPECT_CASES = + By.xpath("//div[contains(text(),'> 1 Suspect Cases')]"); + public static final By DASHBOARD_MAP_KEY_PROBABLE_CASES = + By.xpath("//div[contains(text(),'> 1 Probable Cases')]"); + public static final By DASHBOARD_MAP_KEY_CONFIRMED_CASES = + By.xpath("//div[contains(text(),'> 1 Confirmed Cases')]"); + public static final By DASHBOARD_MAP_KEY_NOT_YET_CLASSIFIED = + By.xpath( + "//body/div[2]/div[2]/div[@class='popupContent']/div/div[4]/div/div[1]/div/div[@class='v-slot v-slot-small']/div[.='Not Yet Classified']"); + public static final By DASHBOARD_MAP_KEY_SUSPECT = + By.xpath( + "//body/div[2]/div[2]/div[@class='popupContent']/div/div[4]/div/div[2]/div/div[@class='v-slot v-slot-small']/div[.='Suspect']"); + public static final By DASHBOARD_MAP_KEY_PROBABLE = + By.xpath( + "//body/div[2]/div[2]/div[@class='popupContent']/div/div[4]/div/div[3]/div/div[@class='v-slot v-slot-small']/div[.='Probable']"); + public static final By DASHBOARD_MAP_KEY_CONFIRMED = + By.xpath( + "//body/div[2]/div[2]/div[@class='popupContent']/div/div[4]/div/div[@class='v-slot']/div/div[@class='v-slot v-slot-small']/div[.='Confirmed']"); + public static final By DASHBOARD_LAYERS_BUTTON = By.cssSelector("#dashboardMapLayers"); + public static final By DASHBOARD_LAYERS_SHOW_CASES = + By.xpath("//span[@id='dashboardShowCases']/label[.='Show cases']"); + public static final By DASHBOARD_LAYERS_SHOW_ALL_CASES = + By.xpath( + "//body/div[2]/div[2]/div/div/div[3]/div[@role='radiogroup']//label[.='Show all cases']"); + public static final By DASHBOARD_LAYERS_SHOW_CONFIRMED_CASES_ONLY = + By.xpath( + "//body/div[2]/div[2]/div/div/div[3]/div[@role='radiogroup']//label[.='Show confirmed cases only']"); + public static final By DASHBOARD_LAYERS_SHOW_CONTACTS = + By.xpath("//span[@id='dashboardShowContacts']/label[.='Show contacts']"); + public static final By DASHBOARD_LAYERS_SHOW_EVENTS = + By.xpath("//span[@id='dashboardShowEvents']/label[.='Show events']"); + public static final By DASHBOARD_LAYERS_SHOW_REGIONS = + By.xpath("//span[@id='dashboardShowRegions']/label[.='Show regions']"); + public static final By DASHBOARD_LAYERS_HIDE_OTHER_COUNTRIES = + By.xpath("//span[@id='dashboardHideOtherCountries']/label[.='Hide other countries']"); + public static final By DASHBOARD_LAYERS_SHOW_EPIDEMIOLOGICAL_SITUATION = + By.xpath( + "//span[@id='dashboardMapShowEpiSituation']/label[.='Show epidemiological situation']"); + public static final By DISEASES_LAYOUT = By.cssSelector("[location='burden'] .v-csslayout"); + public static final By CURVE_AND_MAP_LAYOUT = + By.cssSelector(".v-slot.v-slot-curve-and-map-layout"); + public static final By COLLAPSE_EPI_CURVE = By.cssSelector("#collapseEpiCurve"); + public static final By HIDE_OVERVIEW = By.cssSelector("#hideOverview"); + public static final By EXPAND_EPI_CURVE = By.cssSelector("#expandEpiCurve"); + public static final By DASHBOARD_TODAY = By.cssSelector("#dashboardToday"); + public static final By DASHBOARD_DAY_BEFORE = By.cssSelector("#dashboardDayBefore"); + public static final By DASHBOARD_THIS_WEEK = By.cssSelector("#dashboardThisWeek"); + public static final By DASHBOARD_LAST_WEEK = By.cssSelector("#dashboardLastWeek"); + public static final By REGION_COMBOBOX_DROPDOWN = + By.cssSelector("[location='regionFilter'] > div > div"); + public static final By DATE_TYPE_COMBOBOX_DROPDOWN = By.cssSelector("#dateType div"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/EditTravelEntryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/EditTravelEntryPage.java index de164199f07..d356736470a 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/EditTravelEntryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/EditTravelEntryPage.java @@ -42,4 +42,5 @@ public class EditTravelEntryPage { public static final By DISEASE_NAME_INPUT = By.cssSelector(".popupContent #diseaseDetails"); public static final By TRAVEL_ENTRY_CASE_UUID = By.cssSelector("#caseIdLabel"); public static final By CASE_PERSON_NAME = By.xpath("//div[@class='v-slot'][4]//div//div[2]"); + public static final By INFO_BUTTON = By.id("info"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/TravelEntryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/TravelEntryPage.java index 70ae128ee3c..5ce14ec4b43 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/TravelEntryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/entries/TravelEntryPage.java @@ -41,4 +41,5 @@ public class TravelEntryPage { By.id("showHideMoreFilters"); public static final By TRAVEL_ENTRY_AGGREGATION_COMBOBOX = By.cssSelector("[id='relevanceStatus'] [class='v-filterselect-button']"); + public static final By TRAVEL_ENTRY_FIRST_RECORD_IN_TABLE = By.cssSelector("[role='gridcell'] a"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EditEventPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EditEventPage.java index a83109b8929..63003d2abd7 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EditEventPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EditEventPage.java @@ -44,6 +44,9 @@ public class EditEventPage { public static final By EVENT_INVESTIGATION_STATUS_OPTIONS = By.cssSelector("#eventInvestigationStatus label"); public static final By DISEASE_COMBOBOX = By.cssSelector("#disease div"); + public static final By FACILITY_TYPE_COMBOBOX = By.cssSelector("#facilityType div"); + public static final By FACILITY_CATEGORY_COMBOBOX = By.cssSelector("#typeGroup div"); + public static final By PLACE_OF_STAY_COMBOBOX = By.cssSelector("#typeOfPlace div"); public static final By SOURCE_TYPE_COMBOBOX = By.cssSelector("#srcType div"); public static final By TYPE_OF_PLACE_COMBOBOX = By.cssSelector(" #typeOfPlace div"); public static final By NEW_ACTION_BUTTON = By.id("actionNewAction"); @@ -70,10 +73,71 @@ public class EditEventPage { public static final By UNLINK_EVENT_BUTTON = By.id("unlink-event-1"); public static final By EDIT_EVENT_GROUP_BUTTON = By.id("add-event-0"); public static final By NAVIGATE_TO_EVENT_DIRECTORY_EVENT_GROUP_BUTTON = By.id("list-events-0"); + public static final By NAVIGATE_TO_EVENT_DIRECTORY_LIST_GROUP_BUTTON = By.id("tab-events"); + public static final By NAVIGATE_TO_EVENT_PARTICIPANTS_BUTTON = + By.id("tab-events-eventparticipants"); public static final By SAVE_BUTTON_FOR_EDIT_EVENT_GROUP = By.id("commit"); public static final By FIRST_GROUP_ID = By.xpath("//table/tbody/tr[1]/td[2]"); public static final By TOTAL_ACTIONS_COUNTER = By.cssSelector(".badge"); public static final By CREATE_CONTACTS_BULK_EDIT_BUTTON = By.id("bulkActions-3"); + public static final By EVENT_MANAGEMENT_STATUS_CHECK = + By.cssSelector("#eventManagementStatus input:checked[type='checkbox'] ~ label"); + + public static final By EVENT_CLUSTER_EDIT = By.xpath("//span[.='Cluster']"); + public static final By PRIMARY_MODE_OF_TRANSMISSION_COMBOBOX = + By.cssSelector("[id='diseaseTransmissionMode'] [class='v-filterselect-button']"); + public static final By EPIDEMIOLOGICAL_EVIDENCE_OPTIONS = + By.cssSelector("#epidemiologicalEvidence .v-select-option"); + public static final By LABORATORY_DIAGNOSTIC_EVIDENCE_OPTIONS = + By.cssSelector("#laboratoryDiagnosticEvidence .v-select-option"); + public static final By STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Studie']"); + public static final By CASE_CONTROL_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Fall-Kontroll-Studie']"); + public static final By COHORT_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Kohorten-Studie']"); + public static final By EXPLORATIVE_SURVEY_OF_AFFECTED_PEOPLE_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Explorative Befragung der Betroffenen']"); + public static final By CONTACT_TO_SICK_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Kontakt zu Erkrankten']"); + public static final By CONTACT_TO_CONTAMINATED_MATERIALS_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Kontakt zu kontaminierten Gegenst\u00E4nden']"); + public static final By + DESCRIPTIVE_ANALYSIS_OF_ASCETAINED_DATA_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Deskriptive Auswertung der ermittelten Daten']"); + public static final By TEMPORAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath( + "//label[text()='Zeitlich: zeitliches Auftreten der Erkrankung deutet auf gemeinsame Infektionsquelle hin']"); + public static final By SPATIAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath( + "//label[text()='R\u00E4umlich: Mehrzahl der F\u00E4lle war im angenommenen Infektionszeitraum am selben Ort']"); + public static final By PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath( + "//label[text()='Person: F\u00E4lle haben direkten oder indirekten Kontakt miteinander gehabt']"); + public static final By SUSPICION_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Vermutung']"); + public static final By EXPRESSED_BY_THE_DISEASE_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Von den erkrankten Personen ge\u00E4u\u00DFert']"); + public static final By EXPRESSED_BY_THE_HEALTH_DEPARTMENT_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Des Gesundheitsamtes']"); + public static final By + VERIFICATION_OF_AT_LEAST_TWO_INFECTED_OR_DISEASED_PERSONS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath( + "//label[text()='Nachweis bei mindestens zwei infizierten bzw. erkrankten Personen']"); + public static final By COMPLIANT_PATHOGEN_FINE_TYPING_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Erreger-Feintypisierung stimmt \u00FCberein']"); + public static final By VERIFICATION_ON_MATERIALS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Nachweis an Gegenst\u00E4nden']"); + public static final By IMPRESSION_TEST_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Abklatschprobe (z.B. Kan\u00FClen, Katheter)']"); + public static final By WATER_SAMPLE_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Wasserprobe']"); + public static final By OTHER_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath("//label[text()='Sonstiges']"); + public static final By + PATHOGEN_FINE_TYPING_COMPLIANT_WITH_THE_ONE_OF_CASES_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE = + By.xpath( + "//label[text()='Erreger-Feintypisierung stimmt mit der der F\u00E4lle \u00FCberein']"); public static By getGroupEventName(String groupEventName) { return By.xpath("//*[contains(text(),'" + groupEventName + "')]"); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventDirectoryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventDirectoryPage.java index da7f23a4fc8..d15a3db3766 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventDirectoryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventDirectoryPage.java @@ -96,6 +96,11 @@ public class EventDirectoryPage { By.xpath("//th[@role='columnheader']//input[@type='checkbox']/../.."); public static final By BULK_ACTIONS_EVENT_DIRECTORY = By.id("bulkActions-2"); public static final By GROUP_EVENTS_EVENT_DIRECTORY = By.id("bulkActions-7"); + public static final By BULK_EDIT_EVENT_DIRECTORY = By.id("bulkActions-3"); + public static final By CHANGE_EVENT_MANAGEMENT_STATUS_CHECKBOX = + By.xpath("//label[text()='Change event management status']"); + public static final By EVENT_MANAGEMENT_STATUS_COMBOBOX = + By.cssSelector("#eventManagementStatus .v-select-option"); public static final By GROUP_ID_COLUMN = By.xpath("(//td//a)[2]"); public static final By EXPORT_PARTICIPANT_BUTTON = By.id("export"); public static final By BASIC_EXPORT_PARTICIPANT_BUTTON = By.id("exportBasic"); @@ -118,6 +123,19 @@ public class EventDirectoryPage { public static final By IMPORT_PARTICIPANT_BUTTON = By.id("actionImport"); public static final By COMMIT_BUTTON = By.id("commit"); public static final By CUSTOM_EXPORT_PARTICIPANT_BUTTON = By.id("exportCustom"); + public static final By DETAILED_EVENT_EXPORT_BUTTON = By.id("exportDetailed"); + public static final By BASIC_EVENT_EXPORT_BUTTON = By.id("exportBasic"); + + public static By getCheckboxByIndex(String idx) { + return By.xpath(String.format("(//input[@type=\"checkbox\"])[%s]", idx)); + } + + public static By getCheckboxByUUID(String uuid) { + return By.xpath( + String.format( + "//td//a[text()=\"%s\"]/../preceding-sibling::td//input[@type=\"checkbox\"]", + uuid.substring(0, 6).toUpperCase())); + } public static By getByEventUuid(String eventUuid) { return By.xpath(String.format("//a[@title='%s']", eventUuid)); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventParticipantsPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventParticipantsPage.java index faa71a10d24..43487824cdf 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventParticipantsPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/events/EventParticipantsPage.java @@ -31,6 +31,8 @@ public class EventParticipantsPage { By.cssSelector(".v-window [location='sex'] [role='combobox'] div"); public static final By PICK_OR_CREATE_PERSON_POPUP = By.xpath("//*[contains(text(),'Pick or create person')]"); + public static final By PICK_OR_CREATE_CONTACT_POPUP = + By.xpath("//*[contains(text(),'Pick or create contact')]"); public static final By CREATE_NEW_PERSON_RADIO_BUTTON = By.xpath("//label[contains(text(),'Create a new person')]"); public static final By EVENT_PARTICIPANTS_TAB = By.id("tab-events-eventparticipants"); @@ -38,4 +40,7 @@ public class EventParticipantsPage { public static final By ERROR_MESSAGE_TEXT = By.cssSelector("p.v-Notification-description"); public static final By DISCARD_BUTTON = By.id("discard"); public static final By APPLY_FILTERS_BUTTON = By.id("actionApplyFilters"); + public static final By EXPORT_EVENT_PARTICIPANT_CONFIGURATION_DATA_REGION_CHECKBOX = + By.xpath("//label[text()='Region']"); + public static final By CONFIRM_NAVIGATION_POPUP = By.id("actionConfirm"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/immunizations/EditImmunizationPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/immunizations/EditImmunizationPage.java index ad2355118fa..78b27f250c1 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/immunizations/EditImmunizationPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/immunizations/EditImmunizationPage.java @@ -3,9 +3,19 @@ import org.openqa.selenium.By; public class EditImmunizationPage { + public static final By UUID = By.id("uuid"); + public static final By DATE_OF_REPORT_INPUT = By.cssSelector("#reportDate input"); public static final By FACILITY_COMBOBOX_IMMUNIZATION_INPUT = By.cssSelector("#healthFacility input"); - public static final By DISEASE_COMBOBOX = By.cssSelector(".v-window #disease div"); + public static final By DISEASE_INPUT = By.cssSelector("#disease input"); + public static final By MEANS_OF_IMMUNIZATIONS_INPUT = + By.cssSelector("#meansOfImmunization input"); + public static final By RESPONSIBLE_REGION_INPUT = By.cssSelector("#responsibleRegion input"); + public static final By RESPONSIBLE_DISTRICT_INPUT = By.cssSelector("#responsibleDistrict input"); + public static final By RESPONSIBLE_COMMUNITY_INPUT = + By.cssSelector("#responsibleCommunity input"); public static final By FACILITY_NAME_DESCRIPTION_VALUE = By.id("healthFacilityDetails"); + public static final By FACILITY_CATEGORY_INPUT = By.cssSelector("#typeGroup input"); + public static final By FACILITY_TYPE_INPUT = By.cssSelector("#facilityType input"); public static final By IMMUNIZATION_PERSON_TAB = By.cssSelector("div#tab-immunizations-person"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/EditPersonPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/EditPersonPage.java index 19e777afc28..f5380f0abab 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/EditPersonPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/EditPersonPage.java @@ -99,8 +99,7 @@ public class EditPersonPage { public static final By POPUP_RESPONSIBLE_DISTRICT_COMBOBOX = By.cssSelector("#district div"); public static final By PERSON_DATA_SAVED = By.cssSelector(".v-Notification-caption"); public static final By PERSON_DATA_ADDED_AS_A_PARTICIPANT_MESSAGE = - By.xpath( - "//*[contains(text(),'The case person was added as an event participant to the selected event.')]"); + By.xpath("//*[contains(text(),'The new event participant was created.')]"); public static final By SEE_EVENTS_FOR_PERSON = By.cssSelector("div#See\\ events\\ for\\ this\\ person"); public static final By INVALID_DATA_ERROR = @@ -114,6 +113,8 @@ public class EditPersonPage { public static final By CONFIRM_NAVIGATION_BUTTON = By.cssSelector(".popupContent #actionConfirm"); public static final By PERSON_INFORMATION_TITLE = By.cssSelector("[location='personInformationHeadingLoc']"); + public static final By EVENT_PARTICIPANTS_DATA_TAB = + By.cssSelector("#tab-events-eventparticipants"); public static By getByPersonUuid(String personUuid) { return By.cssSelector("a[title='" + personUuid + "']"); @@ -122,4 +123,8 @@ public static By getByPersonUuid(String personUuid) { public static By getByImmunizationUuid(String immunizationUuid) { return By.id("edit-immunization-" + immunizationUuid); } + + public static By getByTravelEntryPersonUuid(String personUuid) { + return By.id(String.format("edit-travelEntry-%s", personUuid)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/PersonDirectoryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/PersonDirectoryPage.java index 067d7aa15d2..addada283d7 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/PersonDirectoryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/persons/PersonDirectoryPage.java @@ -47,4 +47,12 @@ public class PersonDirectoryPage { By.cssSelector("v-grid-column-header-content v-grid-column-default-header-content"); public static final By PRESENT_CONDITION_FILTER_COMBOBOX = By.cssSelector("#presentCondition div"); + public static final By PERSON_DETAILED_COLUMN_HEADERS = + By.cssSelector("thead .v-grid-column-default-header-content"); + public static final By PERSON_RESULTS_UUID_LOCATOR_FROM_GRID = + By.xpath("//table/tbody/tr[1]/td[1]"); + + public static final By getPersonResultsUuidLocator(String uuid) { + return By.cssSelector(String.format("[title = '%s']", uuid)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/CreateNewSamplePage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/CreateNewSamplePage.java index db1ba2ff3bf..6507d0f5b9d 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/CreateNewSamplePage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/CreateNewSamplePage.java @@ -78,6 +78,42 @@ public class CreateNewSamplePage { public static final By PATHOGEN_LABORATORY_INPUT = By.cssSelector( "[location='lab'] [class='v-filterselect v-widget v-required v-filterselect-required v-has-width'] input"); + public static final By REQUEST_PATHOGEN_OPTION_BUTTON = + By.cssSelector("[id='pathogenTestingRequested'] label"); + public static final By ANTIGEN_DETECTION_TEST_OPTION_BUTTON = + By.xpath("//label[text()='Antibody detection']"); + public static final By ISOLATION_TEST_OPTION_BUTTON = By.xpath("//label[text()='Isolation']"); + public static final By PCR_RTP_PCR_TEST_OPTION_BUTTON = + By.xpath("//label[text()='PCR / RT-PCR']"); + public static final By FINAL_LABORATORY_RESULT_COMBOBOX = + By.cssSelector("[id='pathogenTestResult'] [class='v-filterselect-button']"); public static final By ADD_PATHOGEN_TEST_BUTTON_DE = By.xpath("/html/body/div[2]/div[3]/div/div/div[3]/div/div/div[2]/div/div/div[1]/div"); + public static final By HAEMOGLOBIN_IN_URINE_COMBOBOX = + By.cssSelector("[id='haemoglobinuria'] [class='v-filterselect-button']"); + public static final By HAEMOGLOBIN_IN_URINE_INPUT = + By.cssSelector("[id='haemoglobinuria'] input"); + public static final By PROTEIN_IN_URINE_COMBOBOX = + By.cssSelector("[id='proteinuria'] [class='v-filterselect-button']"); + public static final By PROTEIN_IN_URINE_INPUT = By.cssSelector("[id='proteinuria'] input"); + public static final By CELLS_IN_URINE_COMBOBOX = + By.cssSelector("[id='hematuria'] [class='v-filterselect-button']"); + public static final By CELLS_IN_URINE_INPUT = By.cssSelector("[id='hematuria'] input"); + public static final By PH_INPUT = By.cssSelector("[id='arterialVenousGasPH']"); + public static final By PCO2_INPUT = By.cssSelector("[id='arterialVenousGasPco2']"); + public static final By PAO2_INPUT = By.cssSelector("[id='arterialVenousGasPao2']"); + public static final By HCO3_INPUT = By.cssSelector("[id='arterialVenousGasHco3']"); + public static final By OXYGEN_INPUT = By.cssSelector("[id='gasOxygenTherapy']"); + public static final By SGPT_INPUT = By.cssSelector("[id='altSgpt']"); + public static final By TOTAL_BILIRUBIN_INPUT = By.cssSelector("[id='totalBilirubin']"); + public static final By SGOT_INPUT = By.cssSelector("[id='astSgot']"); + public static final By CONJ_BILIRUBIN_INPUT = By.cssSelector("[id='conjBilirubin']"); + public static final By CREATININE_INPUT = By.cssSelector("[id='creatinine']"); + public static final By WBC_INPUT = By.cssSelector("[id='wbcCount']"); + public static final By POTASSIUM_INPUT = By.xpath("(//div[@location='potassium'])//input"); + public static final By PLATELETS_INPUT = By.cssSelector("[id='platelets']"); + public static final By UREA_INPUT = By.cssSelector("[id='urea']"); + public static final By PROTHROMBIN_INPUT = By.cssSelector("[id='prothrombinTime']"); + public static final By HAEMOGLOBIN_INPUT = By.cssSelector("[id='haemoglobin']"); + public static final By OTHER_TESTS_INPUT = By.cssSelector("[id='otherTestResults']"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/EditSamplePage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/EditSamplePage.java index 37d1c538006..d52c34b2293 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/EditSamplePage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/EditSamplePage.java @@ -23,6 +23,8 @@ public class EditSamplePage { public static final By PATHOGEN_NEW_TEST_RESULT_BUTTON = By.cssSelector("[id='New test result']"); + public static final By ADDIITONAL_NEW_TEST_RESULT_BUTTON = + By.cssSelector("[id='additionalTestNewTest']"); public static final By NEW_TEST_RESULT_DE = By.cssSelector("[id='Neues Testresultat']"); public static final By COLLECTED_DATE_TIME_COMBOBOX = By.cssSelector("[id='sampleDateTime_time'] [class='v-filterselect-button']"); diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/SamplesDirectoryPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/SamplesDirectoryPage.java index 5fd561de42e..2cbde9cbc6e 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/SamplesDirectoryPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/samples/SamplesDirectoryPage.java @@ -41,6 +41,8 @@ public class SamplesDirectoryPage { By.cssSelector(("tbody>tr:first-child>td:last-child")); public static final By EDIT_TEST_RESULTS_BUTTON = By.cssSelector("[location='pathogenTests'] [class='v-slot v-slot-s-list'] [role='button']"); + public static final By EDIT_ADDITIONAL_TEST_RESULTS_BUTTON = + By.cssSelector("[location='additionalTests'] [class='v-slot v-slot-s-list'] [role='button']"); public static final By SAMPLE_CLASIFICATION_SEARCH_COMBOBOX = By.cssSelector("[id='caseClassification'] [class='v-filterselect-button']"); public static final By SAMPLE_DISEASE_SEARCH_COMBOBOX = @@ -58,4 +60,7 @@ public class SamplesDirectoryPage { public static final By CONFIRM_BUTTON = By.cssSelector(".popupContent [id='actionConfirm']"); public static final By EDIT_PATHOGEN_TEST_BUTTON = By.xpath("//div[@class='v-button v-widget link v-button-link compact v-button-compact']"); + public static final By EXPORT_SAMPLE_BUTTON = By.id("export"); + public static final By BASIC_EXPORT_SAMPLE_BUTTON = By.id("exportBasic"); + public static final By DETAILED_EXPORT_SAMPLE_BUTTON = By.id("exportDetailed"); } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/tasks/TaskManagementPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/tasks/TaskManagementPage.java index 482ac1a9469..aafc097dee4 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/tasks/TaskManagementPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/tasks/TaskManagementPage.java @@ -31,4 +31,20 @@ public class TaskManagementPage { public static final By TABLE_DATA = By.tagName("td"); public static final By TASK_CONTEXT_COMBOBOX = By.cssSelector("#taskContext div"); public static final By TASK_STATUS_COMBOBOX = By.cssSelector("#taskStatus div"); + public static final By SHOW_MORE_FILTERS = By.cssSelector("#showHideMoreFilters"); + public static final By ASSIGNED_USER_FILTER_INPUT = By.cssSelector("#assigneeUserLike"); + public static final By APPLY_FILTERS_BUTTON = By.cssSelector("#actionApplyFilters"); + public static final By BULK_EDIT_BUTTON = By.id("actionEnterBulkEditMode"); + public static final By BULK_DELETE_BUTTON = By.id("bulkActions-4"); + public static final By BULK_ARCHIVE_BUTTON = By.id("bulkActions-5"); + public static final By BULK_EDITING_BUTTON = By.id("bulkActions-3"); + public static final By CHANGE_ASSIGNEE_CHECKBOX = By.xpath("//label[text()='Change assignee']"); + public static final By CHANGE_PRIORITY_CHECKBOX = By.xpath("//label[text()='Change priority']"); + public static final By CHANGE_STATUS_CHECKBOX = By.xpath("//label[text()='Change task status']"); + public static final By TASK_ASSIGNEE_COMBOBOX = By.cssSelector("#taskAssignee div"); + public static final By TASK_RADIOBUTTON = By.cssSelector(".v-radiobutton"); + + public static By getCheckboxByIndex(String idx) { + return By.xpath(String.format("(//input[@type=\"checkbox\"])[%s]", idx)); + } } diff --git a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/users/CreateNewUserPage.java b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/users/CreateNewUserPage.java index d972c32196e..5612bce4a7e 100644 --- a/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/users/CreateNewUserPage.java +++ b/sormas-e2e-tests/src/main/java/org/sormas/e2etests/pages/application/users/CreateNewUserPage.java @@ -54,4 +54,16 @@ public class CreateNewUserPage { By.xpath( "//div[contains(@class, 'popupContent')]//div[@class='v-label v-widget h2 v-label-h2 v-label-undef-w']"); public static final By CLOSE_DIALOG_BUTTON = By.className("v-window-closebox"); + public static final By USER_INPUT_SEARCH = By.id("search"); + public static final By ENABLE_BULK_ACTIONS_VALUES = By.id("bulkActions-3"); + public static final By DISABLE_BULK_ACTIONS_VALUES = By.id("bulkActions-4"); + public static final By CONFIRM_POP_UP = By.id("actionConfirm"); + public static final By AMOUNT_OF_CHOSEN_USERS = + By.xpath( + "//div[@class='v-label v-widget v-label-undef-w bold v-label-bold vspace-top-none v-label-vspace-top-none align-right v-label-align-right']"); + public static final By AMOUNT_ACTIVE_INACTIVE_USERS = + By.xpath( + "//div[@class='v-label v-widget bold v-label-bold vspace-top-none v-label-vspace-top-none align-right v-label-align-right v-label-undef-w']"); + public static final By ACTIVE_USER_COMBOBOX = + By.cssSelector("[id='active'] [class='v-filterselect-button']"); } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/csv/CustomContactExportCSV.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/csv/CustomContactExportCSV.java new file mode 100644 index 00000000000..8cb169ce80e --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/csv/CustomContactExportCSV.java @@ -0,0 +1,32 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.pojo.csv; + +import lombok.*; + +@Value +@AllArgsConstructor +@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) +@Builder(toBuilder = true, builderClassName = "builder") +public class CustomContactExportCSV { + String uuid; + String disease; + String firstName; + String lastName; +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/Communities.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/Communities.java new file mode 100644 index 00000000000..a5364b946e9 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/Communities.java @@ -0,0 +1,37 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.pojo.web; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.Value; + +@Value +@AllArgsConstructor +@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) +@Builder(toBuilder = true, builderClassName = "builder") +public class Communities { + + String communityName; + String region; + String district; + String externalID; +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/Districts.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/Districts.java new file mode 100644 index 00000000000..778c918e6bf --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/Districts.java @@ -0,0 +1,37 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.pojo.web; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.Value; + +@Value +@AllArgsConstructor +@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) +@Builder(toBuilder = true, builderClassName = "builder") +public class Districts { + + String districtName; + String region; + String epidCode; + String externalID; +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/SampleAdditionalTest.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/SampleAdditionalTest.java new file mode 100644 index 00000000000..b2bc853867b --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/pojo/web/SampleAdditionalTest.java @@ -0,0 +1,55 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.pojo.web; + +import java.time.LocalDate; +import java.time.LocalTime; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.Value; + +@Value +@AllArgsConstructor +@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) +@Builder(toBuilder = true, builderClassName = "builder") +public class SampleAdditionalTest { + LocalDate dateOfResult; + LocalTime timeOfResult; + String haemoglobinInUrine; + String proteinInUrine; + String redBloodCellsInUrine; + String ph; + String pCO2; + String pAO2; + String hCO3; + String oxygen; + String sgpt; + String totalBilirubin; + String sgot; + String conjBilirubin; + String creatine; + String wbc; + String potassium; + String platelets; + String urea; + String prothrombin; + String haemoglobin; + String otherResults; +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CaseService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CaseService.java index 97237478595..586f52285b0 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CaseService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CaseService.java @@ -107,6 +107,36 @@ public Case buildGeneratedCase() { .build(); } + public Case buildCaseWithDisease(String diseaseValue) { + firstName = faker.name().firstName(); + lastName = faker.name().lastName(); + + return Case.builder() + .firstName(firstName) + .lastName(lastName) + .caseOrigin("IN-COUNTRY") + .dateOfReport(LocalDate.now().minusDays(1)) + .externalId(UUID.randomUUID().toString()) + .disease(DiseasesValues.getCaptionFor(diseaseValue)) + .responsibleRegion(RegionsValues.VoreingestellteBundeslander.getName()) + .responsibleDistrict(DistrictsValues.VoreingestellterLandkreis.getName()) + .responsibleCommunity(CommunityValues.VoreingestellteGemeinde.getName()) + .placeOfStay("HOME") + .placeDescription(faker.harryPotter().location()) + .dateOfBirth( + LocalDate.of( + faker.number().numberBetween(1900, 2002), + faker.number().numberBetween(1, 12), + faker.number().numberBetween(1, 27))) + .sex(GenderValues.getRandomGender()) + .presentConditionOfPerson("Alive") + .dateOfSymptomOnset(LocalDate.now().minusDays(1)) + .primaryPhoneNumber(faker.phoneNumber().phoneNumber()) + .primaryEmailAddress( + ASCIIHelper.convertASCIIToLatin(firstName + "." + lastName + emailDomain)) + .build(); + } + public Case buildGeneratedCaseDE() { firstName = faker.name().firstName(); lastName = faker.name().lastName(); @@ -139,6 +169,36 @@ public Case buildGeneratedCaseDE() { .build(); } + public Case buildGeneratedCaseDEForOnePerson( + String firstName, + String lastName, + LocalDate dateOfBirth, + LocalDate reportDate, + String personSex) { + return Case.builder() + .firstName(firstName) + .lastName(lastName) + .caseOrigin("IM LAND") + .dateOfReport(reportDate) + .externalId(UUID.randomUUID().toString()) + .disease("COVID-19") + .diseaseVariant("B.1.617.1") + .responsibleRegion(RegionsValues.VoreingestellteBundeslander.getName()) + .responsibleDistrict(DistrictsValues.VoreingestellterLandkreis.getName()) + .responsibleCommunity(CommunityValues.VoreingestellteGemeinde.getName()) + .placeOfStay("ZUHAUSE") + .placeDescription(faker.harryPotter().location()) + .dateOfBirth(dateOfBirth) + .sex(personSex) + .presentConditionOfPerson("Lebendig") + .dateOfSymptomOnset(LocalDate.now().minusDays(1)) + .primaryPhoneNumber(faker.phoneNumber().phoneNumber()) + .primaryEmailAddress( + ASCIIHelper.convertASCIIToLatin(firstName + "." + lastName + emailDomain)) + .outcomeOfCase("VERSTORBEN") + .build(); + } + public Case buildEditGeneratedCase() { return Case.builder() .dateOfReport(LocalDate.now().minusDays(3)) diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CommunitiesService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CommunitiesService.java new file mode 100644 index 00000000000..f13cec00ab0 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/CommunitiesService.java @@ -0,0 +1,45 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.services; + +import com.github.javafaker.Faker; +import com.google.inject.Inject; +import java.util.Random; +import org.sormas.e2etests.entities.pojo.web.Communities; +import org.sormas.e2etests.enums.DistrictsValues; +import org.sormas.e2etests.enums.RegionsValues; + +public class CommunitiesService { + private final Faker faker; + + @Inject + public CommunitiesService(Faker faker) { + this.faker = faker; + } + + public Communities buildSpecificCommunity() { + Random rand = new Random(); + int randomNum = rand.nextInt(1000); + return Communities.builder() + .communityName(faker.address().city() + randomNum) + .region(RegionsValues.VoreingestellteBundeslander.getName()) + .district(DistrictsValues.VoreingestellterLandkreis.getName()) + .build(); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/ContactService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/ContactService.java index 7c6615c1fef..61d68c93aee 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/ContactService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/ContactService.java @@ -67,11 +67,11 @@ public Contact buildGeneratedContactDE() { ASCIIHelper.convertASCIIToLatin(firstName + "." + lastName + emailDomain)) .primaryPhoneNumber(faker.phoneNumber().phoneNumber()) .returningTraveler("NEIN") - .reportDate(LocalDate.now().minusDays(random.nextInt(10))) + .reportDate(LocalDate.now().minusDays(random.nextInt(5))) .diseaseOfSourceCase("COVID-19") .caseIdInExternalSystem(UUID.randomUUID().toString()) - .dateOfFirstContact(LocalDate.now().minusDays(15)) - .dateOfLastContact(LocalDate.now().minusDays(13)) + .dateOfFirstContact(LocalDate.now().minusDays(9)) + .dateOfLastContact(LocalDate.now().minusDays(6)) .caseOrEventInformation("Automated test dummy description") .responsibleRegion(RegionsValues.VoreingestellteBundeslander.getName()) .responsibleDistrict(DistrictsValues.VoreingestellterLandkreis.getName()) @@ -236,11 +236,59 @@ public Exposure buildGeneratedExposureDataContactForRandomInputs() { .facilityCategory(FacilityCategory.ACCOMMODATION.getFacility()) .facilityType(FacilityType.CAMPSITE.getType()) .facility("Other facility") - .facilityDetails(faker.book().title()) + .facilityDetails("Other facility") .contactPersonFirstName(firstName) .contactPersonLastName(lastName) .contactPersonPhone(faker.phoneNumber().phoneNumber()) .contactPersonEmail(firstName + lastName + emailDomain) .build(); } + + public Exposure buildGeneratedExposureDataContactForRandomInputsDE() { + firstName = faker.name().firstName(); + lastName = faker.name().lastName(); + return Exposure.builder() + .startOfExposure(LocalDate.now().minusDays(3)) + .endOfExposure(LocalDate.now().minusDays(1)) + .exposureDescription(faker.medical().symptoms()) + .typeOfActivity(TypeOfActivityExposure.VISIT) + .exposureDetailsRole(ExposureDetailsRole.MEDICAL_STAFF) + .riskArea(YesNoUnknownOptions.NO) + .indoors(YesNoUnknownOptions.YES) + .outdoors(YesNoUnknownOptions.NO) + .wearingMask(YesNoUnknownOptions.NO) + .wearingPpe(YesNoUnknownOptions.NO) + .otherProtectiveMeasures(YesNoUnknownOptions.NO) + .shortDistance(YesNoUnknownOptions.YES) + .longFaceToFaceContact(YesNoUnknownOptions.YES) + .percutaneous(YesNoUnknownOptions.NO) + .contactToBodyFluids(YesNoUnknownOptions.NO) + .handlingSamples(YesNoUnknownOptions.NO) + .typeOfPlace(TypeOfPlace.HOME) + .typeOfPlaceDetails(faker.address().fullAddress()) + .continent("Europa") + .subcontinent("Westeuropa") + .country("Deutschland") + .exposureRegion(RegionsValues.VoreingestellteBundeslander.getName()) + .district(DistrictsValues.VoreingestellterLandkreis.getName()) + .community(CommunityValues.VoreingestellteGemeinde.getName()) + .street(faker.address().streetAddress()) + .houseNumber(String.valueOf(faker.number().numberBetween(1, 99))) + .additionalInformation(faker.address().streetAddress()) + .postalCode(faker.address().zipCode()) + .city(faker.address().cityName()) + .areaType("St\u00E4dtisch") + .latitude(faker.address().latitude()) + .longitude(faker.address().longitude()) + .latLonAccuracy(faker.address().latitude()) + .facilityCategory(FacilityCategory.ACCOMMODATION.getFacilityDE()) + .facilityType(FacilityType.CAMPSITE.getTypeDE()) + .facility(faker.book().title()) + .facilityDetails("Andere Einrichtung") + .contactPersonFirstName(firstName) + .contactPersonLastName(lastName) + .contactPersonPhone(faker.phoneNumber().phoneNumber()) + .contactPersonEmail(firstName + "." + lastName + emailDomain) + .build(); + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/DistrictsService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/DistrictsService.java new file mode 100644 index 00000000000..07e4d27429f --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/DistrictsService.java @@ -0,0 +1,44 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.services; + +import com.github.javafaker.Faker; +import com.google.inject.Inject; +import java.util.Random; +import org.sormas.e2etests.entities.pojo.web.Districts; +import org.sormas.e2etests.enums.RegionsValues; + +public class DistrictsService { + private final Faker faker; + + @Inject + public DistrictsService(Faker faker) { + this.faker = faker; + } + + public Districts buildSpecificDistrict() { + Random rand = new Random(); + int randomNum = rand.nextInt(5000); + return Districts.builder() + .districtName(faker.address().city() + randomNum) + .region(RegionsValues.VoreingestellteBundeslander.getName()) + .epidCode("Epid-District" + randomNum) + .build(); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/EventService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/EventService.java index 51f55362e21..9ef59ddcd9b 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/EventService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/EventService.java @@ -43,8 +43,8 @@ public Event buildGeneratedEventDE() { .eventManagementStatus("FORTLAUFEND") .disease(DiseasesValues.CORONAVIRUS.getDiseaseCaption()) .title("EVENT_AUTOMATION_" + timestamp + faker.address().city()) - .eventDate(LocalDate.now().minusDays(1)) - .reportDate(LocalDate.now().minusDays(2)) + .eventDate(LocalDate.now().minusDays(2)) + .reportDate(LocalDate.now().minusDays(1)) .eventLocation("Zuhause") .riskLevel("Geringes Risiko") .sourceType("Nicht erhoben") diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleAdditionalTestService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleAdditionalTestService.java new file mode 100644 index 00000000000..93e806dcf27 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleAdditionalTestService.java @@ -0,0 +1,61 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.entities.services; + +import com.github.javafaker.Faker; +import com.google.inject.Inject; +import java.time.LocalDate; +import java.time.LocalTime; +import org.sormas.e2etests.entities.pojo.web.SampleAdditionalTest; + +public class SampleAdditionalTestService { + private final Faker faker; + + @Inject + public SampleAdditionalTestService(Faker faker) { + this.faker = faker; + } + + public SampleAdditionalTest buildSampleAdditionalTestResult() { + long currentTimeMillis = System.currentTimeMillis(); + return SampleAdditionalTest.builder() + .dateOfResult(LocalDate.now()) + .timeOfResult(LocalTime.of(15, 15)) + .haemoglobinInUrine("Positive") + .proteinInUrine("Positive") + .redBloodCellsInUrine("Positive") + .ph(String.valueOf(faker.number().numberBetween(0, 9))) + .pCO2(String.valueOf(faker.number().numberBetween(0, 9))) + .pAO2(String.valueOf(faker.number().numberBetween(0, 9))) + .hCO3(String.valueOf(faker.number().numberBetween(0, 9))) + .oxygen(String.valueOf(faker.number().numberBetween(0, 9))) + .sgpt(String.valueOf(faker.number().numberBetween(0, 9))) + .totalBilirubin(String.valueOf(faker.number().numberBetween(0, 9))) + .sgot(String.valueOf(faker.number().numberBetween(0, 9))) + .conjBilirubin(String.valueOf(faker.number().numberBetween(0, 9))) + .creatine(String.valueOf(faker.number().numberBetween(0, 9))) + .wbc(String.valueOf(faker.number().numberBetween(0, 9))) + .potassium(String.valueOf(faker.number().numberBetween(0, 9))) + .platelets(String.valueOf(faker.number().numberBetween(0, 9))) + .urea(String.valueOf(faker.number().numberBetween(0, 9))) + .prothrombin(String.valueOf(faker.number().numberBetween(0, 9))) + .haemoglobin(String.valueOf(faker.number().numberBetween(0, 9))) + .otherResults(currentTimeMillis + "Other results for Additional Test in Sample Directory") + .build(); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleService.java index 84ab8749a8e..a1106cec803 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SampleService.java @@ -80,6 +80,21 @@ public Sample buildGeneratedSampleTestResult() { .build(); } + public Sample buildGeneratedSampleTestResultForCovid() { + long currentTimeMillis = System.currentTimeMillis(); + return Sample.builder() + .sampleTestResults("Positive") + .reportDate(LocalDate.now().minusDays(10)) + .typeOfTest("PCR / RT-PCR") + .testedDisease(DiseasesValues.CORONAVIRUS.getDiseaseCaption()) + .dateOfResult(LocalDate.now().minusDays(10)) + .timeOfResult(LocalTime.of(11, 30)) + .laboratory(LaboratoryValues.OTHER_FACILITY.getCaptionEnglish()) + .resultVerifiedByLabSupervisor("YES") + .testResultsComment(currentTimeMillis + "Comment on new Pathogen requests or received") + .build(); + } + public Sample buildEditSample() { long currentTimeMillis = System.currentTimeMillis(); return Sample.builder() diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SymptomService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SymptomService.java index 750bd8af2f1..a50304da104 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SymptomService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/SymptomService.java @@ -18,6 +18,8 @@ package org.sormas.e2etests.entities.services; +import static org.sormas.e2etests.enums.YesNoUnknownOptions.NO; +import static org.sormas.e2etests.enums.YesNoUnknownOptions.UNKNOWN; import static org.sormas.e2etests.enums.YesNoUnknownOptions.YES; import com.google.inject.Inject; @@ -60,4 +62,60 @@ public Symptoms buildEditGeneratedSymptoms() { .dateOfSymptom(LocalDate.now().minusDays(2)) .build(); } + + public Symptoms buildEditGeneratedSymptomsWithNoOptions() { + return Symptoms.builder() + .maximumBodyTemperatureInC("35,2") + .sourceOfBodyTemperature("rectal") + .chillsOrSweats(NO.toString()) + .headache(NO.toString()) + .feelingIll(NO.toString()) + .musclePain(NO.toString()) + .fever(NO.toString()) + .shivering(NO.toString()) + .acuteRespiratoryDistressSyndrome(NO.toString()) + .oxygenSaturationLower94(NO.toString()) + .cough(NO.toString()) + .pneumoniaClinicalOrRadiologic(NO.toString()) + .difficultyBreathing(NO.toString()) + .rapidBreathing(NO.toString()) + .respiratoryDiseaseVentilation(NO.toString()) + .runnyNose(NO.toString()) + .soreThroat(NO.toString()) + .fastHeartRate(NO.toString()) + .diarrhea(NO.toString()) + .nausea(NO.toString()) + .lossOfSmell(NO.toString()) + .lossOfTaste(NO.toString()) + .symptomsComments(UUID.randomUUID().toString()) + .build(); + } + + public Symptoms buildEditGeneratedSymptomsWithUnknownOptions() { + return Symptoms.builder() + .maximumBodyTemperatureInC("35,2") + .sourceOfBodyTemperature("rectal") + .chillsOrSweats(UNKNOWN.toString()) + .headache(UNKNOWN.toString()) + .feelingIll(UNKNOWN.toString()) + .musclePain(UNKNOWN.toString()) + .fever(UNKNOWN.toString()) + .shivering(UNKNOWN.toString()) + .acuteRespiratoryDistressSyndrome(UNKNOWN.toString()) + .oxygenSaturationLower94(UNKNOWN.toString()) + .cough(UNKNOWN.toString()) + .pneumoniaClinicalOrRadiologic(UNKNOWN.toString()) + .difficultyBreathing(UNKNOWN.toString()) + .rapidBreathing(UNKNOWN.toString()) + .respiratoryDiseaseVentilation(UNKNOWN.toString()) + .runnyNose(UNKNOWN.toString()) + .soreThroat(UNKNOWN.toString()) + .fastHeartRate(UNKNOWN.toString()) + .diarrhea(UNKNOWN.toString()) + .nausea(UNKNOWN.toString()) + .lossOfSmell(UNKNOWN.toString()) + .lossOfTaste(UNKNOWN.toString()) + .symptomsComments(UUID.randomUUID().toString()) + .build(); + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/TaskService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/TaskService.java index c1d285d2730..df562dd5e61 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/TaskService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/TaskService.java @@ -42,7 +42,7 @@ public Task buildGeneratedTask() { .suggestedStartTime(LocalTime.of(11, 30)) .dueDateDate(LocalDate.now().plusDays(1)) .dueDateTime(LocalTime.of(11, 30)) - .assignedTo("Surveillance OFFICER - Surveillance Officer") + .assignedTo("Case SUPERVISOR - Clinician") .priority("Normal") .commentsOnTask("Task comment-" + timeStamp) .commentsOnExecution("Execution comment-" + timeStamp) diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/CaseApiService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/CaseApiService.java index 48ca844fc03..0cef1a9f362 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/CaseApiService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/CaseApiService.java @@ -24,22 +24,7 @@ import java.util.Date; import java.util.LinkedHashMap; import java.util.UUID; -import org.sormas.e2etests.entities.pojo.api.Case; -import org.sormas.e2etests.entities.pojo.api.ClinicalCourse; -import org.sormas.e2etests.entities.pojo.api.Community; -import org.sormas.e2etests.entities.pojo.api.District; -import org.sormas.e2etests.entities.pojo.api.EpiData; -import org.sormas.e2etests.entities.pojo.api.HealthConditions; -import org.sormas.e2etests.entities.pojo.api.HealthFacility; -import org.sormas.e2etests.entities.pojo.api.Hospitalization; -import org.sormas.e2etests.entities.pojo.api.MaternalHistory; -import org.sormas.e2etests.entities.pojo.api.Person; -import org.sormas.e2etests.entities.pojo.api.PortHealthInfo; -import org.sormas.e2etests.entities.pojo.api.Region; -import org.sormas.e2etests.entities.pojo.api.ReportingUser; -import org.sormas.e2etests.entities.pojo.api.SurveillanceOfficer; -import org.sormas.e2etests.entities.pojo.api.Symptoms; -import org.sormas.e2etests.entities.pojo.api.Therapy; +import org.sormas.e2etests.entities.pojo.api.*; import org.sormas.e2etests.enums.CaseClassification; import org.sormas.e2etests.enums.CommunityValues; import org.sormas.e2etests.enums.DiseasesValues; @@ -72,14 +57,35 @@ public Case buildGeneratedCase(Person person) { .getUuid()) .build()) .district( - District.builder().uuid(DistrictsValues.VoreingestellterLandkreis.getUuid()).build()) - .region(Region.builder().uuid(RegionsValues.VoreingestellteBundeslander.getUuid()).build()) + District.builder() + .uuid( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) + .build()) + .region( + Region.builder() + .uuid( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) + .build()) .responsibleDistrict( - District.builder().uuid(DistrictsValues.VoreingestellterLandkreis.getUuid()).build()) + District.builder() + .uuid( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) + .build()) .responsibleRegion( - Region.builder().uuid(RegionsValues.VoreingestellteBundeslander.getUuid()).build()) + Region.builder() + .uuid( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) + .build()) .community( - Community.builder().uuid(CommunityValues.VoreingestellteGemeinde.getUuid()).build()) + Community.builder() + .uuid( + CommunityValues.getUuidValueForLocale( + CommunityValues.VoreingestellteGemeinde.name(), locale)) + .build()) .followUpStatus("FOLLOW_UP") .person( Person.builder() diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ContactApiService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ContactApiService.java index b940ec824d0..767942c83d1 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ContactApiService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ContactApiService.java @@ -64,12 +64,16 @@ public Contact buildGeneratedContact(Person person) { .district( District.builder() .caption(DistrictsValues.VoreingestellterLandkreis.getName()) - .uuid(DistrictsValues.VoreingestellterLandkreis.getUuid()) + .uuid( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) .build()) .region( Region.builder() .caption(RegionsValues.VoreingestellteBundeslander.getName()) - .uuid(RegionsValues.VoreingestellteBundeslander.getUuid()) + .uuid( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) .build()) .relationToCase("") .contactClassification("UNCONFIRMED") @@ -101,12 +105,16 @@ public Contact buildGeneratedContactWithLinkedCase(Person person, Case caze) { .district( District.builder() .caption(DistrictsValues.VoreingestellterLandkreis.getName()) - .uuid(DistrictsValues.VoreingestellterLandkreis.getUuid()) + .uuid( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) .build()) .region( Region.builder() .caption(RegionsValues.VoreingestellteBundeslander.getName()) - .uuid(RegionsValues.VoreingestellteBundeslander.getUuid()) + .uuid( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) .build()) .relationToCase("") .contactClassification("UNCONFIRMED") diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/EventApiService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/EventApiService.java index 15fd07d08d0..9b7695ba456 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/EventApiService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/EventApiService.java @@ -79,15 +79,21 @@ public Event buildGeneratedEvent() { .uuid(UUID.randomUUID().toString()) .community( Community.builder() - .uuid(CommunityValues.VoreingestellteGemeinde.getUuid()) + .uuid( + CommunityValues.getUuidValueForLocale( + CommunityValues.VoreingestellteGemeinde.name(), locale)) .build()) .region( Region.builder() - .uuid(RegionsValues.VoreingestellteBundeslander.getUuid()) + .uuid( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) .build()) .district( District.builder() - .uuid(DistrictsValues.VoreingestellterLandkreis.getUuid()) + .uuid( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) .build()) .build()) .build(); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ImmunizationApiService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ImmunizationApiService.java index f15d6b1b789..0f7092ae4c4 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ImmunizationApiService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/ImmunizationApiService.java @@ -68,9 +68,15 @@ public Immunization buildGeneratedImmunizationForPerson(Person person) { .meansOfImmunization(MeansOfImmunizationValues.getRandomMeansOfImmunization()) .immunizationManagementStatus( ImmunizationManagementStatusValues.getRandomImmunizationManagementStatus()) - .responsibleRegion(RegionsValues.VoreingestellteBundeslander.getUuid()) - .responsibleDistrict(DistrictsValues.VoreingestellterLandkreis.getUuid()) - .responsibleCommunity(CommunityValues.VoreingestellteGemeinde.getUuid()) + .responsibleRegion( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) + .responsibleDistrict( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) + .responsibleCommunity( + CommunityValues.getUuidValueForLocale( + CommunityValues.VoreingestellteGemeinde.name(), locale)) .build(); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/PersonApiService.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/PersonApiService.java index ec222497e31..14b190f9391 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/PersonApiService.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/entities/services/api/PersonApiService.java @@ -18,6 +18,8 @@ package org.sormas.e2etests.entities.services.api; +import static org.sormas.e2etests.steps.BaseSteps.locale; + import com.github.javafaker.Faker; import com.google.inject.Inject; import java.util.Collections; @@ -70,16 +72,24 @@ public Person buildGeneratedPerson() { .longitude(8 + (random.nextInt(5)) + ThreadLocalRandom.current().nextDouble(0, 1)) .country( Country.builder() - .uuid(CountryUUIDs.Germany.toString()) + .uuid(CountryUUIDs.getUuidValueForLocale(CountryUUIDs.Germany.name(), locale)) .caption("Deutschland") .externalId(null) .isoCode("DEU") .build()) - .region(RegionsValues.VoreingestellteBundeslander.getUuid()) - .continent(ContinentUUIDs.Europe.toString()) - .subcontinent(SubcontinentUUIDs.WesternEurope.toString()) - .district(DistrictsValues.VoreingestellterLandkreis.getUuid()) - .community(CommunityValues.VoreingestellteGemeinde.getUuid()) + .region( + RegionsValues.getUuidValueForLocale( + RegionsValues.VoreingestellteBundeslander.getName(), locale)) + .continent(ContinentUUIDs.getUuidValueForLocale(ContinentUUIDs.Europe.name(), locale)) + .subcontinent( + SubcontinentUUIDs.getUuidValueForLocale( + SubcontinentUUIDs.WesternEurope.name(), locale)) + .district( + DistrictsValues.getUuidValueForLocale( + DistrictsValues.VoreingestellterLandkreis.name(), locale)) + .community( + CommunityValues.getUuidValueForLocale( + CommunityValues.VoreingestellteGemeinde.name(), locale)) .city(faker.address().cityName()) .areaType(AreaTypeValues.getRandomAreaType()) .postalCode(faker.address().zipCode()) diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/AssertHelpers.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/AssertHelpers.java index dc1976ceffb..0f78314833d 100755 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/AssertHelpers.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/AssertHelpers.java @@ -42,7 +42,6 @@ public void assertWithPoll(ThrowingRunnable throwingRunnable, int seconds) { .timeout(Duration.ofSeconds(seconds)) .untilAsserted(throwingRunnable); } catch (ConditionTimeoutException e) { - log.error("Test has failed due to: {}", e.getCause()); fail(e.getCause().getLocalizedMessage()); } } @@ -57,7 +56,6 @@ public void assertWithPollWithoutFail(ThrowingRunnable throwingRunnable, int sec .timeout(Duration.ofSeconds(seconds)) .untilAsserted(throwingRunnable); } catch (ConditionTimeoutException e) { - log.error("Skipped failing assert: {}", e.getCause()); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/RestAssuredClient.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/RestAssuredClient.java index dd18fa660cf..1dbe4e5aca5 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/RestAssuredClient.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/RestAssuredClient.java @@ -136,4 +136,24 @@ public void sendRequest(Request request) { } apiState.setResponse(response); } + + @SneakyThrows + public Response sendRequestAndGetResponse(Request request) { + setIsScreenshotEnabled(false); + RequestSpecification authorization = request(); + switch (request.getMethod()) { + case POST: + return authorization.body(request.getBody()).post(request.getPath()); + case GET: + return authorization.get(request.getPath()); + case PUT: + return authorization.body(request.getBody()).put(request.getPath()); + case PATCH: + return authorization.body(request.getBody()).patch(request.getPath()); + case DELETE: + return authorization.delete(request.getPath()); + default: + throw new IllegalAccessException("Incorrect calling method"); + } + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/WebDriverHelpers.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/WebDriverHelpers.java index 066d03d9e81..6217fe18a75 100755 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/WebDriverHelpers.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/helpers/WebDriverHelpers.java @@ -47,12 +47,6 @@ @Slf4j public class WebDriverHelpers { - public static final By SELECTED_RADIO_BUTTON = - By.xpath("ancestor::div[contains(@role,'group')]//input[@checked]/following-sibling::label"); - public static final By SELECTED_RADIO_DISABLED_AND_CHECKED_BUTTON = - By.xpath( - "//div[contains(@class,'v-select-optiongroup')]//input[@checked and @disabled]/following-sibling::label"); - public static final int FLUENT_WAIT_TIMEOUT_SECONDS = 20; public static final By CHECKBOX_TEXT_LABEL = By.xpath("ancestor::span//label"); public static final By TABLE_SCROLLER = @@ -63,8 +57,8 @@ public class WebDriverHelpers { private static final String SCROLL_TO_WEB_ELEMENT_SCRIPT = "arguments[0].scrollIntoView({behavior: \"auto\", block: \"center\", inline: \"center\"});"; - public static final String CLICK_ELEMENT_SCRIPT = "arguments[0].click();"; - public static final String TABLE_SCROLL_SCRIPT = "arguments[0].scrollTop+=%s"; + private static final String CLICK_ELEMENT_SCRIPT = "arguments[0].click();"; + private static final String TABLE_SCROLL_SCRIPT = "arguments[0].scrollTop+=%s"; @Inject public WebDriverHelpers(BaseSteps baseSteps, AssertHelpers assertHelpers) { @@ -150,6 +144,7 @@ public void waitUntilIdentifiedElementDisappear(final Object selector, int secon } public void waitUntilAListOfWebElementsAreNotEmpty(final By selector) { + log.info("Waiting after list of elements [{}] to be populated", selector); assertHelpers.assertWithPoll( () -> { List webElementsTexts = @@ -170,7 +165,6 @@ public void waitUntilAListOfWebElementsAreNotEmpty(final By selector) { } public void fillInWebElement(By selector, String text) { - log.info("Filling element [{{}] with text [{}]", selector, text); try { await() .pollInterval(ONE_HUNDRED_MILLISECONDS) @@ -191,6 +185,7 @@ public void fillInWebElement(By selector, String text) { getValueFromWebElement(selector), "", String.format("Field %s wasn't cleared", selector)); + log.info("Filling element [ {} ] with text [ {} ]", selector, text); baseSteps.getDriver().findElement(selector).sendKeys(text); String valueFromWebElement = getValueFromWebElement(selector); Assert.assertEquals( @@ -226,6 +221,7 @@ public void fillInAndLeaveWebElement(By selector, String text) { assertWithMessage("Field %s wasn't cleared", selector) .that(getValueFromWebElement(selector)) .isEqualTo(""); + log.info("Filling element [ {} ] with text [ {} ]", selector, text); baseSteps.getDriver().findElement(selector).sendKeys(text); baseSteps.getDriver().findElement(By.cssSelector("body")).sendKeys(Keys.TAB); String valueFromWebElement = getValueFromWebElement(selector); @@ -233,7 +229,6 @@ public void fillInAndLeaveWebElement(By selector, String text) { .that(valueFromWebElement) .isEqualTo(text); }); - } catch (ConditionTimeoutException ignored) { log.error("Unable to fill on element identified by locator: {} and text {}", selector, text); throw new TimeoutException( @@ -273,7 +268,7 @@ public void selectFromCombobox(By selector, String text) { waitUntilElementIsVisibleAndClickable(By.className("v-filterselect-suggestmenu")); waitUntilANumberOfElementsAreVisibleAndClickable(By.xpath("//td[@role='listitem']/span"), 1); By dropDownValueXpath = By.xpath(comboBoxItemWithText); - TimeUnit.MILLISECONDS.sleep(500); + TimeUnit.MILLISECONDS.sleep(700); clickOnWebElementBySelector(dropDownValueXpath); await() .pollInterval(ONE_HUNDRED_MILLISECONDS) @@ -293,6 +288,24 @@ public void selectFromCombobox(By selector, String text) { }); } + @SneakyThrows + public boolean checkIfElementExistsInCombobox(By selector, String text) { + clickOnWebElementBySelector(selector); + WebElement comboboxInput = + baseSteps + .getDriver() + .findElement(selector) + .findElement(By.xpath("preceding-sibling::input")); + String comboBoxItemWithText = + "//td[@role='listitem']/span[ contains(text(), '" + + text + + "') or starts-with(text(), '\" + text + \"') ]"; + waitUntilIdentifiedElementIsVisibleAndClickable(comboboxInput); + comboboxInput.sendKeys(text); + waitUntilElementIsVisibleAndClickable(By.className("v-filterselect-suggestmenu")); + return isElementVisibleWithTimeout(By.xpath(comboBoxItemWithText), 2); + } + public void clickOnWebElementBySelector(By selector) { clickOnWebElementBySelectorAndIndex(selector, 0); } @@ -329,6 +342,7 @@ public void clickOnWebElementBySelectorAndIndex(By selector, int index) { baseSteps.getDriver().findElements(selector).get(index).isEnabled(), String.format("The element: %s was not enabled", selector)); scrollToElement(selector); + log.info("Clicking on element [ {} ]", selector); baseSteps.getDriver().findElement(selector).click(); waitForPageLoaded(); }); @@ -360,6 +374,7 @@ public void doubleClickOnWebElementBySelectorAndIndex(By selector, int index) { baseSteps.getDriver().findElements(selector).get(index).isEnabled(), String.format("The element: %s was not enabled", selector)); scrollToElement(selector); + log.info("Double-Clicking on element [ {} ]", selector); actions.doubleClick(element).perform(); waitForPageLoaded(); }); @@ -417,13 +432,23 @@ public void clickOnWebElementWhichMayNotBePresent(final By byObject, final int i } } + public void clickElementSeveralTimesUntilNextElementIsDisplayed( + By elementToClick, By elementToWaitAfter, int maxNumberOfClicks) { + int attempts = 0; + do { + javaScriptClickElement(elementToClick); + attempts++; + } while (attempts < maxNumberOfClicks && isElementVisibleWithTimeout(elementToWaitAfter, 10)); + } + public void scrollToElement(final Object selector) { - log.info("Scrolling to element [{}]", selector); JavascriptExecutor javascriptExecutor = baseSteps.getDriver(); try { if (selector instanceof WebElement) { + log.info("Scrolling to element [{}]", selector); javascriptExecutor.executeScript(SCROLL_TO_WEB_ELEMENT_SCRIPT, selector); } else { + log.info("Scrolling to element [{}]", selector); javascriptExecutor.executeScript( SCROLL_TO_WEB_ELEMENT_SCRIPT, baseSteps.getDriver().findElement((By) selector)); } @@ -455,12 +480,13 @@ public void javaScriptClickElement(final Object selector) { javascriptExecutor.executeScript(CLICK_ELEMENT_SCRIPT, selector); } else { waitUntilIdentifiedElementIsPresent(selector); + log.info("Clicking on element {} via javascript", selector); javascriptExecutor.executeScript( CLICK_ELEMENT_SCRIPT, baseSteps.getDriver().findElement((By) selector)); } } catch (Exception ignored) { + log.error("Unable to click on element {} via javascript", selector); } - waitForPageLoaded(); } // TODO replace regular scroll wth this one @@ -550,11 +576,6 @@ public void waitUntilAListOfElementsIsPresent(By selector, int number) { } } - public String getValueOfListElement(By selector, int index) { - scrollToElement(selector); - return baseSteps.getDriver().findElements(selector).get(index).getAttribute("value"); - } - public String getTextFromListElement(By selector, int index) { scrollToElement(selector); return baseSteps.getDriver().findElements(selector).get(index).getText(); @@ -628,15 +649,25 @@ public int getNumberOfElements(By byObject) { public WebElement getWebElement(By byObject) { try { + log.info("Returning WebElement for provided locator [ {} ]", byObject); return baseSteps.getDriver().findElement(byObject); - } catch (Exception e) { - return null; + } catch (Exception any) { + throw new WebDriverException( + String.format( + "No elements found for locator [ %s ] : [ %s ]", byObject, any.getMessage())); } } public String getTextFromPresentWebElement(By byObject) { scrollToElement(byObject); - return baseSteps.getDriver().findElement(byObject).getText(); + try { + return baseSteps.getDriver().findElement(byObject).getText(); + } catch (Exception any) { + throw new WebDriverException( + String.format( + "Cannot get text from WebElement with locator [ %s ] : [ %s ]", + byObject, any.getMessage())); + } } public void waitUntilIdentifiedElementIsPresent(final Object selector) { @@ -660,7 +691,7 @@ public void waitUntilIdentifiedElementIsPresent(final Object selector) { }); } } catch (StaleElementReferenceException staleEx) { - log.warn("StaleElement found at: {}", selector); + log.warn("StaleElement found for: [ {} ]", selector); log.info("Performing again wait until element is present action"); waitUntilIdentifiedElementIsPresent(selector); } @@ -717,12 +748,18 @@ public void waitUntilNumberOfElementsIsExactly(By selector, int given) { public String getCheckedOptionFromHorizontalOptionGroup(By options) { waitUntilIdentifiedElementIsPresent(options); scrollToElement(options); + final By SELECTED_RADIO_BUTTON = + By.xpath( + "ancestor::div[contains(@role,'group')]//input[@checked]/following-sibling::label"); return baseSteps.getDriver().findElement(options).findElement(SELECTED_RADIO_BUTTON).getText(); } public String getCheckedDisabledOptionFromHorizontalOptionGroup(By options) { waitUntilIdentifiedElementIsPresent(options); scrollToElement(options); + final By SELECTED_RADIO_DISABLED_AND_CHECKED_BUTTON = + By.xpath( + "//div[contains(@class,'v-select-optiongroup')]//input[@checked and @disabled]/following-sibling::label"); return baseSteps .getDriver() .findElement(options) @@ -736,7 +773,7 @@ public void clearWebElement(By selector) { scrollToElement(selector); WebElement webElement = baseSteps.getDriver().findElement(selector); while (!"".contentEquals(getValueFromWebElement(selector))) { - log.debug("Deleted char: {}", getValueFromWebElement(selector)); + log.info("Deleted char: {}", getValueFromWebElement(selector)); webElement.clear(); webElement.sendKeys(Keys.LEFT_CONTROL); webElement.sendKeys("A"); @@ -803,7 +840,6 @@ public void waitForPageLoadingSpinnerToDisappear(int maxWaitingTime) { By.xpath( "//div[@class='v-loading-indicator third v-loading-indicator-wait' or contains(@class, 'v-loading-indicator')]"); boolean isSpinnerDisplayed; - try { assertHelpers.assertWithPollWithoutFail( () -> @@ -839,7 +875,46 @@ public void waitForRowToBeSelected(By rowLocator) { String.format("Row element: %s wasn't selected within 20s", rowLocator))); } + @SneakyThrows public void sendFile(By selector, String filePath) { - baseSteps.getDriver().findElement(selector).sendKeys(filePath); + try { + baseSteps.getDriver().findElement(selector).sendKeys(filePath); + } catch (Exception any) { + throw new Exception( + String.format("Unable to send file [ %s ] to [ %s }", filePath, selector)); + } + } + + public boolean isElementDisplayedAndNoLoadingSpinnerOrThrowException(By selector) { + By loadingSpinner = + By.xpath( + "//div[@class='v-loading-indicator third v-loading-indicator-wait' or contains(@class, 'v-loading-indicator')]"); + try { + await() + .pollInterval(ONE_HUNDRED_MILLISECONDS) + .ignoreExceptions() + .catchUncaughtExceptions() + .timeout(ofSeconds(FLUENT_WAIT_TIMEOUT_SECONDS)) + .until( + () -> + baseSteps.getDriver().findElement(selector).isDisplayed() + && !baseSteps.getDriver().findElement(loadingSpinner).isDisplayed()); + return true; + } catch (ConditionTimeoutException ignored) { + throw new NoSuchElementException( + String.format( + "Element: %s is not visible under 20 seconds or loading spinner didn't finished", + selector)); + } + } + + public String javascriptGetElementContent(String selector) { + JavascriptExecutor javascriptExecutor = baseSteps.getDriver(); + String script = + "return window.getComputedStyle(document.querySelector(" + + selector + + ").getPropertyValue('content')"; + String content = javascriptExecutor.executeScript(script).toString(); + return content; } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/BaseSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/BaseSteps.java index 93724000569..6ca815939cd 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/BaseSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/BaseSteps.java @@ -29,8 +29,11 @@ import io.restassured.RestAssured; import io.restassured.parsing.Parser; import java.time.Duration; +import java.util.Collection; +import java.util.concurrent.atomic.AtomicBoolean; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.junit.Assert; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.RemoteWebDriver; import org.sormas.e2etests.webdriver.DriverManager; @@ -83,14 +86,23 @@ public void afterScenario(Scenario scenario) { log.info("Finished test: {}", scenario.getName()); } - @After(value = "@PublishCustomReport") - public void generateMeasurementsReport() { + @After(value = "@PublishPagesCustomReport") + public void generatePagesMeasurementsReport() { log.info("Parsing results collected in results.txt and converting them into Row Objects"); - TableDataManager.convertData(); - log.info("Creating Chart for UI Meassurements report"); - ReportChartBuilder.buildChartForData(TableDataManager.getTableRowsDataList()); + TableDataManager.convertPagesData(); + log.info("Creating Chart for UI Measurements report"); + ReportChartBuilder.buildChartForData(TableDataManager.getTablePageRowsDataList()); log.info("Generating Sormas Custom report"); - CustomReportBuilder.generateReport(TableDataManager.getTableRowsAsHtml()); + CustomReportBuilder.generatePagesMeasurementsReport(TableDataManager.getPageRowsAsHtml()); + log.info("Custom report was created!"); + } + + @After(value = "@PublishApiCustomReport") + public void generateApiMeasurementsReport() { + log.info("Parsing results collected in results.txt and converting them into Row Objects"); + TableDataManager.convertApiData(); + log.info("Generating Sormas Custom report"); + CustomReportBuilder.generateApiMeasurementsReport(TableDataManager.getApiRowsAsHtml()); log.info("Custom report was created!"); } @@ -99,12 +111,24 @@ private static boolean isNonApiScenario(Scenario scenario) { } private void setLocale(Scenario scenario) { - String localeTag = - scenario.getSourceTagNames().stream() - .filter(value -> value.startsWith("@env")) - .findFirst() - .get(); + Collection tags = scenario.getSourceTagNames(); + checkDeclaredEnvironment(tags); + String localeTag = tags.stream().filter(value -> value.startsWith("@env")).findFirst().get(); int indexOfSubstring = localeTag.indexOf("_"); locale = localeTag.substring(indexOfSubstring + 1); } + + private void checkDeclaredEnvironment(Collection tags) { + AtomicBoolean foundEnvironment = new AtomicBoolean(false); + tags.stream() + .forEach( + tag -> { + if (foundEnvironment.get() && tag.startsWith("@env")) { + Assert.fail("Cannot have more than one environment declared per test!"); + } + if (tag.startsWith("@env")) { + foundEnvironment.set(true); + } + }); + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/commonSteps/ResponseChecksSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/commonSteps/ResponseChecksSteps.java index c7669ff6883..aa70c97bdfd 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/commonSteps/ResponseChecksSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/commonSteps/ResponseChecksSteps.java @@ -34,6 +34,9 @@ public ResponseChecksSteps(ApiState apiState) { if (responseBody.isEmpty()) { Assert.fail("Response body call is empty!"); } + if (responseBody.equalsIgnoreCase("TRANSACTIONROLLEDBACKEXCEPTION")) { + Assert.fail("API call failed due to wrong data used in sent json!"); + } String regexUpdatedResponseBody = responseBody.replaceAll("[^a-zA-Z0-9]", ""); Assert.assertEquals( regexUpdatedResponseBody, expectedBody, "Request response body is not correct"); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/performance/postEntity/CreateEntityResponseTimeSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/performance/postEntity/CreateEntityResponseTimeSteps.java new file mode 100644 index 00000000000..04af72fe398 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/api/performance/postEntity/CreateEntityResponseTimeSteps.java @@ -0,0 +1,255 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.steps.api.performance.postEntity; + +import static org.sormas.e2etests.constants.api.Endpoints.*; + +import com.fasterxml.jackson.databind.ObjectMapper; +import cucumber.api.java8.En; +import customreport.data.TableDataManager; +import io.restassured.http.Method; +import io.restassured.response.Response; +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; +import java.util.List; +import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import org.sormas.e2etests.entities.pojo.api.*; +import org.sormas.e2etests.entities.services.api.*; +import org.sormas.e2etests.helpers.RestAssuredClient; +import org.sormas.e2etests.helpers.api.CaseHelper; +import org.sormas.e2etests.helpers.api.ContactHelper; +import org.sormas.e2etests.helpers.api.PersonsHelper; +import org.testng.Assert; + +@Slf4j +public class CreateEntityResponseTimeSteps implements En { + + private final RestAssuredClient restAssuredClient; + private final ObjectMapper objectMapper; + + @Inject + public CreateEntityResponseTimeSteps( + PersonsHelper personsHelper, + ContactHelper contactHelper, + CaseHelper caseHelper, + PersonApiService personApiService, + EventApiService eventApiService, + CaseApiService caseApiService, + ContactApiService contactApiService, + SampleApiService sampleApiService, + RestAssuredClient restAssuredClient, + ObjectMapper objectMapper) { + this.restAssuredClient = restAssuredClient; + this.objectMapper = objectMapper; + + When( + "API: I check response time for person creation is less than {int} milliseconds", + (Integer maxWaitingTime) -> { + List elapsedTimes = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + Person createPersonObject = personApiService.buildGeneratedPerson(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + List personBody = List.of(createPersonObject); + objectMapper.writeValue(out, personBody); + Response response = + restAssuredClient.sendRequestAndGetResponse( + Request.builder() + .method(Method.POST) + .body(out.toString()) + .path(PERSONS_PATH + POST_PATH) + .build()); + long elapsedTime = response.getTime(); + validateResponseBody(response); + elapsedTimes.add(elapsedTime); + } + long averageElapsedTime = calculateAverageTime(elapsedTimes); + if (averageElapsedTime > Long.valueOf(maxWaitingTime)) { + TableDataManager.addApiRowEntity( + PERSONS_PATH + POST_PATH, + averageElapsedTime + " - FAILED", + String.valueOf(maxWaitingTime)); + Assert.fail("Request takes more than " + maxWaitingTime + " milliseconds"); + } + TableDataManager.addApiRowEntity( + PERSONS_PATH + POST_PATH, + String.valueOf(averageElapsedTime), + String.valueOf(maxWaitingTime)); + }); + + When( + "API: I check response time for event creation is less than {int} milliseconds", + (Integer maxWaitingTime) -> { + List elapsedTimes = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + Event eventApiPojo = eventApiService.buildGeneratedEvent(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + List eventBody = List.of(eventApiPojo); + objectMapper.writeValue(out, eventBody); + Response response = + restAssuredClient.sendRequestAndGetResponse( + Request.builder() + .method(Method.POST) + .body(out.toString()) + .path(EVENTS_PATH + POST_PATH) + .build()); + long elapsedTime = response.getTime(); + validateResponseBody(response); + elapsedTimes.add(elapsedTime); + } + long averageElapsedTime = calculateAverageTime(elapsedTimes); + if (averageElapsedTime > Long.valueOf(maxWaitingTime)) { + TableDataManager.addApiRowEntity( + EVENTS_PATH + POST_PATH, + averageElapsedTime + " - FAILED", + String.valueOf(maxWaitingTime)); + Assert.fail("Request takes more than " + maxWaitingTime + " milliseconds"); + } + TableDataManager.addApiRowEntity( + EVENTS_PATH + POST_PATH, + String.valueOf(averageElapsedTime), + String.valueOf(maxWaitingTime)); + }); + + When( + "API: I check response time for case creation is less than {int} milliseconds", + (Integer maxWaitingTime) -> { + List elapsedTimes = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + Person personApiPojo = personApiService.buildGeneratedPerson(); + personsHelper.createNewPerson(personApiPojo); + Case cazeApiPojo = caseApiService.buildGeneratedCase(personApiPojo); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + List caseBody = List.of(cazeApiPojo); + objectMapper.writeValue(out, caseBody); + + Response response = + restAssuredClient.sendRequestAndGetResponse( + Request.builder() + .method(Method.POST) + .body(out.toString()) + .path(CASES_PATH + POST_PATH) + .build()); + long elapsedTime = response.getTime(); + validateResponseBody(response); + elapsedTimes.add(elapsedTime); + } + long averageElapsedTime = calculateAverageTime(elapsedTimes); + if (averageElapsedTime > Long.valueOf(maxWaitingTime)) { + TableDataManager.addApiRowEntity( + CASES_PATH + POST_PATH, + averageElapsedTime + " - FAILED", + String.valueOf(maxWaitingTime)); + Assert.fail("Request takes more than " + maxWaitingTime + " milliseconds"); + } + TableDataManager.addApiRowEntity( + CASES_PATH + POST_PATH, + String.valueOf(averageElapsedTime), + String.valueOf(maxWaitingTime)); + }); + + When( + "API: I check response time for contact creation is less than {int} milliseconds", + (Integer maxWaitingTime) -> { + List elapsedTimes = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + Person personApiPojo = personApiService.buildGeneratedPerson(); + personsHelper.createNewPerson(personApiPojo); + Contact contactApiPojo = contactApiService.buildGeneratedContact(personApiPojo); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + List contactBody = List.of(contactApiPojo); + objectMapper.writeValue(out, contactBody); + + Response response = + restAssuredClient.sendRequestAndGetResponse( + Request.builder() + .method(Method.POST) + .body(out.toString()) + .path(CONTACTS_PATH + POST_PATH) + .build()); + long elapsedTime = response.getTime(); + validateResponseBody(response); + elapsedTimes.add(elapsedTime); + } + long averageElapsedTime = calculateAverageTime(elapsedTimes); + if (averageElapsedTime > Long.valueOf(maxWaitingTime)) { + TableDataManager.addApiRowEntity( + CONTACTS_PATH + POST_PATH, + averageElapsedTime + " - FAILED", + String.valueOf(maxWaitingTime)); + Assert.fail("Request takes more than " + maxWaitingTime + " milliseconds"); + } + TableDataManager.addApiRowEntity( + CONTACTS_PATH + POST_PATH, + String.valueOf(averageElapsedTime), + String.valueOf(maxWaitingTime)); + }); + + When( + "API: I check response time for sample creation is less than {int} milliseconds", + (Integer maxWaitingTime) -> { + List elapsedTimes = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + Person personApiPojo = personApiService.buildGeneratedPerson(); + personsHelper.createNewPerson(personApiPojo); + Case cazeApiPojo = caseApiService.buildGeneratedCase(personApiPojo); + caseHelper.createCase(cazeApiPojo); + Sample sampleApiPojo = sampleApiService.buildGeneratedSample(cazeApiPojo); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + List sampleBody = List.of(sampleApiPojo); + objectMapper.writeValue(out, sampleBody); + + Response response = + restAssuredClient.sendRequestAndGetResponse( + Request.builder() + .method(Method.POST) + .body(out.toString()) + .path(SAMPLES_PATH + POST_PATH) + .build()); + long elapsedTime = response.getTime(); + validateResponseBody(response); + elapsedTimes.add(elapsedTime); + } + long averageElapsedTime = calculateAverageTime(elapsedTimes); + if (averageElapsedTime > Long.valueOf(maxWaitingTime)) { + TableDataManager.addApiRowEntity( + SAMPLES_PATH + POST_PATH, + averageElapsedTime + " - FAILED", + String.valueOf(maxWaitingTime)); + Assert.fail("Request takes more than " + maxWaitingTime + " milliseconds"); + } + TableDataManager.addApiRowEntity( + SAMPLES_PATH + POST_PATH, + String.valueOf(averageElapsedTime), + String.valueOf(maxWaitingTime)); + }); + } + + private long calculateAverageTime(List list) { + long sum = 0; + for (long value : list) { + sum = sum + value; + } + return sum / list.size(); + } + + private void validateResponseBody(Response response) { + String regexUpdatedResponseBody = response.getBody().asString().replaceAll("[^a-zA-Z0-9]", ""); + Assert.assertEquals(regexUpdatedResponseBody, "OK", "Request response body is not correct"); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/AboutDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/AboutDirectorySteps.java new file mode 100644 index 00000000000..3899e64c824 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/AboutDirectorySteps.java @@ -0,0 +1,162 @@ +package org.sormas.e2etests.steps.web.application; + +import static org.sormas.e2etests.pages.application.AboutPage.DATA_DICTIONARY_BUTTON; +import static org.sormas.e2etests.pages.application.users.CreateNewUserPage.LANGUAGE_COMBOBOX; +import static org.sormas.e2etests.pages.application.users.CreateNewUserPage.SAVE_BUTTON; + +import com.detectlanguage.DetectLanguage; +import com.google.inject.Inject; +import cucumber.api.java8.En; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.TimeUnit; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.sormas.e2etests.common.MoreResources; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.testng.asserts.SoftAssert; + +public class AboutDirectorySteps implements En { + public static final String userDirPath = System.getProperty("user.dir"); + public static final List xlsxFileContentList = new ArrayList<>(); + public static String language; + private static final Logger log = LoggerFactory.getLogger(MoreResources.class); + + @Inject + public AboutDirectorySteps(WebDriverHelpers webDriverHelpers, SoftAssert softly) { + + When( + "I select {string} language from Combobox in User settings", + (String chosenLanguage) -> { + language = chosenLanguage; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, chosenLanguage); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + }); + + When( + "I set on default language as English in User settings", + () -> { + String languageDerivedFromUserChoose = language; + String defaultLanguage = ""; + switch (languageDerivedFromUserChoose) { + case "Fran\u00E7ais": + defaultLanguage = "Anglais"; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, defaultLanguage); + break; + case "Fran\u00E7ais (Suisse)": + defaultLanguage = "Anglais"; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, defaultLanguage); + break; + case "Deutsch": + defaultLanguage = "English"; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, defaultLanguage); + break; + case "Deutsch (Schweiz)": + defaultLanguage = "English"; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, defaultLanguage); + break; + case "Espa\u00F1ol (Ecuador)": + defaultLanguage = "Ingl\u00E9s"; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, defaultLanguage); + break; + case "Espa\u00F1ol (Cuba)": + defaultLanguage = "English"; + webDriverHelpers.selectFromCombobox(LANGUAGE_COMBOBOX, defaultLanguage); + break; + } + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(5); + }); + + When( + "I click on Data Dictionary hyperlink and download XLSX file in About directory", + () -> { + webDriverHelpers.clickOnWebElementBySelector(DATA_DICTIONARY_BUTTON); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + DATA_DICTIONARY_BUTTON, 50); + TimeUnit.SECONDS.sleep(3); // waiting for DATA_DICTIONARY_BUTTON + }); + + When( + "^I read data from downloaded XLSX Data Dictionary file$", + () -> { + readXlsxFile(); + TimeUnit.SECONDS.sleep(5); // waiting for xlsx file is read + }); + + When( + "I detect and check language that was defined in User Settings for XLSX file content", + () -> { + DetectLanguage.apiKey = "5e184341083ac27cad1fd06d6e208302"; + String[] receivedWordsFromArray = { + xlsxFileContentList.get(16), xlsxFileContentList.get(17) + }; + for (String word : receivedWordsFromArray) { + String chosenUserLanguage = language.toLowerCase().substring(0, 2); + String detectedLanguage = DetectLanguage.simpleDetect(word); + softly.assertEquals( + chosenUserLanguage, + detectedLanguage, + "Language in xlsx file is different then chosen bu User"); + softly.assertAll(); + } + }); + + When( + "I delete exported xlsx file from user downloads directory", + () -> { + File toDelete = + new File( + userDirPath + + "//downloads//sormas_datenbeschreibungsverzeichnis_" + + LocalDate.now() + + "_.xlsx"); + toDelete.deleteOnExit(); + }); + } + + private static void readXlsxFile() { + try { + FileInputStream excelFile = + new FileInputStream( + new File( + userDirPath + + "//downloads//sormas_datenbeschreibungsverzeichnis_" + + LocalDate.now() + + "_.xlsx")); + Workbook workbook = new XSSFWorkbook(excelFile); + Sheet datatypeSheet = workbook.getSheetAt(0); + Iterator iterator = datatypeSheet.iterator(); + + while (iterator.hasNext()) { + + Row currentRow = iterator.next(); + Iterator cellIterator = currentRow.iterator(); + + while (cellIterator.hasNext()) { + + Cell currentCell = cellIterator.next(); + if (currentCell.getCellTypeEnum() == CellType.STRING) { + xlsxFileContentList.add(currentCell.getStringCellValue() + ","); + } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) { + xlsxFileContentList.add(currentCell.getNumericCellValue() + ","); + } + } + } + log.info("All data is read properly from chosen xlsx file"); + } catch (IOException e) { + log.error("Exception caught: File not found", e); + } + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/LoginSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/LoginSteps.java index 69d35c0d026..4c014360de5 100755 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/LoginSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/LoginSteps.java @@ -61,7 +61,8 @@ public LoginSteps(WebDriverHelpers webDriverHelpers, EnvironmentManager environm EnvUser user = environmentManager.getUserByRole(locale, UserRoles.NationalUser.getRole()); webDriverHelpers.accessWebSite(environmentManager.getEnvironmentUrlForMarket(locale)); webDriverHelpers.waitForPageLoaded(); - webDriverHelpers.waitUntilIdentifiedElementIsPresent(LoginPage.USER_NAME_INPUT); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + LoginPage.USER_NAME_INPUT, 100); log.info("Filling username"); webDriverHelpers.fillInWebElement(LoginPage.USER_NAME_INPUT, user.getUsername()); log.info("Filling password"); @@ -70,7 +71,7 @@ public LoginSteps(WebDriverHelpers webDriverHelpers, EnvironmentManager environm webDriverHelpers.clickOnWebElementBySelector(LoginPage.LOGIN_BUTTON); webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( - SurveillanceDashboardPage.LOGOUT_BUTTON); + SurveillanceDashboardPage.LOGOUT_BUTTON, 100); }); Given( diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/NavBarSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/NavBarSteps.java index 890a2a13424..09c8495ce59 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/NavBarSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/NavBarSteps.java @@ -16,6 +16,7 @@ package org.sormas.e2etests.steps.web.application; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.NEW_CASE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EditContactsPage.NEW_CONTACT_BUTTON; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.NEW_CONTACT_PAGE_BUTTON; import static org.sormas.e2etests.pages.application.dashboard.Contacts.ContactsDashboardPage.CONTACTS_DASHBOARD_NAME; import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.CONTACTS_BUTTON; @@ -49,6 +50,15 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the Cases button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.CASES_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + + When( + "^I click on the Cases button from navbar and start timer$", () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); @@ -59,6 +69,15 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the Contacts button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.CONTACTS_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(NEW_CONTACT_BUTTON); + }); + + When( + "^I click on the Contacts button from navbar and start timer$", () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(NavBarPage.CONTACTS_BUTTON); @@ -67,6 +86,14 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the Events button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.EVENTS_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + + When( + "^I click on the Events button from navbar and start timer$", () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(NavBarPage.EVENTS_BUTTON); @@ -84,6 +111,15 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the Tasks button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(NavBarPage.TASKS_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.TASKS_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + + When( + "^I click on the Tasks button from navbar and start timer$", () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(NavBarPage.TASKS_BUTTON); @@ -98,6 +134,29 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(NavBarPage.PERSONS_BUTTON); + }); + + When( + "^I click on the Persons button from navbar and start timer$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.PERSONS_BUTTON); + startTime = ZonedDateTime.now().toInstant().toEpochMilli(); + }); + + When( + "^I click on the About button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.ABOUT_BUTTON); + startTime = ZonedDateTime.now().toInstant().toEpochMilli(); + }); + + When( + "^I click on the User Settings button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.USER_SETTINGS_BUTTON); startTime = ZonedDateTime.now().toInstant().toEpochMilli(); }); @@ -143,6 +202,14 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the Sample button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.SAMPLE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + + When( + "^I click on the Sample button from navbar and start timer$", () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(NavBarPage.SAMPLE_BUTTON); @@ -151,6 +218,14 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the Immunizations button from navbar$", + () -> { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.IMMUNIZATIONS_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + + When( + "^I click on the Immunizations button from navbar and start timer$", () -> { webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(NavBarPage.IMMUNIZATIONS_BUTTON); @@ -193,36 +268,39 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { try { switch (page) { case ("Surveillance Dashboard"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException( + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( SURVEILLANCE_DASHBOARD_NAME); break; case ("Contacts Dashboard"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException( + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( CONTACTS_DASHBOARD_NAME); break; case ("Tasks"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException( + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( GENERAL_SEARCH_INPUT); break; case ("Persons"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException( + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( SEARCH_PERSON_BY_FREE_TEXT); break; case ("Cases"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException(NEW_CASE_BUTTON); + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( + NEW_CASE_BUTTON); break; case ("Contacts"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException( + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( NEW_CONTACT_PAGE_BUTTON); break; case ("Events"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException(NEW_EVENT_BUTTON); + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( + NEW_EVENT_BUTTON); break; case ("Samples"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException(SAMPLE_SEARCH_INPUT); + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( + SAMPLE_SEARCH_INPUT); break; case ("Immunizations"): - webDriverHelpers.isElementDisplayedIn20SecondsOrThrowException( + webDriverHelpers.isElementDisplayedAndNoLoadingSpinnerOrThrowException( ADD_NEW_IMMUNIZATION_BUTTON); break; } @@ -233,8 +311,8 @@ public NavBarSteps(WebDriverHelpers webDriverHelpers) { } catch (Exception exception) { elapsedTime = "Couldn't load page under 20s"; } - log.info("Collecting test results"); - TableDataManager.addRowEntity(page + " page", elapsedTime); + log.info("Adding page [ {} ] loading results to report", page); + TableDataManager.addPagesRowEntity(page + " page", elapsedTime); }); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewHeaders.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewHeaders.java index 97c74699d83..7f8eb8e5e9a 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewHeaders.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewHeaders.java @@ -3,6 +3,7 @@ public enum CaseDetailedTableViewHeaders { CASE_ID("CASE ID"), EXTERNAL_ID("EXTERNAL ID"), + EXTERNAL_ID_DE("EXTERNE ID"), EXTERNAL_TOKEN("EXTERNAL TOKEN"), INTERNAL_TOKEN("EXTERNAL TOKEN"), DISEASE("DISEASE"), diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewSteps.java index f1da954b844..94667cdfca2 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDetailedTableViewSteps.java @@ -286,7 +286,7 @@ private Map extractColumnHeadersHashMap() { private String getDateOfReportDateTime(String dateTimeString) { SimpleDateFormat outputFormat = new SimpleDateFormat("M/dd/yyyy h:mm a", Locale.ENGLISH); // because API request is sending local GMT and UI displays GMT+2 (server GMT) - outputFormat.setTimeZone(TimeZone.getTimeZone("GMT+1")); + outputFormat.setTimeZone(TimeZone.getDefault()); // inputFormat is the format of teh dateTime as read from API created case DateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDirectorySteps.java index 8513f9eef8b..bd8e8dcf2c1 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseDirectorySteps.java @@ -22,6 +22,7 @@ import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.ALL_RESULTS_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.BULK_ACTIONS; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.BULK_ACTIONS_VALUES; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.BULK_CREATE_QUARANTINE_ORDER; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASES_FROM_OTHER_INSTANCES_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASES_FROM_OTHER_JURISDICTIONS_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASES_HELP_NEEDED_IN_QUARANTINE_CHECKBOX; @@ -63,6 +64,7 @@ import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_SURVOFF_FILTER_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_VACCINATION_STATUS_FILTER_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_YEAR_FILTER; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CLOSE_FORM_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.DATE_FROM_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.DATE_TO_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.DETAILED_IMPORT_BUTTON; @@ -77,6 +79,7 @@ import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.INVESTIGATION_DISCARDED_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.INVESTIGATION_DONE_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.INVESTIGATION_PENDING_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.LEAVE_BULK_EDIT_MODE; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.LINE_LISTING_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.MORE_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.NAME_UUID_EPID_NUMBER_LIKE_INPUT; @@ -87,7 +90,9 @@ import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.SEARCH_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.SHOW_MORE_LESS_FILTERS; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.TOTAL_CASES_COUNTER; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.UPLOAD_DOCUMENT_TO_ENTITIES_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.getCaseResultsUuidLocator; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.getCheckboxByIndex; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.getResultByIndex; import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DATE_OF_REPORT_INPUT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.BACK_TO_CASES_BUTTON; @@ -95,10 +100,16 @@ import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_AS_CASE_NEW_ENTRY_BUTTON; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_AS_CASE_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.NEW_ENTRY_POPUP; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.getCheckboxByUUID; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_CASE_INPUT; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; +import static org.sormas.e2etests.steps.BaseSteps.locale; import com.github.javafaker.Faker; import com.google.common.truth.Truth; import cucumber.api.java8.En; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -115,6 +126,7 @@ import org.sormas.e2etests.enums.FacilityCategory; import org.sormas.e2etests.enums.FollowUpStatus; import org.sormas.e2etests.enums.PresentCondition; +import org.sormas.e2etests.envconfig.manager.EnvironmentManager; import org.sormas.e2etests.helpers.AssertHelpers; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.state.ApiState; @@ -138,7 +150,8 @@ public CaseDirectorySteps( ApiState apiState, AssertHelpers assertHelpers, SoftAssert softly, - Faker faker) { + Faker faker, + EnvironmentManager environmentManager) { this.webDriverHelpers = webDriverHelpers; this.baseSteps = baseSteps; @@ -166,12 +179,41 @@ public CaseDirectorySteps( webDriverHelpers.clickOnWebElementBySelector(FIRST_CASE_ID_BUTTON); }); + When( + "I check if downloaded zip file for Quarantine Order is correct", + () -> { + Path path = + Paths.get(userDirPath + "/downloads/sormas_dokumente_" + LocalDate.now() + "_.zip"); + assertHelpers.assertWithPoll( + () -> + Assert.assertTrue( + Files.exists(path), + "Quarantine order document was not downloaded. Path used for check: " + + path.toAbsolutePath()), + 120); + }); + When( + "I delete downloaded file created from Quarantine order", + () -> { + File toDelete = + new File(userDirPath + "/downloads/sormas_dokumente_" + LocalDate.now() + "_.zip"); + toDelete.deleteOnExit(); + }); + When( + "I search for the last case uuid created via Api in the CHOOSE SOURCE Contact window", + () -> { + webDriverHelpers.fillInWebElement( + SOURCE_CASE_WINDOW_CASE_INPUT, apiState.getCreatedCase().getUuid()); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + }); + When( "^Search for Case using Case UUID from the created Task", () -> { webDriverHelpers.fillAndSubmitInWebElement( NAME_UUID_EPID_NUMBER_LIKE_INPUT, EditCaseSteps.aCase.getUuid()); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); When( @@ -191,6 +233,13 @@ public CaseDirectorySteps( "I click Enter Bulk Edit Mode on Case directory page", () -> { webDriverHelpers.clickOnWebElementBySelector(ENTER_BULK_EDIT_MODE); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + When( + "I click Leave Bulk Edit Mode on Case directory page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(LEAVE_BULK_EDIT_MODE); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); }); When( "I click checkbox to choose all Case results", @@ -198,6 +247,39 @@ public CaseDirectorySteps( webDriverHelpers.clickOnWebElementBySelector(ALL_RESULTS_CHECKBOX); }); + And( + "I click on close button in Create Quarantine Order form", + () -> webDriverHelpers.clickOnWebElementBySelector(CLOSE_FORM_BUTTON)); + + When( + "^I select first (\\d+) results in grid in Case Directory$", + (Integer number) -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + for (int i = 2; i <= number + 1; i++) { + webDriverHelpers.scrollToElement(getCheckboxByIndex(String.valueOf(i))); + webDriverHelpers.clickOnWebElementBySelector(getCheckboxByIndex(String.valueOf(i))); + } + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "^I select last created UI result in grid in Case Directory for Bulk Action$", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.scrollToElement(getCheckboxByUUID(EditCaseSteps.aCase.getUuid())); + webDriverHelpers.clickOnWebElementBySelector( + getCheckboxByUUID(EditCaseSteps.aCase.getUuid())); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "^I select last created API result in grid in Case Directory for Bulk Action$", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.scrollToElement(getCheckboxByUUID(apiState.getCreatedCase().getUuid())); + webDriverHelpers.clickOnWebElementBySelector( + getCheckboxByUUID(apiState.getCreatedCase().getUuid())); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( "I click on the Epidemiological data button tab in Case form", () -> { @@ -212,6 +294,13 @@ public CaseDirectorySteps( "I click on Link to Event from Bulk Actions combobox on Case Directory Page", () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS_VALUES)); + And( + "I click on Create Quarantine Order from Bulk Actions combobox on Case Directory Page", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_CREATE_QUARANTINE_ORDER)); + + And( + "I click on checkbox to upload generated document to entities in Create Quarantine Order form in Case directory", + () -> webDriverHelpers.clickOnWebElementBySelector(UPLOAD_DOCUMENT_TO_ENTITIES_CHECKBOX)); And( "I click on New Event option in Link to Event Form", () -> webDriverHelpers.clickOnWebElementBySelector(NEW_EVENT_CHECKBOX)); @@ -220,6 +309,7 @@ public CaseDirectorySteps( () -> { String eventUuid = apiState.getCreatedEvent().getUuid(); webDriverHelpers.fillInWebElement(SEARCH_BUTTON, eventUuid); + TimeUnit.SECONDS.sleep(3); // needed for table refresh }); And( "I click first result in grid on Link to Event form", @@ -253,6 +343,17 @@ public CaseDirectorySteps( webDriverHelpers.waitForPageLoadingSpinnerToDisappear(60); }); + When( + "^I navigate to the last created case via the url$", + () -> { + String LAST_CREATED_CASE_URL = + environmentManager.getEnvironmentUrlForMarket(locale) + + "/sormas-webdriver/#!cases/data/" + + apiState.getCreatedCase().getUuid(); + webDriverHelpers.accessWebSite(LAST_CREATED_CASE_URL); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(UUID_INPUT); + }); + Then( "I check that number of displayed cases results is {int}", (Integer number) -> @@ -309,7 +410,6 @@ public CaseDirectorySteps( "^I click on ([^\"]*) Radiobutton on Epidemiological Data Page$", (String buttonName) -> { webDriverHelpers.clickWebElementByText(ACTIVITY_AS_CASE_OPTIONS, buttonName); - webDriverHelpers.waitForPageLoaded(); }); Then( "I click on new entry button from Epidemiological Data tab", @@ -505,7 +605,7 @@ public CaseDirectorySteps( And( "I fill Cases from input to {int} days before UI Case created on Case directory page", (Integer number) -> { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); webDriverHelpers.fillInWebElement( DATE_FROM_COMBOBOX, formatter.format(CreateNewCaseSteps.caze.getDateOfReport().minusDays(number))); @@ -532,7 +632,7 @@ public CaseDirectorySteps( And( "I fill Cases from input to {int} days after before UI Case created on Case directory page", (Integer number) -> { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); webDriverHelpers.fillInWebElement( DATE_FROM_COMBOBOX, formatter.format(CreateNewCaseSteps.caze.getDateOfReport().plusDays(number))); @@ -629,7 +729,7 @@ public CaseDirectorySteps( And( "I fill Cases to input to {int} days after UI Case created on Case directory page", (Integer number) -> { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); webDriverHelpers.fillInWebElement( DATE_TO_COMBOBOX, formatter.format(CreateNewCaseSteps.caze.getDateOfReport().plusDays(number))); @@ -741,7 +841,7 @@ public CaseDirectorySteps( "I apply District filter {string} on Case directory page", (String district) -> webDriverHelpers.selectFromCombobox( - CASE_DISTRICT_FILTER_COMBOBOX, DistrictsValues.getValueFor(district))); + CASE_DISTRICT_FILTER_COMBOBOX, DistrictsValues.getNameValueFor(district))); And( "I apply Year filter {string} on Case directory page", diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseImportExportSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseImportExportSteps.java index 9e136041bc2..268ecf7b464 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseImportExportSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseImportExportSteps.java @@ -18,6 +18,7 @@ package org.sormas.e2etests.steps.web.application.cases; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.BASIC_CASE_EXPORT_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CASE_EXPORT_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CONFIGURATION_NAME_INPUT; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CUSTOM_CASE_DELETE_BUTTON; @@ -37,13 +38,19 @@ import cucumber.api.java8.En; import java.io.FileReader; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Locale; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import org.sormas.e2etests.entities.pojo.csv.CustomCaseExportCSV; +import org.sormas.e2etests.entities.pojo.web.Case; +import org.sormas.e2etests.enums.CaseClassification; import org.sormas.e2etests.enums.DiseasesValues; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.state.ApiState; @@ -70,6 +77,13 @@ public CaseImportExportSteps( "I click on the Custom Case Export button", () -> webDriverHelpers.clickOnWebElementBySelector(CUSTOM_CASE_EXPORT_BUTTON)); + When( + "I click on the Basic Case Export button", + () -> { + webDriverHelpers.clickOnWebElementBySelector(BASIC_CASE_EXPORT_BUTTON); + TimeUnit.SECONDS.sleep(5); // wait for download + }); + When( "I click on the New Export Configuration button in Custom Case Export popup", () -> webDriverHelpers.clickOnWebElementBySelector(NEW_EXPORT_CONFIGURATION_BUTTON)); @@ -102,20 +116,56 @@ public CaseImportExportSteps( When( "I check if downloaded data generated by custom case option is correct", () -> { - CustomCaseExportCSV reader = - parseCustomCaseExport( - "./downloads/sormas_f\u00E4lle_" + LocalDate.now().format(formatter) + "_.csv"); + String file = + "./downloads/sormas_f\u00E4lle_" + LocalDate.now().format(formatter) + "_.csv"; + CustomCaseExportCSV reader = parseCustomCaseExport(file); + Path path = Paths.get(file); + Files.delete(path); + softly.assertEquals( + reader.getDisease(), + DiseasesValues.getCaptionForName(apiState.getCreatedCase().getDisease()), + "Diseases are not equal"); + softly.assertEquals( + String.format(reader.getFirstName(), Locale.GERMAN), + String.format(apiState.getLastCreatedPerson().getFirstName(), Locale.GERMAN), + "First names are not equal"); + softly.assertEquals( + String.format(reader.getLastName(), Locale.GERMAN), + String.format(apiState.getLastCreatedPerson().getLastName(), Locale.GERMAN), + "Last names are not equal"); + softly.assertAll(); + }); + + When( + "I check if downloaded data generated by basic case option is correct", + () -> { + String file = + "./downloads/sormas_f\u00E4lle_" + LocalDate.now().format(formatter) + "_.csv"; + Case reader = parseBasicCaseExport(file); + Path path = Paths.get(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid(), apiState.getCreatedCase().getUuid(), "UUIDs are not equal"); softly.assertEquals( reader.getDisease(), DiseasesValues.getCaptionForName(apiState.getCreatedCase().getDisease()), "Diseases are not equal"); softly.assertEquals( - reader.getFirstName(), - apiState.getLastCreatedPerson().getFirstName(), + reader.getCaseClassification(), + CaseClassification.getUIValueForGivenAPIValue( + apiState.getCreatedCase().getCaseClassification()), + "Cases Classification are not equal"); + softly.assertEquals( + reader.getPointOfEntry(), + apiState.getCreatedCase().getPointOfEntryDetails(), + "Point of entries of case are not equal"); + softly.assertEquals( + String.format(reader.getFirstName(), Locale.GERMAN), + String.format(apiState.getLastCreatedPerson().getFirstName(), Locale.GERMAN), "First names are not equal"); softly.assertEquals( - reader.getLastName(), - apiState.getLastCreatedPerson().getLastName(), + String.format(reader.getLastName(), Locale.GERMAN), + String.format(apiState.getLastCreatedPerson().getLastName(), Locale.GERMAN), "Last names are not equal"); softly.assertAll(); }); @@ -137,9 +187,9 @@ public CustomCaseExportCSV parseCustomCaseExport(String fileName) { .build()) { r = reader.readAll(); } catch (IOException e) { - log.error("IOException parseCustomCaseExport: ", e); + log.error("IOException parseCustomCaseExport: {}", e.getCause()); } catch (CsvException e) { - log.error("CsvException parseCustomCaseExport: ", e); + log.error("CsvException parseCustomCaseExport: {}", e.getCause()); } try { for (int i = 0; i < r.size(); i++) { @@ -148,11 +198,51 @@ public CustomCaseExportCSV parseCustomCaseExport(String fileName) { builder = CustomCaseExportCSV.builder() .disease(values[0]) - .firstName(values[1]) - .lastName(values[2]) + .firstName(String.format(values[1], Locale.GERMAN)) + .lastName(String.format(values[2], Locale.GERMAN)) + .build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseCustomCaseExport: {}", e.getCause()); + } + return builder; + } + + public Case parseBasicCaseExport(String fileName) { + DateTimeFormatter formatterTest = + DateTimeFormatter.ofPattern("M/d/yyyy h:m a").localizedBy(Locale.ENGLISH); + List r = null; + String[] values = new String[] {}; + Case builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(2) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseCustomCaseExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseCustomCaseExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = + Case.builder() + .uuid(values[0]) + .disease(values[4]) + .caseClassification(values[6]) + .outcomeOfCase(values[7]) + .investigationStatus(values[8]) + .firstName(String.format(values[10], Locale.GERMAN)) + .lastName(String.format(values[11], Locale.GERMAN)) + .responsibleDistrict(String.format(values[12], Locale.GERMAN)) + .pointOfEntry(values[14]) .build(); } catch (NullPointerException e) { - log.error("Null pointer exception parseCustomCaseExport: ", e); + log.error("Null pointer exception parseCustomCaseExport: {}", e.getCause()); } return builder; } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseLineListingSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseLineListingSteps.java index 7189e6bd962..57de2c89715 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseLineListingSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseLineListingSteps.java @@ -8,6 +8,7 @@ import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.util.Locale; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.sormas.e2etests.entities.pojo.web.Case; import org.sormas.e2etests.entities.services.CaseService; @@ -29,7 +30,6 @@ public CaseLineListingSteps( "^I create a new case in line listing feature popup for DE version$", () -> { caze = caseService.buildCaseForLineListingFeatureDE(); - selectDisease(caze.getDisease()); selectRegion(caze.getRegion()); selectDistrict(caze.getDistrict()); selectFacilityCategory(caze.getFacilityCategory()); @@ -85,7 +85,7 @@ public CaseLineListingSteps( webDriverHelpers.fillInWebElement( PERSON_ID_NAME_CONTACT_INFORMATION_LIKE_INPUT, caseName); webDriverHelpers.clickOnWebElementBySelector(CASE_APPLY_FILTERS_BUTTON); - webDriverHelpers.waitUntilNumberOfElementsIsReduceToGiven(CASE_DETAILED_TABLE_ROWS, 2); + TimeUnit.SECONDS.sleep(2); // wait for filter webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(FIRST_CASE_ID_BUTTON); softly.assertEquals( @@ -114,8 +114,6 @@ public CaseLineListingSteps( When( "I check that case created from Line Listing for DE version is saved and displayed in results grid", () -> { - webDriverHelpers.waitForPageLoaded(); - softly.assertEquals( getCaseDiseaseFromGridResults(), caze.getDisease(), "Disease value doesn't match"); softly.assertEquals( @@ -159,7 +157,7 @@ private void selectFacilityType(String facilityType) { private void fillDateOfReport(LocalDate date, Locale locale) { DateTimeFormatter formatter; if (locale.equals(Locale.GERMAN)) - formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy").localizedBy(Locale.GERMANY); + formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy").localizedBy(Locale.GERMANY); else formatter = DateTimeFormatter.ofPattern("M/d/yyyy"); webDriverHelpers.fillInWebElement(DATE_OF_REPORT, formatter.format(date)); } @@ -200,7 +198,7 @@ private void selectSex(String sex) { private void fillDateOfSymptom(LocalDate date, Locale locale) { DateTimeFormatter formatter; if (locale.equals(Locale.GERMAN)) - formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy").localizedBy(Locale.GERMANY); + formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy").localizedBy(Locale.GERMANY); else formatter = DateTimeFormatter.ofPattern("M/d/yyyy"); webDriverHelpers.fillInWebElement(DATE_OF_SYMPTOM_INPUT, formatter.format(date)); } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseReinfectionSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseReinfectionSteps.java new file mode 100644 index 00000000000..ccea568e6bb --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CaseReinfectionSteps.java @@ -0,0 +1,566 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.steps.web.application.cases; + +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_DIRECTORY_DETAILED_PAGE_APPLY_FILTER_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_DIRECTORY_DETAILED_PAGE_FILTER_INPUT; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.REINFECTION_STATUS_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.CASE_ORIGIN_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DATE_OF_BIRTH_DAY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DATE_OF_BIRTH_MONTH_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DATE_OF_BIRTH_YEAR_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DATE_OF_REPORT_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DISEASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DISEASE_VARIANT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.EXTERNAL_ID_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.FIRST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.LAST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PLACE_OF_STAY; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PRESENT_CONDITION_OF_PERSON_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.RESPONSIBLE_COMMUNITY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.RESPONSIBLE_DISTRICT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.RESPONSIBLE_REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.SAVE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.SEX_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CASE_SAVED_POPUP; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.COVID_GENOME_COPY_NUMBER_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_A_NEW_CASE_FOR_THE_SAME_PERSON_DE_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISEASE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISEASE_VARIANT_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISTRICT_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PLACE_OF_STAY_SELECTED_VALUE; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PREVIOUS_AND_CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REGION_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REINFECTION_EYE_ICON; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REINFECTION_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REINFECTION_STATUS_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REPORT_DATE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.TOOLTIP_EYE_ICON_HOVER; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.USER_INFORMATION; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_DETAILED_COLUMN_HEADERS; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_DETAILED_FIRST_TABLE_ROW; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_DETAILED_TABLE_DATA; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; +import static org.sormas.e2etests.pages.application.entries.CreateNewTravelEntryPage.PICK_A_EXISTING_PERSON_LABEL_DE; + +import com.github.javafaker.Faker; +import cucumber.api.java8.En; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.TextStyle; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import javax.inject.Inject; +import org.openqa.selenium.WebElement; +import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; +import org.sormas.e2etests.entities.pojo.web.Case; +import org.sormas.e2etests.entities.services.CaseService; +import org.sormas.e2etests.enums.GenderValues; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.pages.application.cases.EditCasePage; +import org.sormas.e2etests.steps.BaseSteps; +import org.testng.asserts.SoftAssert; + +public class CaseReinfectionSteps implements En { + Faker faker = new Faker(); + private final WebDriverHelpers webDriverHelpers; + protected static Case caze; + public static Case aCase; + private final SoftAssert softly; + public static final DateTimeFormatter DATE_FORMATTER_DE = DateTimeFormatter.ofPattern("d.M.yyyy"); + private static BaseSteps baseSteps; + + @Inject + public CaseReinfectionSteps( + WebDriverHelpers webDriverHelpers, + Faker faker, + CaseService caseService, + SoftAssert softly, + BaseSteps baseSteps) { + this.webDriverHelpers = webDriverHelpers; + this.softly = softly; + this.baseSteps = baseSteps; + + List extIds = new ArrayList(); + List collectedUUIDs = new ArrayList(); + String firstName = faker.name().firstName(); + String lastName = faker.name().lastName(); + String personSex = GenderValues.getRandomGenderDE(); + LocalDate dateOfBirth = + LocalDate.of( + faker.number().numberBetween(1900, 2002), + faker.number().numberBetween(1, 12), + faker.number().numberBetween(1, 27)); + + When( + "I choose ([^\"]*) option in reinfection", + (String reinfection) -> { + webDriverHelpers.scrollToElement(REINFECTION_OPTIONS); + webDriverHelpers.clickWebElementByText(REINFECTION_OPTIONS, reinfection); + }); + + When( + "I check if reinfection checkboxes for DE version are displayed correctly", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PREVIOUS_AND_CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(COVID_GENOME_COPY_NUMBER_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL); + }); + + When( + "I create a new case with specific data for DE version with saved person details", + () -> { + LocalDate reportDate = LocalDate.now().minusDays(2); + caze = + caseService.buildGeneratedCaseDEForOnePerson( + firstName, lastName, dateOfBirth, reportDate, personSex); + selectCaseOrigin(caze.getCaseOrigin()); + fillExternalId(caze.getExternalId()); + fillDisease(caze.getDisease()); + fillDiseaseVariant(caze.getDiseaseVariant()); + selectResponsibleRegion(caze.getResponsibleRegion()); + selectResponsibleDistrict(caze.getResponsibleDistrict()); + selectResponsibleCommunity(caze.getResponsibleCommunity()); + selectPlaceOfStay(caze.getPlaceOfStay()); + fillFirstName(caze.getFirstName()); + fillLastName(caze.getLastName()); + fillDateOfBirth(caze.getDateOfBirth(), Locale.GERMAN); + selectSex(caze.getSex()); + selectPresentConditionOfPerson(caze.getPresentConditionOfPerson()); + fillDateOfReport(caze.getDateOfReport(), Locale.GERMAN); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EditCasePage.REPORT_DATE_INPUT); + webDriverHelpers.clickOnWebElementBySelector(CASE_SAVED_POPUP); + }); + + When( + "I create a new case with specific data for DE version with saved person details with earlier report date", + () -> { + LocalDate reportDate = LocalDate.now().minusDays(3); + caze = + caseService.buildGeneratedCaseDEForOnePerson( + firstName, lastName, dateOfBirth, reportDate, personSex); + selectCaseOrigin(caze.getCaseOrigin()); + fillExternalId(caze.getExternalId()); + fillDisease(caze.getDisease()); + fillDiseaseVariant(caze.getDiseaseVariant()); + selectResponsibleRegion(caze.getResponsibleRegion()); + selectResponsibleDistrict(caze.getResponsibleDistrict()); + selectResponsibleCommunity(caze.getResponsibleCommunity()); + selectPlaceOfStay(caze.getPlaceOfStay()); + fillFirstName(caze.getFirstName()); + fillLastName(caze.getLastName()); + fillDateOfBirth(caze.getDateOfBirth(), Locale.GERMAN); + selectSex(caze.getSex()); + selectPresentConditionOfPerson(caze.getPresentConditionOfPerson()); + fillDateOfReport(caze.getDateOfReport(), Locale.GERMAN); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); + }); + + When( + "I check the created data is correctly displayed on Edit case page for DE version for reinfection", + () -> { + extIds.add(caze.getExternalId()); + + aCase = collectCasePersonDataDE(); + collectedUUIDs.add(aCase.getUuid()); + ComparisonHelper.compareEqualFieldsOfEntities( + aCase, + caze, + List.of( + "dateOfReport", + "disease", + "externalId", + "responsibleRegion", + "responsibleDistrict", + "responsibleCommunity", + "placeOfStay", + "firstName", + "lastName", + "dateOfBirth")); + }); + + Then( + "I choose select a matching person in pick or create popup for DE case version", + () -> webDriverHelpers.clickOnWebElementBySelector(PICK_A_EXISTING_PERSON_LABEL_DE)); + + When( + "I choose create a new case for the same person for DE version", + () -> + webDriverHelpers.clickOnWebElementBySelector( + CREATE_A_NEW_CASE_FOR_THE_SAME_PERSON_DE_CHECKBOX)); + + When( + "I search first created case with reinfection", + () -> { + webDriverHelpers.fillAndSubmitInWebElement( + CASE_DIRECTORY_DETAILED_PAGE_FILTER_INPUT, extIds.get(0)); + TimeUnit.SECONDS.sleep(2); // wait for filter + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + + When( + "I check data from the eye icon in reinfection section in Edit case for DE version", + () -> { + DateTimeFormatter testFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + String caseId = collectedUUIDs.get(1).substring(0, 6).toUpperCase(); + String expectedHover = + "Previous case:\n" + + "\n" + + "Fall-ID: " + + caseId + + "\n" + + "Meldedatum: " + + LocalDate.now().minusDays(3).format(testFormatter) + + "\n" + + "Externes Aktenzeichen:\n" + + "Krankheitsvariante: B.1.617.1\n" + + "Datum des Symptombeginns:"; + + webDriverHelpers.waitUntilIdentifiedElementIsPresent(REINFECTION_EYE_ICON); + webDriverHelpers.scrollToElement(REINFECTION_EYE_ICON); + String prevCaseDescription; + webDriverHelpers.hoverToElement(REINFECTION_EYE_ICON); + prevCaseDescription = webDriverHelpers.getTextFromWebElement(TOOLTIP_EYE_ICON_HOVER); + softly.assertEquals(expectedHover, prevCaseDescription); + softly.assertAll(); + }); + + When( + "I check all checkboxes with genome sequence in reinfection section in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector(CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PREVIOUS_AND_CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + }); + + When( + "I clear all checkboxes with genome sequence in reinfection section in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector(CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PREVIOUS_AND_CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + }); + + When( + "I set checkboxes from Combination1 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector(COVID_GENOME_COPY_NUMBER_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL); + }); + + When( + "I clear all checkboxes for Combination1 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PREVIOUS_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector(COVID_GENOME_COPY_NUMBER_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL); + }); + + When( + "I check if reinfection status is set to ([^\"]*) for DE version", + (String expectedReinfectionStatus) -> { + String actualReinfectionStatus; + actualReinfectionStatus = + webDriverHelpers.getValueFromWebElement(REINFECTION_STATUS_LABEL); + softly.assertEquals( + expectedReinfectionStatus, + actualReinfectionStatus, + "Reinfection statuses are not equal"); + softly.assertAll(); + }); + + When( + "I set checkboxes from Combination2 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector(COVID_GENOME_COPY_NUMBER_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL); + }); + + When( + "I clear all checkboxes for Combination2 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CURRENT_COVID_INFECTION_IS_KNOWN_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector(COVID_GENOME_COPY_NUMBER_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL); + }); + + When( + "I set checkboxes from Combination3 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL); + }); + + When( + "I clear all checkboxes for Combination3 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAS_OVERCOME_ACUTE_RESPIRATORY_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_TESTED_CONCLUSIVELY_NEGATIVE_BY_PRC_LABEL); + }); + When( + "I set checkboxes from Combination4 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL); + }); + + When( + "I clear all checkboxes for Combination4 from the test scenario for reinfection in Edit case for DE version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + PERSON_HAD_AN_ASYMPTOMATIC_COVID_INFECTION_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + INDIVIDUAL_TESTED_POSITIVE_FOR_COVID_BY_PCR_DE_LABEL); + webDriverHelpers.clickOnWebElementBySelector( + THE_LAST_POSITIVE_PCR_DETECTION_WAS_MORE_THAN_3_MONTHS_AGO_DE_LABEL); + }); + + When( + "I filter by reinfection status as a ([^\"]*)", + (String status) -> { + webDriverHelpers.selectFromCombobox(REINFECTION_STATUS_COMBOBOX, status); + webDriverHelpers.clickOnWebElementBySelector( + CASE_DIRECTORY_DETAILED_PAGE_APPLY_FILTER_BUTTON); + TimeUnit.SECONDS.sleep(2); // wait for filter + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + + When( + "I check if created case with reinfection status is displayed in the Case table for DE version", + () -> { + List> tableRowsData = getTableRowsData(); + Map detailedCasesTableRow = tableRowsData.get(0); + softly.assertEquals( + detailedCasesTableRow.get(CaseDetailedTableViewHeaders.EXTERNAL_ID_DE.toString()), + extIds.get(0), + "IDs are not equal"); + softly.assertAll(); + }); + } + + private void selectCaseOrigin(String caseOrigin) { + webDriverHelpers.clickWebElementByText(CASE_ORIGIN_OPTIONS, caseOrigin); + } + + private void fillDateOfReport(LocalDate date, Locale locale) { + DateTimeFormatter formatter; + if (locale.equals(Locale.GERMAN)) formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + else formatter = DateTimeFormatter.ofPattern("M/d/yyyy"); + webDriverHelpers.fillInWebElement(DATE_OF_REPORT_INPUT, formatter.format(date)); + } + + private void fillExternalId(String externalId) { + webDriverHelpers.fillInWebElement(EXTERNAL_ID_INPUT, externalId); + } + + private void fillDisease(String disease) { + webDriverHelpers.selectFromCombobox(DISEASE_COMBOBOX, disease); + } + + private void fillDiseaseVariant(String diseaseVariant) { + webDriverHelpers.selectFromCombobox(DISEASE_VARIANT_COMBOBOX, diseaseVariant); + } + + private void selectResponsibleRegion(String selectResponsibleRegion) { + webDriverHelpers.selectFromCombobox(RESPONSIBLE_REGION_COMBOBOX, selectResponsibleRegion); + } + + private void selectResponsibleDistrict(String responsibleDistrict) { + webDriverHelpers.selectFromCombobox(RESPONSIBLE_DISTRICT_COMBOBOX, responsibleDistrict); + } + + private void selectResponsibleCommunity(String responsibleCommunity) { + webDriverHelpers.selectFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX, responsibleCommunity); + } + + private void selectPlaceOfStay(String placeOfStay) { + webDriverHelpers.clickWebElementByText(PLACE_OF_STAY, placeOfStay); + } + + private void fillFirstName(String firstName) { + webDriverHelpers.fillInWebElement(FIRST_NAME_INPUT, firstName); + } + + private void fillLastName(String lastName) { + webDriverHelpers.fillInWebElement(LAST_NAME_INPUT, lastName); + } + + private void fillDateOfBirth(LocalDate localDate, Locale locale) { + webDriverHelpers.selectFromCombobox( + DATE_OF_BIRTH_YEAR_COMBOBOX, String.valueOf(localDate.getYear())); + webDriverHelpers.selectFromCombobox( + DATE_OF_BIRTH_MONTH_COMBOBOX, localDate.getMonth().getDisplayName(TextStyle.FULL, locale)); + webDriverHelpers.selectFromCombobox( + DATE_OF_BIRTH_DAY_COMBOBOX, String.valueOf(localDate.getDayOfMonth())); + } + + private void selectSex(String sex) { + webDriverHelpers.selectFromCombobox(SEX_COMBOBOX, sex); + } + + private void selectPresentConditionOfPerson(String presentConditionOfPerson) { + webDriverHelpers.selectFromCombobox( + PRESENT_CONDITION_OF_PERSON_COMBOBOX, presentConditionOfPerson); + } + + private Case collectCasePersonDataDE() { + Case userInfo = getUserInformationDE(); + + return Case.builder() + .dateOfReport(getDateOfReportDE()) + .firstName(userInfo.getFirstName()) + .lastName(userInfo.getLastName()) + .dateOfBirth(userInfo.getDateOfBirth()) + .externalId(webDriverHelpers.getValueFromWebElement(EditCasePage.EXTERNAL_ID_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .disease(webDriverHelpers.getValueFromWebElement(DISEASE_INPUT)) + .diseaseVariant(webDriverHelpers.getValueFromWebElement(DISEASE_VARIANT_INPUT)) + .responsibleRegion(webDriverHelpers.getValueFromWebElement(REGION_INPUT)) + .responsibleDistrict(webDriverHelpers.getValueFromWebElement(DISTRICT_INPUT)) + .responsibleCommunity(webDriverHelpers.getValueFromWebElement(COMMUNITY_INPUT)) + .placeOfStay(webDriverHelpers.getTextFromWebElement(PLACE_OF_STAY_SELECTED_VALUE)) + .placeDescription( + webDriverHelpers.getValueFromWebElement(EditCasePage.PLACE_DESCRIPTION_INPUT)) + .build(); + } + + private Case getUserInformationDE() { + String userInfo = webDriverHelpers.getTextFromWebElement(USER_INFORMATION); + String[] userInfos = userInfo.split(" "); + LocalDate localDate = LocalDate.parse(userInfos[3].replace(")", ""), DATE_FORMATTER_DE); + return Case.builder() + .firstName(userInfos[0]) + .lastName(userInfos[1]) + .dateOfBirth(localDate) + .build(); + } + + private LocalDate getDateOfReportDE() { + String dateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE_INPUT); + return LocalDate.parse(dateOfReport, DATE_FORMATTER_DE); + } + + private List getTableRows() { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + CONTACTS_DETAILED_COLUMN_HEADERS); + return baseSteps.getDriver().findElements(CONTACTS_DETAILED_FIRST_TABLE_ROW); + } + + private Map extractColumnHeadersHashMap() { + AtomicInteger atomicInt = new AtomicInteger(); + HashMap headerHashmap = new HashMap<>(); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + CONTACTS_DETAILED_COLUMN_HEADERS); + webDriverHelpers.waitUntilAListOfWebElementsAreNotEmpty(CONTACTS_DETAILED_COLUMN_HEADERS); + baseSteps + .getDriver() + .findElements(CONTACTS_DETAILED_COLUMN_HEADERS) + .forEach( + webElement -> { + webDriverHelpers.scrollToElementUntilIsVisible(webElement); + headerHashmap.put(webElement.getText(), atomicInt.getAndIncrement()); + }); + return headerHashmap; + } + + private List> getTableRowsData() { + Map headers = extractColumnHeadersHashMap(); + List tableRows = getTableRows(); + List> tableDataList = new ArrayList<>(); + tableRows.forEach( + table -> { + HashMap indexWithData = new HashMap<>(); + AtomicInteger atomicInt = new AtomicInteger(); + List tableData = table.findElements(CONTACTS_DETAILED_TABLE_DATA); + tableData.forEach( + dataText -> { + webDriverHelpers.scrollToElementUntilIsVisible(dataText); + indexWithData.put(atomicInt.getAndIncrement(), dataText.getText()); + }); + tableDataList.add(indexWithData); + }); + List> tableObjects = new ArrayList<>(); + tableDataList.forEach( + row -> { + ConcurrentHashMap objects = new ConcurrentHashMap<>(); + headers.forEach((headerText, index) -> objects.put(headerText, row.get(index))); + tableObjects.add(objects); + }); + return tableObjects; + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CreateNewCaseSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CreateNewCaseSteps.java index c68be23857f..74e3fdbf54c 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CreateNewCaseSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/CreateNewCaseSteps.java @@ -29,6 +29,11 @@ import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.CONTACT_CASE_SAVE_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.BACK_TO_THE_CASES_LIST_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.CASE_SAVED_POPUP; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_NEW_CASE_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_NEW_PERSON_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISCARD_BUTTON_POPUP; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PICK_OR_CREATE_CASE_POPUP_HEADER; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PICK_OR_CREATE_PERSON_POPUP_HEADER; import static org.sormas.e2etests.pages.application.cases.EditCasePage.PICK_OR_CREATE_PERSON_TITLE; import static org.sormas.e2etests.pages.application.cases.EditCasePage.SAVE_POPUP_CONTENT; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_DETAILED_COLUMN_HEADERS; @@ -60,6 +65,7 @@ import org.sormas.e2etests.entities.services.CaseService; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.pages.application.cases.EditCasePage; +import org.sormas.e2etests.state.ApiState; import org.sormas.e2etests.steps.BaseSteps; import org.testng.asserts.SoftAssert; @@ -75,6 +81,7 @@ public class CreateNewCaseSteps implements En { public CreateNewCaseSteps( WebDriverHelpers webDriverHelpers, CaseService caseService, + ApiState apiState, Faker faker, SoftAssert softly, BaseSteps baseSteps) { @@ -179,7 +186,6 @@ public CreateNewCaseSteps( webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); } webDriverHelpers.clickOnWebElementBySelector(FIRST_CASE_ID_BUTTON); - webDriverHelpers.waitForPageLoaded(); }); When( @@ -197,7 +203,6 @@ public CreateNewCaseSteps( webDriverHelpers.scrollToElement(SAVE_BUTTON); webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); TimeUnit.SECONDS.sleep(2); // wait for reaction - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); @@ -268,6 +273,7 @@ public CreateNewCaseSteps( SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); }); + When( "I create a new case with specific data for DE version", () -> { @@ -337,6 +343,37 @@ public CreateNewCaseSteps( When( "^I create a new case with specific data$", + () -> { + caze = caseService.buildGeneratedCase(); + fillAllCaseFields(caze); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EditCasePage.REPORT_DATE_INPUT); + webDriverHelpers.clickOnWebElementBySelector(CASE_SAVED_POPUP); + }); + + When( + "I create a new case with disease {string}", + (String caseDisease) -> { + caze = caseService.buildCaseWithDisease(caseDisease); + fillAllCaseFields(caze); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); + if (webDriverHelpers.isElementVisibleWithTimeout(PICK_OR_CREATE_PERSON_POPUP_HEADER, 1)) { + webDriverHelpers.clickOnWebElementBySelector(CREATE_NEW_PERSON_CHECKBOX); + webDriverHelpers.clickOnWebElementBySelector(SAVE_POPUP_CONTENT); + TimeUnit.SECONDS.sleep(1); + if (webDriverHelpers.isElementVisibleWithTimeout(PICK_OR_CREATE_CASE_POPUP_HEADER, 1)) { + webDriverHelpers.clickOnWebElementBySelector(CREATE_NEW_CASE_CHECKBOX); + webDriverHelpers.clickOnWebElementBySelector(SAVE_POPUP_CONTENT); + } + } + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EditCasePage.REPORT_DATE_INPUT); + webDriverHelpers.clickOnWebElementBySelector(CASE_SAVED_POPUP); + }); + + When( + "^I fill new case form with specific data$", () -> { caze = caseService.buildGeneratedCase(); selectCaseOrigin(caze.getCaseOrigin()); @@ -356,14 +393,19 @@ public CreateNewCaseSteps( fillPrimaryEmailAddress(caze.getPrimaryEmailAddress()); fillDateOfReport(caze.getDateOfReport(), Locale.ENGLISH); fillPlaceDescription(caze.getPlaceDescription()); - webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); - webDriverHelpers.waitUntilElementIsVisibleAndClickable(EditCasePage.REPORT_DATE_INPUT); - webDriverHelpers.clickOnWebElementBySelector(CASE_SAVED_POPUP); + }); + When( + "I set Place of stay to {string}, Facility Category to {string} and Facility Type to {string} in Case creation", + (String placeOfStay, String facilityCategory, String facilityType) -> { + selectPlaceOfStay(placeOfStay); + selectFacilityCategory(facilityCategory); + selectFacilityType(facilityType); + selectFacility("Other facility"); + fillPlaceDescription(caze.getPlaceDescription()); }); When( - "^I fill new case form with specific data$", + "^I fill new case form with chosen data without personal data on Case directory page$", () -> { caze = caseService.buildGeneratedCase(); selectCaseOrigin(caze.getCaseOrigin()); @@ -373,10 +415,6 @@ public CreateNewCaseSteps( selectResponsibleDistrict(caze.getResponsibleDistrict()); selectResponsibleCommunity(caze.getResponsibleCommunity()); selectPlaceOfStay(caze.getPlaceOfStay()); - fillFirstName(caze.getFirstName()); - fillLastName(caze.getLastName()); - fillDateOfBirth(caze.getDateOfBirth(), Locale.ENGLISH); - selectSex(caze.getSex()); selectPresentConditionOfPerson(caze.getPresentConditionOfPerson()); fillDateOfSymptomOnset(caze.getDateOfSymptomOnset(), Locale.ENGLISH); fillPrimaryPhoneNumber(caze.getPrimaryPhoneNumber()); @@ -385,6 +423,77 @@ public CreateNewCaseSteps( fillPlaceDescription(caze.getPlaceDescription()); }); + When( + "^I click on the clear button in new add new event participant form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); + + When( + "^I click on the person search button in new case form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); + When( + "^I click on the clear button in new case form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); + + When( + "^I search for the last created person via Api by uuid in popup on Select Person window$", + () -> { + webDriverHelpers.fillInWebElement( + UUID_EXTERNAL_ID_EXTERNAL_TOKEN_LIKE_INPUT, + apiState.getLastCreatedPerson().getUuid()); + webDriverHelpers.clickOnWebElementBySelector(PERSON_CASE_WINDOW_SEARCH_CASE_BUTTON); + }); + + When( + "^I search for the last created person by First Name and Last Name in popup on Select Person window$", + () -> { + webDriverHelpers.fillInWebElement(FIRST_NAME_LIKE_INPUT, aCase.getFirstName()); + webDriverHelpers.fillInWebElement(LAST_NAME_LIKE_INPUT, aCase.getLastName()); + webDriverHelpers.clickOnWebElementBySelector(PERSON_CASE_WINDOW_SEARCH_CASE_BUTTON); + }); + + When( + "^I open the first found result in the popup of Select Person window$", + () -> { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + PERSON_CASE_WINDOW_SEARCH_FIRST_RESULT_OPTION); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_CASE_WINDOW_SEARCH_FIRST_RESULT_OPTION); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SELECT_PERSON_WINDOW_CONFIRM_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SELECT_PERSON_WINDOW_CONFIRM_BUTTON); + }); + + When( + "^I open the first found result in the popup of Select Person window for DE version$", + () -> { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + PERSON_CASE_WINDOW_SEARCH_FIRST_RESULT_OPTION); + webDriverHelpers.clickOnWebElementBySelector( + PERSON_CASE_WINDOW_SEARCH_FIRST_RESULT_OPTION); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SELECT_PERSON_WINDOW_CONFIRM_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector(SELECT_PERSON_WINDOW_CONFIRM_BUTTON_DE); + }); + + When( + "^I click on Save button in Case form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + }); + + When( + "^I Pick an existing case in Pick or create person popup in Case entry$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CREATE_A_NEW_CASE_CONFIRMATION_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + }); + When( "^I create a new case with specific data using line listing feature$", () -> { @@ -468,7 +577,6 @@ public CreateNewCaseSteps( selectResponsibleDistrict(caze.getResponsibleDistrict()); selectResponsibleCommunity(caze.getResponsibleCommunity()); selectPlaceOfStay(caze.getPlaceOfStay()); - fillDateOfBirth(caze.getDateOfBirth(), Locale.ENGLISH); selectPresentConditionOfPerson(caze.getPresentConditionOfPerson()); fillDateOfSymptomOnset(caze.getDateOfSymptomOnset(), Locale.ENGLISH); fillPrimaryPhoneNumber(caze.getPrimaryPhoneNumber()); @@ -482,6 +590,32 @@ public CreateNewCaseSteps( () -> { webDriverHelpers.clickOnWebElementBySelector(ENTER_HOME_ADDRESS_CHECKBOX); }); + + When( + "I click on save button in the case popup", + () -> { + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + TimeUnit.SECONDS.sleep(2); // wait for spinner + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + + When( + "^I check if default disease value is set for ([^\"]*)$", + (String disease) -> { + String getDisease = webDriverHelpers.getValueFromCombobox(DISEASE_COMBOBOX); + softly.assertEquals(disease, getDisease, "Diseases are not equal"); + softly.assertAll(); + webDriverHelpers.clickOnWebElementBySelector(DISCARD_BUTTON_POPUP); + }); + + When( + "^I check if default disease value in the Line listing is set for ([^\"]*)$", + (String disease) -> { + String getDisease = webDriverHelpers.getValueFromCombobox(LINE_LISTING_DISEASE_COMBOBOX); + softly.assertEquals(disease, getDisease, "Diseases are not equal"); + softly.assertAll(); + webDriverHelpers.clickOnWebElementBySelector(LINE_LISTING_DISCARD_BUTTON); + }); } private void selectCaseOrigin(String caseOrigin) { @@ -519,6 +653,18 @@ private void selectResponsibleCommunity(String responsibleCommunity) { webDriverHelpers.selectFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX, responsibleCommunity); } + private void selectFacilityCategory(String selectFacilityCategory) { + webDriverHelpers.selectFromCombobox(FACILITY_CATEGORY_COMBOBOX, selectFacilityCategory); + } + + private void selectFacilityType(String selectFacilityType) { + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, selectFacilityType); + } + + private void selectFacility(String selectFacility) { + webDriverHelpers.selectFromCombobox(FACILITY_COMBOBOX, selectFacility); + } + private void selectPlaceOfStay(String placeOfStay) { webDriverHelpers.clickWebElementByText(PLACE_OF_STAY, placeOfStay); } @@ -573,6 +719,26 @@ private void fillPrimaryEmailAddress(String primaryPhoneNumber) { webDriverHelpers.fillInWebElement(PRIMARY_EMAIL_ADDRESS_INPUT, primaryPhoneNumber); } + private void fillAllCaseFields(Case caze) { + selectCaseOrigin(caze.getCaseOrigin()); + fillExternalId(caze.getExternalId()); + fillDisease(caze.getDisease()); + selectResponsibleRegion(caze.getResponsibleRegion()); + selectResponsibleDistrict(caze.getResponsibleDistrict()); + selectResponsibleCommunity(caze.getResponsibleCommunity()); + selectPlaceOfStay(caze.getPlaceOfStay()); + fillFirstName(caze.getFirstName()); + fillLastName(caze.getLastName()); + fillDateOfBirth(caze.getDateOfBirth(), Locale.ENGLISH); + selectSex(caze.getSex()); + selectPresentConditionOfPerson(caze.getPresentConditionOfPerson()); + fillDateOfSymptomOnset(caze.getDateOfSymptomOnset(), Locale.ENGLISH); + fillPrimaryPhoneNumber(caze.getPrimaryPhoneNumber()); + fillPrimaryEmailAddress(caze.getPrimaryEmailAddress()); + fillDateOfReport(caze.getDateOfReport(), Locale.ENGLISH); + fillPlaceDescription(caze.getPlaceDescription()); + } + private List getTableRows() { webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( CONTACTS_DETAILED_COLUMN_HEADERS); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCasePersonSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCasePersonSteps.java index b5ff9b6eede..8db6110e116 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCasePersonSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCasePersonSteps.java @@ -128,8 +128,16 @@ public EditCasePersonSteps( When( "I set Present condition of Person to ([^\"]*) in Case Person tab", - (String condition) -> - webDriverHelpers.selectFromCombobox(PRESENT_CONDITION_COMBOBOX, condition)); + (String condition) -> { + webDriverHelpers.selectFromCombobox(PRESENT_CONDITION_COMBOBOX, condition); + }); + + When( + "I set Present condition of Person to ([^\"]*) in Person tab", + (String condition) -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(SEE_CASES_FOR_THIS_PERSON_BUTTON); + webDriverHelpers.selectFromCombobox(PRESENT_CONDITION_COMBOBOX, condition); + }); When( "I check if death data fields are available in Case Person tab", @@ -201,6 +209,13 @@ public EditCasePersonSteps( "city", "areaType")); }); + + When( + "I set Facility Category to {string} and Facility Type to {string}", + (String facilityCategory, String facilityType) -> { + selectFacilityCategory(facilityCategory); + selectFacilityType(facilityType); + }); } private void selectCountry(String country) { diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCaseSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCaseSteps.java index 580145e0728..063fb8f76be 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCaseSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditCaseSteps.java @@ -18,7 +18,31 @@ package org.sormas.e2etests.steps.web.application.cases; +import static org.sormas.e2etests.enums.CaseOutcome.DECEASED; +import static org.sormas.e2etests.enums.CaseOutcome.FACILITY_OTHER; +import static org.sormas.e2etests.enums.CaseOutcome.INVESTIGATION_DISCARDED; +import static org.sormas.e2etests.enums.CaseOutcome.INVESTIGATION_DONE; +import static org.sormas.e2etests.enums.CaseOutcome.INVESTIGATION_PENDING; +import static org.sormas.e2etests.enums.CaseOutcome.PLACE_OF_STAY_FACILITY; +import static org.sormas.e2etests.enums.CaseOutcome.PLACE_OF_STAY_HOME; +import static org.sormas.e2etests.enums.CaseOutcome.QUARANTINE_HOME; +import static org.sormas.e2etests.enums.CaseOutcome.QUARANTINE_INSTITUTIONAL; +import static org.sormas.e2etests.enums.CaseOutcome.QUARANTINE_NONE; +import static org.sormas.e2etests.enums.CaseOutcome.QUARANTINE_OTHER; +import static org.sormas.e2etests.enums.CaseOutcome.QUARANTINE_UNKNOWN; +import static org.sormas.e2etests.enums.CaseOutcome.RECOVERED; +import static org.sormas.e2etests.enums.CaseOutcome.SEQUELAE_NO; +import static org.sormas.e2etests.enums.CaseOutcome.SEQUELAE_UNKNOWN; +import static org.sormas.e2etests.enums.CaseOutcome.SEQUELAE_YES; +import static org.sormas.e2etests.enums.CaseOutcome.UNKNOWN; +import static org.sormas.e2etests.enums.CaseOutcome.VACCINATED_STATUS_UNKNOWN; +import static org.sormas.e2etests.enums.CaseOutcome.VACCINATED_STATUS_UNVACCINATED; +import static org.sormas.e2etests.enums.CaseOutcome.VACCINATED_STATUS_VACCINATED; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_APPLY_FILTERS_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_CLASSIFICATION_FILTER_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_CLOSE_WINDOW_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_INFO_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CONTACTS_DATA_TAB; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.EPIDEMIOLOGICAL_DATA_TAB; import static org.sormas.e2etests.pages.application.cases.EditCasePage.ACTION_CANCEL; import static org.sormas.e2etests.pages.application.cases.EditCasePage.BLOOD_ORGAN_TISSUE_DONATION_IN_THE_LAST_6_MONTHS_OPTIONS; @@ -32,7 +56,9 @@ import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_COMBOBOX_BY_PLACE_OF_STAY; import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_INPUT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_DOCUMENT_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_DOCUMENT_TEMPLATES; import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_QUARANTINE_ORDER_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CURRENT_HOSPITALIZATION_POPUP; import static org.sormas.e2etests.pages.application.cases.EditCasePage.DATE_OFFICIAL_QUARANTINE_ORDER_WAS_SENT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.DATE_OF_OUTCOME; import static org.sormas.e2etests.pages.application.cases.EditCasePage.DATE_OF_OUTCOME_INPUT; @@ -61,6 +87,7 @@ import static org.sormas.e2etests.pages.application.cases.EditCasePage.FACILITY_TYPE_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.FOLLOW_UP_TAB; import static org.sormas.e2etests.pages.application.cases.EditCasePage.GENERAL_COMMENT_TEXTAREA; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.GENERATED_DOCUMENT_NAME; import static org.sormas.e2etests.pages.application.cases.EditCasePage.HOME_BASED_QUARANTINE_POSSIBLE_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EditCasePage.HOSPITALIZATION_TAB; import static org.sormas.e2etests.pages.application.cases.EditCasePage.INVESTIGATED_DATE_FIELD; @@ -80,6 +107,7 @@ import static org.sormas.e2etests.pages.application.cases.EditCasePage.PLACE_OF_STAY_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EditCasePage.PLACE_OF_STAY_REGION_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.PLACE_OF_STAY_SELECTED_VALUE; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.POPUPS_INPUTS; import static org.sormas.e2etests.pages.application.cases.EditCasePage.PROHIBITION_TO_WORK_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_CHANGE_COMMENT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_COMBOBOX; @@ -92,6 +120,7 @@ import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_ORDERED_BY_DOCUMENT_DATE; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_ORDERED_VERBALLY_CHECKBOX_INPUT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_ORDERED_VERBALLY_CHECKBOX_LABEL; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_ORDER_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_POPUP_DISCARD_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_POPUP_MESSAGE; import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_POPUP_SAVE_BUTTON; @@ -108,9 +137,11 @@ import static org.sormas.e2etests.pages.application.cases.EditCasePage.RESPONSIBLE_DISTRICT_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.RESPONSIBLE_REGION_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.RESPONSIBLE_SURVEILLANCE_OFFICER_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.SAVE_AND_OPEN_HOSPITALIZATION_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.SEQUELAE_DETAILS; import static org.sormas.e2etests.pages.application.cases.EditCasePage.SEQUELAE_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EditCasePage.SYMPTOMS_TAB; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.UPLOAD_DOCUMENT_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.USER_INFORMATION; import static org.sormas.e2etests.pages.application.cases.EditCasePage.VACCINATION_STATUS_FOR_THIS_DISEASE_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.CONTACT_TO_BODY_FLUIDS_OPTONS; @@ -136,12 +167,19 @@ import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.WEARING_MASK_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.WEARING_PPE_OPTIONS; import static org.sormas.e2etests.pages.application.cases.SymptomsTabPage.SAVE_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON_DE; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_WINDOW_CONTACT_DE; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.FOLLOW_UP_UNTIL_DATE; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; +import static org.sormas.e2etests.pages.application.persons.EditPersonPage.EVENT_PARTICIPANTS_DATA_TAB; import static org.sormas.e2etests.steps.BaseSteps.locale; import static org.sormas.e2etests.steps.web.application.contacts.ContactDirectorySteps.exposureData; import cucumber.api.java8.En; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -160,6 +198,7 @@ import org.sormas.e2etests.entities.pojo.web.epidemiologicalData.Exposure; import org.sormas.e2etests.entities.services.CaseDocumentService; import org.sormas.e2etests.entities.services.CaseService; +import org.sormas.e2etests.enums.CaseClassification; import org.sormas.e2etests.enums.CaseOutcome; import org.sormas.e2etests.enums.YesNoUnknownOptions; import org.sormas.e2etests.enums.cases.epidemiologicalData.ExposureDetailsRole; @@ -230,6 +269,19 @@ public EditCaseSteps( webDriverHelpers.waitUntilIdentifiedElementIsPresent(CASE_SAVED_POPUP); webDriverHelpers.clickOnWebElementBySelector(CASE_SAVED_POPUP); }); + + When( + "I click only on save button from Edit Case page", + () -> webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON)); + + And( + "I check if Current Hospitalization popup is displayed", + () -> webDriverHelpers.isElementVisibleWithTimeout(CURRENT_HOSPITALIZATION_POPUP, 10)); + + When( + "I click on Save and open hospitalization in current hospitalization popup", + () -> webDriverHelpers.clickOnWebElementBySelector(SAVE_AND_OPEN_HOSPITALIZATION_BUTTON)); + Then( "I click on Clinical Course tab from Edit Case page", () -> webDriverHelpers.clickOnWebElementBySelector(CLINICAL_COURSE_TAB)); @@ -243,6 +295,31 @@ public EditCaseSteps( webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); + When( + "I click on INFO button on Case Edit page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CASE_INFO_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(CASE_CLOSE_WINDOW_BUTTON); + }); + + When( + "I change Epidemiological confirmation Combobox to {string} option", + (String option) -> { + webDriverHelpers.selectFromCombobox(EPIDEMIOLOGICAL_CONFIRMATION_COMBOBOX, option); + }); + + When( + "I check that Case Classification has {string} value", + (String caseClassificationValue) -> { + String caseClassificationComboboxValue = + (webDriverHelpers.getValueFromCombobox(CASE_CLASSIFICATION_COMBOBOX)); + softly.assertEquals( + caseClassificationValue, + caseClassificationComboboxValue, + "The case classification field has unexpected value "); + softly.assertAll(); + }); + And( "I navigate to follow-up tab", () -> webDriverHelpers.clickOnWebElementBySelector(FOLLOW_UP_TAB)); @@ -258,6 +335,73 @@ public EditCaseSteps( And( "I navigate to case person tab", () -> webDriverHelpers.clickOnWebElementBySelector(CASE_PERSON_TAB)); + And( + "I click on Create button in Document Templates box in Edit Case directory", + () -> webDriverHelpers.clickOnWebElementBySelector(CREATE_DOCUMENT_TEMPLATES)); + And( + "I click on checkbox to upload generated document to entity in Create Quarantine Order form in Edit Case directory", + () -> webDriverHelpers.clickOnWebElementBySelector(UPLOAD_DOCUMENT_CHECKBOX)); + When( + "I select {string} Quarantine Order in Create Quarantine Order form in Edit Case directory", + (String name) -> { + webDriverHelpers.selectFromCombobox(QUARANTINE_ORDER_COMBOBOX, name); + webDriverHelpers.waitUntilANumberOfElementsAreVisibleAndClickable(POPUPS_INPUTS, 5); + }); + When( + "I select {string} Quarantine Order in Create Quarantine Order form in Case directory", + (String name) -> { + webDriverHelpers.selectFromCombobox(QUARANTINE_ORDER_COMBOBOX, name); + }); + When( + "I check if downloaded file is correct for {string} Quarantine Order in Edit Case directory", + (String name) -> { + String uuid = apiState.getCreatedCase().getUuid(); + Path path = + Paths.get( + userDirPath + "/downloads/" + uuid.substring(0, 6).toUpperCase() + "-" + name); + assertHelpers.assertWithPoll20Second( + () -> + Assert.assertTrue( + Files.exists(path), + "Quarantine order document was not downloaded. Path used for check: " + + path.toAbsolutePath())); + }); + When( + "I check if generated document based on {string} appeared in Documents tab for API created case in Edit Case directory", + (String name) -> { + String uuid = apiState.getCreatedCase().getUuid(); + String path = uuid.substring(0, 6).toUpperCase() + "-" + name; + assertHelpers.assertWithPoll( + () -> + Assert.assertEquals( + path, webDriverHelpers.getTextFromWebElement(GENERATED_DOCUMENT_NAME)), + 120); + }); + When( + "I check if generated document based on {string} appeared in Documents tab for UI created case in Edit Case directory", + (String name) -> { + String uuid = EditCaseSteps.aCase.getUuid(); + String path = uuid.substring(0, 6).toUpperCase() + "-" + name; + assertHelpers.assertWithPoll( + () -> + Assert.assertEquals( + path, webDriverHelpers.getTextFromWebElement(GENERATED_DOCUMENT_NAME)), + 120); + }); + When( + "I delete downloaded file created from {string} Document Template", + (String name) -> { + String uuid = apiState.getCreatedCase().getUuid(); + File toDelete = + new File( + userDirPath + "/downloads/" + uuid.substring(0, 6).toUpperCase() + "-" + name); + toDelete.deleteOnExit(); + }); + And( + "I click on Create button in Create Quarantine Order form", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CREATE_QUARANTINE_ORDER_BUTTON); + }); When( "I check the created data is correctly displayed on Edit case page", @@ -281,6 +425,39 @@ public EditCaseSteps( "dateOfBirth")); }); + When( + "I check the created data for existing person is correctly displayed on Edit case page", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(UUID_INPUT); + aCase = collectCasePersonDataForExistingPerson(); + createdCase = + CreateNewCaseSteps.caze.toBuilder() + .firstName(apiState.getLastCreatedPerson().getFirstName()) + .lastName(apiState.getLastCreatedPerson().getLastName()) + .dateOfBirth( + LocalDate.of( + apiState.getLastCreatedPerson().getBirthdateYYYY(), + apiState.getLastCreatedPerson().getBirthdateMM(), + apiState.getLastCreatedPerson().getBirthdateDD())) + .build(); + + ComparisonHelper.compareEqualFieldsOfEntities( + aCase, + createdCase, + List.of( + "dateOfReport", + "disease", + "externalId", + "responsibleRegion", + "responsibleDistrict", + "responsibleCommunity", + "placeOfStay", + "placeDescription", + "firstName", + "lastName", + "dateOfBirth")); + }); + When( "I check the created data is correctly displayed on Edit case page for DE version", () -> { @@ -313,7 +490,30 @@ public EditCaseSteps( Case.builder() .investigationStatus("Investigation " + investigationStatus) .build(); // TODO: Create POJO updater class - webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + + When( + "I select German Investigation Status ([^\"]*)", + (String option) -> { + String investigationStatus = new String(); + switch (option) { + case "Done": + investigationStatus = INVESTIGATION_DONE.getNameDE(); + break; + case "Pending": + investigationStatus = INVESTIGATION_PENDING.getNameDE(); + break; + case "Discarded": + investigationStatus = INVESTIGATION_DISCARDED.getNameDE(); + break; + } + webDriverHelpers.clickWebElementByText( + INVESTIGATION_STATUS_OPTIONS, investigationStatus.toUpperCase()); + editedCase = + Case.builder() + .investigationStatus(investigationStatus) + .build(); // TODO: Create POJO updater class webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); @@ -330,6 +530,27 @@ public EditCaseSteps( TimeUnit.SECONDS.sleep(1); }); + When( + "I select German Outcome Of Case Status ([^\"]*)", + (String option) -> { + String outcomeOfCaseStatus = new String(); + switch (option) { + case "Deceased": + outcomeOfCaseStatus = DECEASED.getNameDE(); + break; + case "Recovered": + outcomeOfCaseStatus = RECOVERED.getNameDE(); + break; + case "Unknown": + outcomeOfCaseStatus = UNKNOWN.getNameDE(); + break; + } + webDriverHelpers.clickWebElementByText( + OUTCOME_OF_CASE_OPTIONS, outcomeOfCaseStatus.toUpperCase()); + editedCase = editedCase.toBuilder().outcomeOfCase(outcomeOfCaseStatus).build(); + TimeUnit.SECONDS.sleep(1); + }); + When( "I check if date of outcome filed is available", () -> webDriverHelpers.waitUntilElementIsVisibleAndClickable(DATE_OF_OUTCOME)); @@ -340,7 +561,26 @@ public EditCaseSteps( webDriverHelpers.clickWebElementByText( SEQUELAE_OPTIONS, CaseOutcome.getValueFor(option).toUpperCase()); editedCase = editedCase.toBuilder().sequelae(option).build(); - webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + + When( + "I click on the German option for ([^\"]*) in Sequelae", + (String option) -> { + String sequelaeStatus = new String(); + switch (option) { + case "Yes": + sequelaeStatus = SEQUELAE_YES.getNameDE(); + break; + case "No": + sequelaeStatus = SEQUELAE_NO.getNameDE(); + break; + case "Unknown": + sequelaeStatus = SEQUELAE_UNKNOWN.getNameDE(); + break; + } + webDriverHelpers.clickWebElementByText(SEQUELAE_OPTIONS, sequelaeStatus.toUpperCase()); + editedCase = editedCase.toBuilder().sequelae(sequelaeStatus).build(); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); @@ -390,6 +630,29 @@ public EditCaseSteps( editedCase = editedCase.toBuilder().placeOfStay(placeOfStay).build(); }); + When( + "I click on ([^\"]*) as place of stay in Case Edit tab", + (String placeOfStay) -> { + webDriverHelpers.clickWebElementByText( + PLACE_OF_STAY_OPTIONS, CaseOutcome.getValueFor(placeOfStay).toUpperCase()); + }); + + When( + "I click on ([^\"]*) as German place of stay", + (String option) -> { + String placeOfStay = new String(); + switch (option) { + case "Facility": + placeOfStay = PLACE_OF_STAY_FACILITY.getNameDE(); + break; + case "Home": + placeOfStay = PLACE_OF_STAY_HOME.getNameDE(); + break; + } + webDriverHelpers.clickWebElementByText(PLACE_OF_STAY_OPTIONS, placeOfStay.toUpperCase()); + editedCase = editedCase.toBuilder().placeOfStay(placeOfStay).build(); + }); + When( "I check if Facility Category combobox is available", () -> { @@ -418,6 +681,27 @@ public EditCaseSteps( FACILITY_HEALTH_COMBOBOX, CaseOutcome.getValueFor(facility)); editedCase = editedCase.toBuilder().facility(facility).build(); }); + + When( + "In Case Edit tab I set Facility as a ([^\"]*)", + (String facility) -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(FACILITY_TYPE_COMBOBOX); + webDriverHelpers.selectFromCombobox(FACILITY_HEALTH_COMBOBOX, facility); + }); + + When( + "I set Facility in German as a ([^\"]*)", + (String option) -> { + String facility = new String(); + switch (option) { + case "Other facility": + facility = FACILITY_OTHER.getNameDE(); + break; + } + webDriverHelpers.selectFromCombobox(FACILITY_HEALTH_COMBOBOX, facility); + editedCase = editedCase.toBuilder().facility(facility).build(); + }); + When( "I set Facility to {string} from New Entry popup", (String facility) -> { @@ -453,6 +737,31 @@ public EditCaseSteps( editedCase = editedCase.toBuilder().quarantine(option).build(); }); + When( + "I set German Quarantine ([^\"]*)", + (String option) -> { + String quarantine = new String(); + switch (option) { + case "Home": + quarantine = QUARANTINE_HOME.getNameDE(); + break; + case "Institutional": + quarantine = QUARANTINE_INSTITUTIONAL.getNameDE(); + break; + case "None": + quarantine = QUARANTINE_NONE.getNameDE(); + break; + case "Unknown": + quarantine = QUARANTINE_UNKNOWN.getNameDE(); + break; + case "Other": + quarantine = QUARANTINE_OTHER.getNameDE(); + break; + } + webDriverHelpers.selectFromCombobox(QUARANTINE_COMBOBOX, quarantine); + editedCase = editedCase.toBuilder().quarantine(quarantine).build(); + }); + When( "I set place for Quarantine as ([^\"]*)", (String option) -> { @@ -621,6 +930,26 @@ public EditCaseSteps( editedCase = editedCase.toBuilder().vaccinationStatus(vaccinationStatus).build(); }); + When( + "I set German Vaccination Status as ([^\"]*)", + (String option) -> { + String vaccinationStatus = new String(); + switch (option) { + case "vaccinated": + vaccinationStatus = VACCINATED_STATUS_VACCINATED.getNameDE(); + break; + case "unvaccinated": + vaccinationStatus = VACCINATED_STATUS_UNVACCINATED.getNameDE(); + break; + case "unknown": + vaccinationStatus = VACCINATED_STATUS_UNKNOWN.getNameDE(); + break; + } + webDriverHelpers.selectFromCombobox( + VACCINATION_STATUS_FOR_THIS_DISEASE_COMBOBOX, vaccinationStatus); + editedCase = editedCase.toBuilder().vaccinationStatus(vaccinationStatus).build(); + }); + When( "I check if the specific data is correctly displayed", () -> { @@ -737,6 +1066,14 @@ public EditCaseSteps( "I click on the Create button from Case Document Templates", () -> webDriverHelpers.clickOnWebElementBySelector(CREATE_DOCUMENT_BUTTON)); + When( + "I change the Case Classification field for {string} value", + (String caseClassificationValue) -> { + webDriverHelpers.selectFromCombobox( + CASE_CLASSIFICATION_FILTER_COMBOBOX, + CaseClassification.getCaptionValueFor(caseClassificationValue)); + }); + When( "I create and download a case document from template", () -> { @@ -746,7 +1083,7 @@ public EditCaseSteps( webDriverHelpers.waitUntilElementIsVisibleAndClickable(EXTRA_COMMENT_INPUT); fillExtraComment(aQuarantineOrder.getExtraComment()); webDriverHelpers.clickOnWebElementBySelector(CREATE_QUARANTINE_ORDER_BUTTON); - webDriverHelpers.waitUntilIdentifiedElementIsPresent(CASE_SAVED_POPUP); + // webDriverHelpers.waitUntilIdentifiedElementIsPresent(CASE_SAVED_POPUP); }); And( @@ -896,6 +1233,19 @@ public EditCaseSteps( webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); + When( + "I navigate to Event Participants tab in Edit case page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(EVENT_PARTICIPANTS_DATA_TAB); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "I navigate to Contacts tab in Edit case page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CONTACTS_DATA_TAB); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( "I click on the New Travel Entry button from Edit case page", () -> { @@ -949,6 +1299,25 @@ public EditCaseSteps( softly.assertAll(); }); + When( + "I search and chose the last case uuid created via UI in the CHOOSE CASE Contact window", + () -> { + webDriverHelpers.fillInWebElement( + SOURCE_CASE_WINDOW_CONTACT_DE, EditCaseSteps.aCase.getUuid()); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.clickOnWebElementBySelector( + SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.waitForRowToBeSelected(SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON_DE); + }); + When( "I check that case classification is set to one of the confirmed classifications in German on Edit case page", () -> { @@ -1127,6 +1496,25 @@ public Exposure collectExposureDataCase() { .build(); } + private Case collectCasePersonDataForExistingPerson() { + Case userInfo = getUserInformation(); + + return Case.builder() + .dateOfReport(getDateOfReport()) + .firstName(userInfo.getFirstName()) + .lastName(userInfo.getLastName()) + .dateOfBirth(userInfo.getDateOfBirth()) + .externalId(webDriverHelpers.getValueFromWebElement(EXTERNAL_ID_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .disease(webDriverHelpers.getValueFromWebElement(DISEASE_INPUT)) + .placeDescription(webDriverHelpers.getValueFromWebElement(PLACE_DESCRIPTION_INPUT)) + .responsibleRegion(webDriverHelpers.getValueFromWebElement(REGION_INPUT)) + .responsibleDistrict(webDriverHelpers.getValueFromWebElement(DISTRICT_INPUT)) + .responsibleCommunity(webDriverHelpers.getValueFromWebElement(COMMUNITY_INPUT)) + .placeOfStay(webDriverHelpers.getTextFromWebElement(PLACE_OF_STAY_SELECTED_VALUE)) + .build(); + } + private Case collectSpecificData() { return Case.builder() .investigationStatus( @@ -1347,7 +1735,7 @@ private void fillGeneralComment(String generalComment) { } private void selectQuarantineOrderTemplate(String templateName) { - webDriverHelpers.selectFromCombobox(EditCasePage.QUARANTINE_ORDER_COMBOBOX, templateName); + webDriverHelpers.selectFromCombobox(QUARANTINE_ORDER_COMBOBOX, templateName); } private void fillExtraComment(String extraComment) { diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditContactsSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditContactsSteps.java index 98b7d0cb90b..cfa9e051b8b 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditContactsSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EditContactsSteps.java @@ -27,10 +27,16 @@ import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.*; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.*; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.ADDITIONAL_INFORMATION_OF_THE_TYPE_OF_CONTACT_INPUT; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.CASE_ID_IN_EXTERNAL_SYSTEM_INPUT; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.CASE_OR_EVENT_INFORMATION_INPUT; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.CONTACT_CATEGORY_OPTIONS; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.DESCRIPTION_OF_HOW_CONTACT_TOOK_PLACE_INPUT; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.LAST_CONTACT_DATE; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.TYPE_OF_CONTACT_OPTIONS; +import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.CREATE_NEW_PERSON_RADIO_BUTTON; +import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.PICK_OR_CREATE_CONTACT_POPUP; +import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.PICK_OR_CREATE_PERSON_POPUP; +import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.PICK_OR_CREATE_POPUP_SAVE_BUTTON; import static org.sormas.e2etests.steps.BaseSteps.locale; import cucumber.api.java8.En; @@ -57,6 +63,7 @@ public class EditContactsSteps implements En { private final WebDriverHelpers webDriverHelpers; private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy"); + public static final DateTimeFormatter formatterDE = DateTimeFormatter.ofPattern("d.M.yyyy"); String LAST_CREATED_CASE_CONTACTS_TAB_URL; protected Contact contact; public static Contact collectedContact; @@ -80,7 +87,6 @@ public EditContactsSteps( + "/sormas-webdriver/#!cases/contacts/" + apiState.getCreatedCase().getUuid(); webDriverHelpers.accessWebSite(LAST_CREATED_CASE_CONTACTS_TAB_URL); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(NEW_CONTACT_BUTTON); }); When( @@ -127,6 +133,25 @@ public EditContactsSteps( webDriverHelpers.clickWebElementByText(IMPORT_POPUP_BUTTON, buttonName); webDriverHelpers.waitUntilElementIsVisibleAndClickable(COMMIT_BUTTON); }); + When( + "I select first existing person from the Case Contact Import popup", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(COMMIT_BUTTON); + if (webDriverHelpers.getNumberOfElements(RESULTS_IN_GRID_IMPORT_POPUP) > 1) { + webDriverHelpers.clickOnWebElementBySelector(FIRST_RESULT_IN_GRID_IMPORT_POPUP); + } + }); + When( + "I select first existing contact from the Case Contact Import popup", + () -> { + if (webDriverHelpers.isElementVisibleWithTimeout(PICK_OR_CREATE_CONTACT_POPUP, 15)) { + if (webDriverHelpers.getNumberOfElements(RESULTS_IN_GRID_IMPORT_POPUP) > 1) { + webDriverHelpers.clickOnWebElementBySelector(FIRST_RESULT_IN_GRID_IMPORT_POPUP); + } + webDriverHelpers.clickOnWebElementBySelector(COMMIT_BUTTON); + } + }); + When( "I confirm the save Case Contact Import popup", () -> { @@ -145,6 +170,7 @@ public EditContactsSteps( new File(userDirPath + "/downloads/sormas_kontakte_" + LocalDate.now() + "_.csv"); toDelete.deleteOnExit(); }); + When( "^I create a new contact from Cases Contacts tab$", () -> { @@ -179,7 +205,10 @@ public EditContactsSteps( fillLastName(contact.getLastName()); selectSex(contact.getSex()); webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); - webDriverHelpers.clickOnWebElementBySelector(CONTACT_CREATED_POPUP); + if (webDriverHelpers.isElementVisibleWithTimeout(PICK_OR_CREATE_PERSON_POPUP, 15)) { + webDriverHelpers.clickOnWebElementBySelector(CREATE_NEW_PERSON_RADIO_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(PICK_OR_CREATE_POPUP_SAVE_BUTTON); + } }); Then( @@ -378,4 +407,53 @@ private Contact getContactInformation() { .dateOfBirth(localDate) .build(); } + + private Contact getContactInformationDE() { + String contactInfo = webDriverHelpers.getTextFromWebElement(USER_INFORMATION); + String[] contactInfos = contactInfo.split(" "); + LocalDate localDate = LocalDate.parse(contactInfos[3].replace(")", ""), formatterDE); + return Contact.builder() + .firstName(contactInfos[0]) + .lastName(contactInfos[1]) + .dateOfBirth(localDate) + .build(); + } + + private Contact collectContactDataDE() { + String collectedDateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE); + String collectedLastDateOfContact = webDriverHelpers.getValueFromWebElement(LAST_CONTACT_DATE); + + LocalDate parsedDateOfReport = LocalDate.parse(collectedDateOfReport, formatterDE); + LocalDate parsedLastDateOfContact = LocalDate.parse(collectedLastDateOfContact, formatterDE); + Contact contactInfo = getContactInformationDE(); + + return Contact.builder() + .firstName(contactInfo.getFirstName()) + .lastName(contactInfo.getLastName()) + .returningTraveler( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(RETURNING_TRAVELER_OPTIONS)) + .reportDate(parsedDateOfReport) + .diseaseOfSourceCase(webDriverHelpers.getValueFromCombobox(DISEASE_COMBOBOX)) + .caseIdInExternalSystem( + webDriverHelpers.getValueFromWebElement(CASE_ID_IN_EXTERNAL_SYSTEM_INPUT)) + .dateOfLastContact(parsedLastDateOfContact) + .caseOrEventInformation( + webDriverHelpers.getValueFromWebElement(CASE_OR_EVENT_INFORMATION_INPUT)) + .responsibleRegion(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_REGION_COMBOBOX)) + .responsibleDistrict(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_DISTRICT_COMBOBOX)) + .responsibleCommunity(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX)) + .additionalInformationOnContactType( + webDriverHelpers.getValueFromWebElement( + ADDITIONAL_INFORMATION_OF_THE_TYPE_OF_CONTACT_INPUT)) + .typeOfContact( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(TYPE_OF_CONTACT_OPTIONS)) + .contactCategory( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(CONTACT_CATEGORY_OPTIONS)) + .relationshipWithCase( + webDriverHelpers.getValueFromCombobox(RELATIONSHIP_WITH_CASE_COMBOBOX)) + .descriptionOfHowContactTookPlace( + webDriverHelpers.getValueFromWebElement(DESCRIPTION_OF_HOW_CONTACT_TOOK_PLACE_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .build(); + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EpidemiologicalDataCaseSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EpidemiologicalDataCaseSteps.java index 39469f89b91..b3d0cf6a06b 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EpidemiologicalDataCaseSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/EpidemiologicalDataCaseSteps.java @@ -1,13 +1,77 @@ package org.sormas.e2etests.steps.web.application.cases; import static org.sormas.e2etests.pages.application.cases.EditCasePage.CASE_SAVED_POPUP; -import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.*; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_CONTINENT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_COUNTRY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_DESCRIPTION; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_DETAILS_KNOWN_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_DETAILS_NEW_ENTRY_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_DISCARD_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_DONE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_END_OF_ACTIVITY_INPUT; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_START_OF_ACTIVITY_INPUT; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_SUBCONTINENT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_TYPE_OF_ACTIVITY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.BLUE_ERROR_EXCLAMATION_MARK_EXPOSURE_POPUP; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.BLUE_ERROR_EXCLAMATION_MARK_EXPOSURE_POPUP_TEXT; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.CONTACTS_WITH_SOURCE_CASE_BOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.CONTACT_TO_BODY_FLUIDS_OPTONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.CONTACT_WITH_SOURCE_CASE_KNOWN; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.CONTINENT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.COUNTRY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.DISCARD_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.DONE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.END_OF_EXPOSURE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_ACTION_CANCEL; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_ACTION_CONFIRM; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_CHOOSE_CASE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_DESCRIPTION_INPUT; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_DETAILS_KNOWN_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_DETAILS_NEW_ENTRY_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_DETAILS_ROLE_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.EXPOSURE_PROBABLE_INFECTION_ENVIRONMENT_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.FACILITY_CATEGORY_POPUP_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.FACILITY_TYPE_POPUP_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.HANDLING_SAMPLES_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.INDOORS_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.LONG_FACE_TO_FACE_CONTACT_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.NEW_CONTACT_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OPEN_SAVED_ACTIVITY_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OPEN_SAVED_EXPOSURE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OTHER_PROTECTIVE_MEASURES_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OUTDOORS_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.PERCUTANEOUS_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.RESIDING_OR_TRAVELING_DETAILS_KNOWN_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.RESIDING_OR_WORKING_DETAILS_KNOWN_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.RISK_AREA_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.SAVE_BUTTON_EPIDEMIOLOGICAL_DATA; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.SHORT_DISTANCE_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.START_OF_EXPOSURE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.SUBCONTINENT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.TYPE_OF_ACTIVITY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.TYPE_OF_ACTIVITY_EXPOSURES; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.TYPE_OF_PLACE_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.WEARING_MASK_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.WEARING_PPE_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.getExposureTableData; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_WINDOW_CONTACT; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.ExposureNewEntryPage.TYPE_OF_ACTIVITY_DETAILS; +import static org.sormas.e2etests.pages.application.contacts.ExposureNewEntryPage.TYPE_OF_GATHERING_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ExposureNewEntryPage.TYPE_OF_GATHERING_DETAILS; import static org.sormas.e2etests.steps.BaseSteps.locale; +import static org.sormas.e2etests.steps.web.application.cases.FollowUpStep.faker; +import static org.sormas.e2etests.steps.web.application.contacts.ContactsLineListingSteps.DATE_FORMATTER_DE; import cucumber.api.java8.En; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; import org.sormas.e2etests.entities.pojo.web.EpidemiologicalData; @@ -19,10 +83,12 @@ import org.sormas.e2etests.enums.cases.epidemiologicalData.ActivityAsCaseType; import org.sormas.e2etests.enums.cases.epidemiologicalData.ExposureDetailsRole; import org.sormas.e2etests.enums.cases.epidemiologicalData.TypeOfActivityExposure; +import org.sormas.e2etests.enums.cases.epidemiologicalData.TypeOfGathering; import org.sormas.e2etests.enums.cases.epidemiologicalData.TypeOfPlace; import org.sormas.e2etests.envconfig.manager.EnvironmentManager; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.state.ApiState; +import org.testng.asserts.SoftAssert; public class EpidemiologicalDataCaseSteps implements En { @@ -37,9 +103,58 @@ public EpidemiologicalDataCaseSteps( WebDriverHelpers webDriverHelpers, ApiState apiState, EpidemiologicalDataService epidemiologicalDataService, - EnvironmentManager environmentManager) { + EnvironmentManager environmentManager, + SoftAssert softly) { this.webDriverHelpers = webDriverHelpers; + When( + "I set Start and End of activity by current date in Activity as Case form", + () -> { + webDriverHelpers.fillInWebElement( + START_OF_EXPOSURE_INPUT, formatter.format(LocalDate.now())); + webDriverHelpers.fillInWebElement( + END_OF_EXPOSURE_INPUT, formatter.format(LocalDate.now())); + }); + + When( + "I check that edit Activity as Case vision button is visible and clickable", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(OPEN_SAVED_ACTIVITY_BUTTON); + }); + + When( + "I set Start and End of activity by current date in Activity as Case form for DE version", + () -> { + webDriverHelpers.fillInWebElement( + START_OF_EXPOSURE_INPUT, DATE_FORMATTER_DE.format(LocalDate.now())); + webDriverHelpers.fillInWebElement( + END_OF_EXPOSURE_INPUT, DATE_FORMATTER_DE.format(LocalDate.now())); + }); + When( + "I fill Description field in Activity as Case form", + () -> { + webDriverHelpers.fillInWebElement(ACTIVITY_DESCRIPTION, faker.book().title()); + }); + + When( + "I check if created Activity as Case appears in a grid for Epidemiological data tab in Cases", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(OPEN_SAVED_ACTIVITY_BUTTON); + }); + + When( + "I tick a Probable infection environmental box in Exposure for Epidemiological data tab in Cases", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + EXPOSURE_PROBABLE_INFECTION_ENVIRONMENT_CHECKBOX); + }); + + When( + "I click on edit Activity as Case vision button", + () -> { + webDriverHelpers.clickOnWebElementBySelector(OPEN_SAVED_ACTIVITY_BUTTON); + }); + When( "I am accessing via URL the Epidemiological data tab of the created case", () -> { @@ -48,7 +163,6 @@ public EpidemiologicalDataCaseSteps( environmentManager.getEnvironmentUrlForMarket(locale) + "/sormas-webdriver/#!cases/epidata/" + uuid); - webDriverHelpers.waitForPageLoaded(); }); When( @@ -57,6 +171,12 @@ public EpidemiologicalDataCaseSteps( webDriverHelpers.clickWebElementByText(EXPOSURE_DETAILS_KNOWN_OPTIONS, option); }); + When( + "I click on Contacts with source case known with ([^\"]*) option for DE", + (String option) -> { + webDriverHelpers.clickWebElementByText(CONTACT_WITH_SOURCE_CASE_KNOWN, option); + }); + When( "I click on Activity details known with ([^\"]*) option", (String option) -> @@ -93,10 +213,80 @@ public EpidemiologicalDataCaseSteps( webDriverHelpers.clickWebElementByText(CONTACT_WITH_SOURCE_CASE_KNOWN, option); }); + When( + "I click on the NEW CONTACT button on Epidemiological Data Tab of Edit Case Page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NEW_CONTACT_BUTTON); + }); + + When( + "I select ([^\"]*) from Contacts With Source Case Known", + (String option) -> { + webDriverHelpers.clickWebElementByText(CONTACT_WITH_SOURCE_CASE_KNOWN, option); + }); + When( "I check if Contacts of Source filed is available", () -> webDriverHelpers.waitUntilElementIsVisibleAndClickable(NEW_CONTACT_BUTTON)); + When( + "I check that Contacts of Source filed is not available", + () -> { + softly.assertFalse( + webDriverHelpers.isElementVisibleWithTimeout(NEW_CONTACT_BUTTON, 2), + "Contacts With Source Case box is visible!"); + softly.assertAll(); + }); + + When( + "I check that Selected case is listed as Source Case in the CONTACTS WITH SOURCE CASE Box", + () -> { + String boxContents = + webDriverHelpers.getTextFromWebElement(CONTACTS_WITH_SOURCE_CASE_BOX); + String expectedCase = + "Source case:\n" + + apiState.getCreatedCase().getPerson().getFirstName() + + " " + + apiState.getCreatedCase().getPerson().getLastName().toUpperCase() + + " (" + + apiState.getCreatedCase().getUuid().substring(0, 6).toUpperCase(); + softly.assertTrue( + boxContents.contains(expectedCase), "The case is not correctly listed!"); + softly.assertAll(); + }); + + When( + "I click on the NEW CONTACT button in in Exposure for Epidemiological data tab in Cases", + () -> webDriverHelpers.clickOnWebElementBySelector(NEW_CONTACT_BUTTON)); + + When( + "I click on the CHOOSE CASE button in Create new contact form in Exposure for Epidemiological data tab in Cases", + () -> { + webDriverHelpers.clickOnWebElementBySelector(EXPOSURE_CHOOSE_CASE_BUTTON); + TimeUnit.SECONDS.sleep(5); + }); + When( + "I click on SAVE button in create contact form", + () -> webDriverHelpers.clickOnWebElementBySelector(ACTIVITY_DONE_BUTTON)); + + When( + "I search and chose the last case uuid created via API in the CHOOSE CASE Contact window", + () -> { + webDriverHelpers.fillInWebElement( + SOURCE_CASE_WINDOW_CONTACT, apiState.getCreatedCase().getUuid()); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.clickOnWebElementBySelector( + SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.waitForRowToBeSelected(SOURCE_CASE_CONTACT_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON); + }); + When( "I am checking if options in checkbox are displayed correctly", () -> { @@ -112,6 +302,108 @@ public EpidemiologicalDataCaseSteps( "contactsWithSourceCaseKnown")); }); + When( + "I click on New Entry in Exposure Details Known in Cases directory", + () -> { + webDriverHelpers.clickOnWebElementBySelector(EXPOSURE_DETAILS_NEW_ENTRY_BUTTON); + }); + When( + "I select from Combobox all options in Type of activity field in Exposure for Epidemiological data tab for Cases", + () -> { + String[] ListOfTypeOfActivityExposure = + TypeOfActivityExposure.ListOfTypeOfActivityExposure; + for (String value : ListOfTypeOfActivityExposure) { + webDriverHelpers.selectFromCombobox(TYPE_OF_ACTIVITY_COMBOBOX, value); + } + }); + + When( + "I select from Combobox all options in Type of activity field in Exposure for Epidemiological data tab for Cases for DE version", + () -> { + String[] ListOfTypeOfActivityExposure = + TypeOfActivityExposure.ListOfTypeOfActivityExposureDE; + for (String value : ListOfTypeOfActivityExposure) { + webDriverHelpers.selectFromCombobox(TYPE_OF_ACTIVITY_COMBOBOX, value); + } + }); + When( + "I select from Combobox all Type of gathering in Exposure for Epidemiological data tab in Cases", + () -> { + for (TypeOfGathering value : TypeOfGathering.values()) { + if (value != TypeOfGathering.valueOf("OTHER")) { + webDriverHelpers.selectFromCombobox(TYPE_OF_GATHERING_COMBOBOX, value.toString()); + } + } + }); + + When( + "I select from Combobox all Type of gathering in Exposure for Epidemiological data tab in Cases for DE version", + () -> { + for (TypeOfGathering value : TypeOfGathering.values()) { + if (value != TypeOfGathering.valueOf("OTHER")) { + webDriverHelpers.selectFromCombobox( + TYPE_OF_GATHERING_COMBOBOX, TypeOfGathering.getNameForDE(value.toString())); + } + } + }); + + When( + "I select from Combobox all options in Type of activity field in Activity as Case for Epidemiological data tab for Cases", + () -> { + for (ActivityAsCaseType value : ActivityAsCaseType.values()) { + webDriverHelpers.selectFromCombobox( + ACTIVITY_TYPE_OF_ACTIVITY_COMBOBOX, + ActivityAsCaseType.getForName(value.getActivityCase())); + } + }); + + When( + "I select a type of gathering ([^\"]*) option from Combobox in Exposure for Epidemiological data tab in Cases", + (String option) -> { + webDriverHelpers.selectFromCombobox(TYPE_OF_GATHERING_COMBOBOX, option); + }); + When( + "I fill a type of gathering details in Exposure for Epidemiological data tab in Cases", + () -> { + webDriverHelpers.fillInWebElement(TYPE_OF_GATHERING_DETAILS, faker.chuckNorris().fact()); + }); + When( + "I click on save button in Exposure for Epidemiological data tab in Cases", + () -> { + webDriverHelpers.clickOnWebElementBySelector(DONE_BUTTON); + }); + + When( + "I click on save button in Activity as Case data tab in Cases", + () -> { + webDriverHelpers.clickOnWebElementBySelector(DONE_BUTTON); + }); + + When( + "I click on {string} option to close Exposure as the probable infection environment case Popup", + (String option) -> { + switch (option) { + case "NO": + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EXPOSURE_ACTION_CANCEL); + webDriverHelpers.clickOnWebElementBySelector(EXPOSURE_ACTION_CANCEL); + break; + case "YES": + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EXPOSURE_ACTION_CONFIRM); + webDriverHelpers.clickOnWebElementBySelector(EXPOSURE_ACTION_CONFIRM); + break; + } + }); + When( + "I select a Type of activity ([^\"]*) option in Exposure for Epidemiological data tab in Cases", + (String option) -> { + webDriverHelpers.selectFromCombobox(TYPE_OF_ACTIVITY_COMBOBOX, option); + }); + When( + "I fill a Type of activity details field in Exposure for Epidemiological data tab in Cases", + () -> { + webDriverHelpers.fillInWebElement(TYPE_OF_ACTIVITY_DETAILS, faker.book().title()); + }); + Then( "I create a new Exposure for Epidemiological data tab and fill all the data", () -> { @@ -125,7 +417,6 @@ public EpidemiologicalDataCaseSteps( .getCreatedCase() .getDisease() .equalsIgnoreCase(DiseasesValues.CORONAVIRUS.getDiseaseName())); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickWebElementByText( EXPOSURE_DETAILS_KNOWN_OPTIONS, epidemiologicalData.getExposureDetailsKnown().toString()); @@ -197,6 +488,97 @@ public EpidemiologicalDataCaseSteps( ComparisonHelper.compareEqualEntities(generatedActivityData, actualActivityData); webDriverHelpers.clickOnWebElementBySelector(ACTIVITY_DISCARD_BUTTON); }); + + Then( + "I create a new Exposure for Epidemiological data", + () -> { + epidemiologicalData = + epidemiologicalDataService.buildGeneratedEpidemiologicalData( + apiState + .getCreatedCase() + .getDisease() + .equalsIgnoreCase(DiseasesValues.CORONAVIRUS.getDiseaseName())); + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.clickWebElementByText( + EXPOSURE_DETAILS_KNOWN_OPTIONS, + epidemiologicalData.getExposureDetailsKnown().toString()); + webDriverHelpers.clickOnWebElementBySelector(EXPOSURE_DETAILS_NEW_ENTRY_BUTTON); + }); + + Then( + "I set Type of place as a ([^\"]*) in a new Exposure for Epidemiological data", + (String facility) -> { + webDriverHelpers.scrollToElement(TYPE_OF_PLACE_COMBOBOX); + webDriverHelpers.selectFromCombobox(TYPE_OF_PLACE_COMBOBOX, facility); + }); + + Then( + "I set Facility Category as a ([^\"]*) in a new Exposure for Epidemiological data", + (String facilityCategory) -> { + webDriverHelpers.scrollToElement(FACILITY_CATEGORY_POPUP_COMBOBOX); + webDriverHelpers.selectFromCombobox(FACILITY_CATEGORY_POPUP_COMBOBOX, facilityCategory); + }); + + Then( + "I set Facility Type as a ([^\"]*) in a new Exposure for Epidemiological data", + (String facilityType) -> { + webDriverHelpers.scrollToElement(FACILITY_TYPE_POPUP_COMBOBOX); + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_POPUP_COMBOBOX, facilityType); + }); + + When( + "I check if Facility field has blue exclamation mark and displays correct message", + () -> { + webDriverHelpers.hoverToElement(BLUE_ERROR_EXCLAMATION_MARK_EXPOSURE_POPUP); + String displayedText = + webDriverHelpers.getTextFromWebElement( + BLUE_ERROR_EXCLAMATION_MARK_EXPOSURE_POPUP_TEXT); + softly.assertEquals( + "Please define a district in order to select a facility.", + displayedText, + "Message is incorrect"); + softly.assertAll(); + }); + + When( + "I check if data is correctly displayed in Exposures table in Epidemiological data tab", + () -> { + List values = new ArrayList<>(); + values.add(webDriverHelpers.getTextFromPresentWebElement(TYPE_OF_ACTIVITY_EXPOSURES)); + for (int i = 3; i <= 8; i++) { + values.add(webDriverHelpers.getTextFromPresentWebElement(getExposureTableData(i))); + } + Exposure generatedExposureData = + epidemiologicalData.getExposures().stream() + .findFirst() + .orElse(Exposure.builder().build()); + String date[] = values.get(3).split("\\s+"); + softly.assertEquals( + generatedExposureData.getTypeOfActivity().toString(), + values.get(0).toUpperCase(), + "Activities are not equal"); + softly.assertEquals( + generatedExposureData.getExposureDetailsRole().toString().replace("_", " "), + values.get(1).toUpperCase(), + "Exposure descriptions are not equal"); + softly.assertEquals( + generatedExposureData.getTypeOfPlace().toString(), + values.get(2).toUpperCase(), + "Type of places are not equal"); + softly.assertEquals( + formatter.format(generatedExposureData.getStartOfExposure()), + date[0], + "Start of exposure dates are not equal"); + softly.assertEquals( + formatter.format(generatedExposureData.getEndOfExposure()), + date[4], + "End of exposure dates are not equal"); + softly.assertEquals( + generatedExposureData.getExposureDescription(), + values.get(5), + "Exposure descriptions are not equal"); + softly.assertAll(); + }); } private void fillExposure(Exposure exposureData) { diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/HospitalizationTabSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/HospitalizationTabSteps.java index 5cf151e2fbc..c50f12fcfc9 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/HospitalizationTabSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/HospitalizationTabSteps.java @@ -1,21 +1,27 @@ package org.sormas.e2etests.steps.web.application.cases; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.FACILITY_HEALTH_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PLACE_OF_STAY_SELECTED_VALUE; import static org.sormas.e2etests.pages.application.cases.HospitalizationTabPage.*; +import static org.sormas.e2etests.pages.application.cases.SymptomsTabPage.CASE_TAB; import static org.sormas.e2etests.steps.BaseSteps.locale; import cucumber.api.java8.En; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.Locale; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import lombok.SneakyThrows; import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; +import org.sormas.e2etests.entities.pojo.web.Case; import org.sormas.e2etests.entities.pojo.web.Hospitalization; import org.sormas.e2etests.entities.services.HospitalizationService; import org.sormas.e2etests.envconfig.manager.EnvironmentManager; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.pages.application.NavBarPage; import org.sormas.e2etests.state.ApiState; +import org.testng.asserts.SoftAssert; public class HospitalizationTabSteps implements En { private final WebDriverHelpers webDriverHelpers; @@ -27,6 +33,7 @@ public HospitalizationTabSteps( WebDriverHelpers webDriverHelpers, HospitalizationService hospitalizationService, ApiState apiState, + SoftAssert softly, EnvironmentManager environmentManager) { this.webDriverHelpers = webDriverHelpers; @@ -97,6 +104,41 @@ public HospitalizationTabSteps( () -> { webDriverHelpers.waitUntilElementIsVisibleAndClickable(BLUE_ERROR_EXCLAMATION_MARK); }); + + When( + "I check if Place of stay in hospital popup is displayed", + () -> { + webDriverHelpers.isElementVisibleWithTimeout(PLACE_OF_STAY_IN_HOSPITAL_POPUP, 10); + }); + + When( + "I choose Facility in Place of stay in hospital popup in Case Hospitalization as ([^\"]*)", + (String facility) -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(FACILITY_POPUP_CHECKBOX); + webDriverHelpers.selectFromCombobox(FACILITY_POPUP_CHECKBOX, facility); + }); + + When( + "I save the data in Place of stay in hospital popup", + () -> + webDriverHelpers.clickOnWebElementBySelector( + PLACE_OF_STAY_IN_HOSPITAL_POPUP_SAVE_BUTTON)); + + When( + "From hospitalization tab I click on the Case tab button", + () -> webDriverHelpers.clickOnWebElementBySelector(CASE_TAB)); + + When( + "I check if place of stay data was updated in the Case edit tab with ([^\"]*)", + (String facility) -> { + Case collectedData = collectPlaceOfStayData(); + softly.assertEquals( + collectedData.getPlaceOfStay().toLowerCase(Locale.ROOT), + "facility", + "facility types are not equal"); + softly.assertEquals(collectedData.getFacility(), facility, "facilities are not equal"); + softly.assertAll(); + }); } @SneakyThrows @@ -189,4 +231,11 @@ private Hospitalization collectHospitalizationData() { LEFT_AGAINST_MEDICAL_ADVICE_OPTIONS)) .build(); } + + private Case collectPlaceOfStayData() { + return Case.builder() + .placeOfStay(webDriverHelpers.getTextFromWebElement(PLACE_OF_STAY_SELECTED_VALUE)) + .facility(webDriverHelpers.getValueFromCombobox(FACILITY_HEALTH_COMBOBOX)) + .build(); + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/SymptomsTabSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/SymptomsTabSteps.java index 1d17c4ca82f..d576f4bb9db 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/SymptomsTabSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/cases/SymptomsTabSteps.java @@ -18,6 +18,10 @@ package org.sormas.e2etests.steps.web.application.cases; +import static org.sormas.e2etests.enums.YesNoUnknownOptions.NO; +import static org.sormas.e2etests.enums.YesNoUnknownOptions.UNKNOWN; +import static org.sormas.e2etests.enums.YesNoUnknownOptions.YES; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.SAVE_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.UUID_INPUT; import static org.sormas.e2etests.pages.application.cases.SymptomsTabPage.*; import static org.sormas.e2etests.steps.BaseSteps.locale; @@ -56,6 +60,13 @@ public SymptomsTabSteps( ComparisonHelper.compareEqualEntities(actualSymptoms, symptoms); }); + When( + "I check the created data that describes Clinical signs and Symptoms are correctly displayed for No or UNKNOWN option in Symptoms tab page", + () -> { + Symptoms actualSymptoms = collectSymptomsDataForNoOption(); + ComparisonHelper.compareEqualEntities(actualSymptoms, symptoms); + }); + When( "I am accessing the Symptoms tab using of created case via api", () -> { @@ -67,6 +78,18 @@ public SymptomsTabSteps( environmentManager.getEnvironmentUrlForMarket(locale) + caseLinkPath + uuid); }); + When( + "I change Other symptoms to {string} option", + (String option) -> { + selectOtherNonHemorrhagicSymptoms(option); + }); + + When( + "^I click on save case button in Symptoms tab$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + }); + When( "I change all symptoms fields and save", () -> { @@ -101,6 +124,46 @@ public SymptomsTabSteps( webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); }); + When( + "I change all symptoms fields to {string} option field and save", + (String option) -> { + switch (option) { + case "NO": + symptoms = symptomService.buildEditGeneratedSymptomsWithNoOptions(); + FillSymptomsDataForNoUnknown(symptoms); + selectOtherNonHemorrhagicSymptoms(NO.toString()); + fillSymptomsComments(symptoms.getSymptomsComments()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + break; + case "NO_AND_OTHER_SYMPTOMS_TO_YES": + symptoms = symptomService.buildEditGeneratedSymptomsWithNoOptions(); + FillSymptomsDataForNoUnknown(symptoms); + selectOtherNonHemorrhagicSymptoms(YES.toString()); + fillOtherNonHemorrhagicSymptoms(symptoms.getSymptomsComments()); + fillSymptomsComments(symptoms.getSymptomsComments()); + selectFistSymptom("Other clinical symptoms"); + fillDateOfSymptom(LocalDate.now().minusDays(2)); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + break; + case "UNKNOWN": + symptoms = symptomService.buildEditGeneratedSymptomsWithUnknownOptions(); + FillSymptomsDataForNoUnknown(symptoms); + selectOtherNonHemorrhagicSymptoms(UNKNOWN.toString()); + fillSymptomsComments(symptoms.getSymptomsComments()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + break; + case "YES": + symptoms = symptomService.buildEditGeneratedSymptoms(); + FillSymptomsData(symptoms); + fillOtherNonHemorrhagicSymptoms(symptoms.getSymptomsComments()); + fillSymptomsComments(symptoms.getSymptomsComments()); + selectFistSymptom(symptoms.getFirstSymptom()); + fillDateOfSymptom(symptoms.getDateOfSymptom()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + break; + } + }); + // TODO refactor this to be provide the checkbox and select any option not only yes And( "I check Yes Option for Soar Throat on Symptoms tab page", @@ -115,19 +178,70 @@ public SymptomsTabSteps( }); Then( - "From Symptoms Tab I click on Case tab", + "I click on Case tab from Symptoms tab directory", () -> { webDriverHelpers.clickOnWebElementBySelector(CASE_TAB); webDriverHelpers.waitUntilIdentifiedElementIsPresent(UUID_INPUT); }); And( - "From Symptoms Tab I click on Clear All button", + "I click on Clear all button From Symptoms tab", () -> { webDriverHelpers.clickOnWebElementBySelector(CLEAR_ALL_BUTTON); }); } + private void FillSymptomsData(Symptoms symptoms) { + selectMaximumBodyTemperatureInCCombobox(symptoms.getMaximumBodyTemperatureInC()); + selectSourceOfBodyTemperature(symptoms.getSourceOfBodyTemperature()); + selectChillsOrSweats(symptoms.getChillsOrSweats()); + selectHeadache(symptoms.getHeadache()); + selectFeelingIll(symptoms.getFeelingIll()); + selectMusclePain(symptoms.getMusclePain()); + selectFever(symptoms.getFever()); + selectShivering(symptoms.getShivering()); + selectAcuteRespiratoryDistressSyndrome(symptoms.getAcuteRespiratoryDistressSyndrome()); + selectOxygenSaturationLower94(symptoms.getOxygenSaturationLower94()); + selectCough(symptoms.getCough()); + selectPneumoniaClinicalOrRadiologic(symptoms.getPneumoniaClinicalOrRadiologic()); + selectDifficultyBreathing(symptoms.getDifficultyBreathing()); + selectRapidBreathing(symptoms.getRapidBreathing()); + selectRespiratoryDiseaseVentilation(symptoms.getRespiratoryDiseaseVentilation()); + selectRunnyNose(symptoms.getRunnyNose()); + selectSoreThroat(symptoms.getSoreThroat()); + selectFastHeartRate(symptoms.getFastHeartRate()); + selectDiarrhea(symptoms.getDiarrhea()); + selectNausea(symptoms.getNausea()); + selectLossOfSmell(symptoms.getLossOfSmell()); + selectLossOfTaste(symptoms.getLossOfTaste()); + selectOtherNonHemorrhagicSymptoms(symptoms.getOtherNonHemorrhagicSymptoms()); + } + + private void FillSymptomsDataForNoUnknown(Symptoms symptoms) { + selectMaximumBodyTemperatureInCCombobox(symptoms.getMaximumBodyTemperatureInC()); + selectSourceOfBodyTemperature(symptoms.getSourceOfBodyTemperature()); + selectChillsOrSweats(symptoms.getChillsOrSweats()); + selectHeadache(symptoms.getHeadache()); + selectFeelingIll(symptoms.getFeelingIll()); + selectMusclePain(symptoms.getMusclePain()); + selectFever(symptoms.getFever()); + selectShivering(symptoms.getShivering()); + selectAcuteRespiratoryDistressSyndrome(symptoms.getAcuteRespiratoryDistressSyndrome()); + selectOxygenSaturationLower94(symptoms.getOxygenSaturationLower94()); + selectCough(symptoms.getCough()); + selectPneumoniaClinicalOrRadiologic(symptoms.getPneumoniaClinicalOrRadiologic()); + selectDifficultyBreathing(symptoms.getDifficultyBreathing()); + selectRapidBreathing(symptoms.getRapidBreathing()); + selectRespiratoryDiseaseVentilation(symptoms.getRespiratoryDiseaseVentilation()); + selectRunnyNose(symptoms.getRunnyNose()); + selectSoreThroat(symptoms.getSoreThroat()); + selectFastHeartRate(symptoms.getFastHeartRate()); + selectDiarrhea(symptoms.getDiarrhea()); + selectNausea(symptoms.getNausea()); + selectLossOfSmell(symptoms.getLossOfSmell()); + selectLossOfTaste(symptoms.getLossOfTaste()); + } + private Symptoms collectSymptomsData() { return Symptoms.builder() @@ -182,6 +296,54 @@ private Symptoms collectSymptomsData() { .build(); } + private Symptoms collectSymptomsDataForNoOption() { + + return Symptoms.builder() + .maximumBodyTemperatureInC( + webDriverHelpers + .getValueFromCombobox(MAXIMUM_BODY_TEMPERATURE_IN_C_COMBOBOX) + .substring(0, 4)) + .sourceOfBodyTemperature( + webDriverHelpers.getValueFromCombobox(SOURCE_OF_BODY_TEMPERATURE_COMBOBOX)) + .chillsOrSweats( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(CHILLS_OR_SWEATS_OPTIONS)) + .headache(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(HEADACHE_OPTIONS)) + .feelingIll(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(FEELING_ILL_OPTIONS)) + .musclePain(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(MUSCLE_PAIN_OPTIONS)) + .fever(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(FEVER_OPTIONS)) + .shivering(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(SHIVERING_OPTIONS)) + .acuteRespiratoryDistressSyndrome( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup( + ACUTE_RESPIRATORY_DISTRESS_SYNDROME_OPTIONS)) + .oxygenSaturationLower94( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup( + OXYGEN_SATURATION_LOWER_94_OPTIONS)) + .cough(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(COUGH_OPTIONS)) + .pneumoniaClinicalOrRadiologic( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup( + PNEUMONIA_CLINICAL_OR_RADIOLOGIC_OPTIONS)) + .difficultyBreathing( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup( + DIFFICULTY_BREATHING_OPTIONS)) + .rapidBreathing( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(RAPID_BREATHING_OPTIONS)) + .respiratoryDiseaseVentilation( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup( + RESPIRATORY_DISEASE_VENTILATION_OPTIONS)) + .runnyNose(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(RUNNY_NOSE_OPTIONS)) + .soreThroat(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(SORE_THROAT_OPTIONS)) + .fastHeartRate( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(FAST_HEART_RATE_OPTIONS)) + .diarrhea(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(DIARRHEA_OPTIONS)) + .nausea(webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(NAUSEA_OPTIONS)) + .lossOfSmell( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(LOSS_OF_SMELL_OPTIONS)) + .lossOfTaste( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(LOSS_OF_TASTE_OPTIONS)) + .symptomsComments(webDriverHelpers.getValueFromWebElement(SYMPTOMS_COMMENTS_INPUT)) + .build(); + } + private LocalDate getDateOfSymptomOnset() { String dateOfReport = webDriverHelpers.getValueFromWebElement(DATE_OF_SYMPTOM_INPUT); return LocalDate.parse(dateOfReport, DATE_FORMATTER); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/CommunitiesSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/CommunitiesSteps.java new file mode 100644 index 00000000000..4e1bdbdf0dd --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/CommunitiesSteps.java @@ -0,0 +1,355 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.steps.web.application.configuration; + +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.NAME_UUID_EPID_NUMBER_LIKE_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.CASE_ORIGIN_OPTIONS; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DATE_OF_REPORT_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DISEASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.FIRST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.LAST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PLACE_DESCRIPTION_INPUT; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PLACE_OF_STAY; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.RESPONSIBLE_COMMUNITY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.RESPONSIBLE_DISTRICT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.RESPONSIBLE_REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.SAVE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CASE_SAVED_POPUP; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISEASE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISTRICT_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.EXTERNAL_ID_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PLACE_OF_STAY_SELECTED_VALUE; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REGION_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REPORT_DATE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.USER_INFORMATION; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.ARCHIVE_COMMUNITY_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.COMMUNITIES_NEW_ENTRY_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.COMMUNITY_FILTER_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CONFIRM_ARCHIVING_COMMUNITY_TEXT; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CONFIRM_ARCHIVING_YES_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CONFIRM_DEARCHIVING_COMMUNITY_TEXT; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CREATE_NEW_ENTRY_COMMUNITIES_DISTRICT_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CREATE_NEW_ENTRY_COMMUNITIES_NAME_INPUT; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CREATE_NEW_ENTRY_COMMUNITIES_REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.DEARCHIVE_COMMUNITY_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.EDIT_COMMUNITY_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.RESET_FILTERS_COMMUNITIES_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.SAVE_NEW_ENTRY_COMMUNITIES; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.SEARCH_COMMUNITY_INPUT; +import static org.sormas.e2etests.pages.application.configuration.ConfigurationTabsPage.CONFIGURATION_COMMUNITIES_TAB; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SEX_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; + +import com.google.inject.Inject; +import cucumber.api.java8.En; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.TextStyle; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; +import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; +import org.sormas.e2etests.entities.pojo.web.Case; +import org.sormas.e2etests.entities.pojo.web.Communities; +import org.sormas.e2etests.entities.services.CaseService; +import org.sormas.e2etests.entities.services.CommunitiesService; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.pages.application.cases.CreateNewCasePage; +import org.sormas.e2etests.pages.application.cases.EditCasePage; +import org.testng.asserts.SoftAssert; + +public class CommunitiesSteps implements En { + + private final WebDriverHelpers webDriverHelpers; + protected Communities communities; + protected static Case caze; + protected static Case collectedCase; + public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("M/d/yyyy"); + + @Inject + public CommunitiesSteps( + WebDriverHelpers webDriverHelpers, + CommunitiesService communitiesService, + CaseService caseService, + SoftAssert softly) { + this.webDriverHelpers = webDriverHelpers; + + When( + "I click on Communities button in Configuration tab", + () -> webDriverHelpers.clickOnWebElementBySelector(CONFIGURATION_COMMUNITIES_TAB)); + + When( + "I click on New Entry button in Communities tab in Configuration", + () -> webDriverHelpers.clickOnWebElementBySelector(COMMUNITIES_NEW_ENTRY_BUTTON)); + + When( + "I fill new community with specific data", + () -> { + communities = communitiesService.buildSpecificCommunity(); + fillCommunityName(communities.getCommunityName()); + selectCommunityRegion(communities.getRegion()); + selectCommunityDistrict(communities.getDistrict()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_NEW_ENTRY_COMMUNITIES); + }); + + When( + "I create new case with created community", + () -> { + caze = caseService.buildGeneratedCase(); + fillSpecificCaseFields(caze, communities); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EditCasePage.REPORT_DATE_INPUT); + webDriverHelpers.clickOnWebElementBySelector(CASE_SAVED_POPUP); + }); + + When( + "I check if created case with specific community is created correctly", + () -> { + collectedCase = collectCasePersonData(); + ComparisonHelper.compareEqualFieldsOfEntities( + caze, + collectedCase, + List.of( + "dateOfReport", + "disease", + "placeOfStay", + "placeDescription", + "firstName", + "lastName", + "dateOfBirth")); + softly.assertEquals( + collectedCase.getResponsibleRegion(), + communities.getRegion(), + "Districts are not equal"); + softly.assertEquals( + collectedCase.getResponsibleDistrict(), + communities.getDistrict(), + "Regions are not equal"); + softly.assertEquals( + collectedCase.getResponsibleCommunity(), + communities.getCommunityName(), + "Communities are not equal"); + softly.assertAll(); + }); + + When( + "I filter by last created community", + () -> { + webDriverHelpers.fillAndSubmitInWebElement( + SEARCH_COMMUNITY_INPUT, communities.getCommunityName()); + TimeUnit.SECONDS.sleep(2); // wait for filter + webDriverHelpers.waitUntilElementIsVisibleAndClickable(RESET_FILTERS_COMMUNITIES_BUTTON); + }); + + When( + "I click on edit button for filtered community", + () -> webDriverHelpers.clickOnWebElementBySelector(EDIT_COMMUNITY_BUTTON)); + + When( + "I archive chosen community", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CREATE_NEW_ENTRY_COMMUNITIES_NAME_INPUT); + webDriverHelpers.clickOnWebElementBySelector(ARCHIVE_COMMUNITY_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(CONFIRM_ARCHIVING_COMMUNITY_TEXT); + webDriverHelpers.clickOnWebElementBySelector(CONFIRM_ARCHIVING_YES_BUTTON); + }); + + When( + "I filter last created Case by external ID", + () -> { + webDriverHelpers.fillAndSubmitInWebElement( + NAME_UUID_EPID_NUMBER_LIKE_INPUT, caze.getExternalId()); + TimeUnit.SECONDS.sleep(2); // wait for filter + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + + When( + "I check if community chosen in case is changed to inactive", + () -> { + softly.assertEquals( + webDriverHelpers.getValueFromWebElement(COMMUNITY_INPUT), + communities.getCommunityName() + " (Inactive)", + "Community is not inactive"); + softly.assertAll(); + }); + + When( + "I clear Community from Responsible Community in Case Edit Tab", + () -> webDriverHelpers.selectFromCombobox(COMMUNITY_COMBOBOX, " ")); + + When( + "I check if archived community is unavailable in Case Edit Tab", + () -> { + softly.assertFalse( + webDriverHelpers.checkIfElementExistsInCombobox( + COMMUNITY_COMBOBOX, communities.getCommunityName())); + softly.assertAll(); + }); + + When( + "I filter Communities by ([^\"]*)", + (String option) -> { + webDriverHelpers.selectFromCombobox(COMMUNITY_FILTER_COMBOBOX, option); + TimeUnit.SECONDS.sleep(2); // wait for filter + }); + + When( + "I de-archive chosen community", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CREATE_NEW_ENTRY_COMMUNITIES_NAME_INPUT); + webDriverHelpers.clickOnWebElementBySelector(DEARCHIVE_COMMUNITY_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CONFIRM_DEARCHIVING_COMMUNITY_TEXT); + webDriverHelpers.clickOnWebElementBySelector(CONFIRM_ARCHIVING_YES_BUTTON); + }); + + When( + "I set last created community in Responsible Community in Case Edit tab", + () -> + webDriverHelpers.selectFromCombobox( + COMMUNITY_COMBOBOX, communities.getCommunityName())); + } + + private void fillSpecificCaseFields(Case caze, Communities communities) { + selectCaseOrigin(caze.getCaseOrigin()); + fillDisease(caze.getDisease()); + fillExternalId(caze.getExternalId()); + selectResponsibleRegion(communities.getRegion()); + selectResponsibleDistrict(communities.getDistrict()); + selectResponsibleCommunity(communities.getCommunityName()); + selectPlaceOfStay(caze.getPlaceOfStay()); + fillFirstName(caze.getFirstName()); + fillLastName(caze.getLastName()); + fillDateOfBirth(caze.getDateOfBirth(), Locale.ENGLISH); + selectSex(caze.getSex()); + fillDateOfReport(caze.getDateOfReport(), Locale.ENGLISH); + fillPlaceDescription(caze.getPlaceDescription()); + } + + private Case collectCasePersonData() { + Case userInfo = getUserInformation(); + + return Case.builder() + .dateOfReport(getDateOfReport()) + .firstName(userInfo.getFirstName()) + .lastName(userInfo.getLastName()) + .dateOfBirth(userInfo.getDateOfBirth()) + .externalId(webDriverHelpers.getValueFromWebElement(EXTERNAL_ID_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .disease(webDriverHelpers.getValueFromWebElement(DISEASE_INPUT)) + .responsibleRegion(webDriverHelpers.getValueFromWebElement(REGION_INPUT)) + .responsibleDistrict(webDriverHelpers.getValueFromWebElement(DISTRICT_INPUT)) + .responsibleCommunity(webDriverHelpers.getValueFromWebElement(COMMUNITY_INPUT)) + .placeOfStay(webDriverHelpers.getTextFromWebElement(PLACE_OF_STAY_SELECTED_VALUE)) + .placeDescription( + webDriverHelpers.getValueFromWebElement(EditCasePage.PLACE_DESCRIPTION_INPUT)) + .build(); + } + + private Case getUserInformation() { + String userInfo = webDriverHelpers.getTextFromWebElement(USER_INFORMATION); + String[] userInfos = userInfo.split(" "); + LocalDate localDate = LocalDate.parse(userInfos[3].replace(")", ""), DATE_FORMATTER); + return Case.builder() + .firstName(userInfos[0]) + .lastName(userInfos[1]) + .dateOfBirth(localDate) + .build(); + } + + public void fillCommunityName(String communityName) { + webDriverHelpers.fillInWebElement(CREATE_NEW_ENTRY_COMMUNITIES_NAME_INPUT, communityName); + } + + private void selectCommunityRegion(String region) { + webDriverHelpers.selectFromCombobox(CREATE_NEW_ENTRY_COMMUNITIES_REGION_COMBOBOX, region); + } + + private void selectCommunityDistrict(String district) { + webDriverHelpers.selectFromCombobox(CREATE_NEW_ENTRY_COMMUNITIES_DISTRICT_COMBOBOX, district); + } + + private LocalDate getDateOfReport() { + String dateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE_INPUT); + return LocalDate.parse(dateOfReport, DATE_FORMATTER); + } + + private void selectCaseOrigin(String caseOrigin) { + webDriverHelpers.clickWebElementByText(CASE_ORIGIN_OPTIONS, caseOrigin); + } + + private void fillDateOfReport(LocalDate date, Locale locale) { + DateTimeFormatter formatter; + if (locale.equals(Locale.GERMAN)) formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + else formatter = DateTimeFormatter.ofPattern("M/d/yyyy"); + webDriverHelpers.fillInWebElement(DATE_OF_REPORT_INPUT, formatter.format(date)); + } + + private void fillDateOfBirth(LocalDate localDate, Locale locale) { + webDriverHelpers.selectFromCombobox( + CreateNewCasePage.DATE_OF_BIRTH_YEAR_COMBOBOX, String.valueOf(localDate.getYear())); + webDriverHelpers.selectFromCombobox( + CreateNewCasePage.DATE_OF_BIRTH_MONTH_COMBOBOX, + localDate.getMonth().getDisplayName(TextStyle.FULL, locale)); + webDriverHelpers.selectFromCombobox( + CreateNewCasePage.DATE_OF_BIRTH_DAY_COMBOBOX, String.valueOf(localDate.getDayOfMonth())); + } + + private void fillDisease(String disease) { + webDriverHelpers.selectFromCombobox(DISEASE_COMBOBOX, disease); + } + + private void selectSex(String sex) { + webDriverHelpers.selectFromCombobox(SEX_COMBOBOX, sex); + } + + private void selectResponsibleRegion(String selectResponsibleRegion) { + webDriverHelpers.selectFromCombobox(RESPONSIBLE_REGION_COMBOBOX, selectResponsibleRegion); + } + + private void selectResponsibleDistrict(String responsibleDistrict) { + webDriverHelpers.selectFromCombobox(RESPONSIBLE_DISTRICT_COMBOBOX, responsibleDistrict); + } + + private void selectResponsibleCommunity(String responsibleCommunity) { + webDriverHelpers.selectFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX, responsibleCommunity); + } + + private void selectPlaceOfStay(String placeOfStay) { + webDriverHelpers.clickWebElementByText(PLACE_OF_STAY, placeOfStay); + } + + private void fillPlaceDescription(String placeDescription) { + webDriverHelpers.fillInWebElement(PLACE_DESCRIPTION_INPUT, placeDescription); + } + + private void fillFirstName(String firstName) { + webDriverHelpers.fillInWebElement(FIRST_NAME_INPUT, firstName); + } + + private void fillLastName(String lastName) { + webDriverHelpers.fillInWebElement(LAST_NAME_INPUT, lastName); + } + + private void fillExternalId(String externalId) { + webDriverHelpers.fillInWebElement(EXTERNAL_ID_INPUT, externalId); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/DistrictsSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/DistrictsSteps.java new file mode 100644 index 00000000000..45b68327d37 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/DistrictsSteps.java @@ -0,0 +1,342 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.steps.web.application.configuration; + +import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISEASE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISTRICT_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISTRICT_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.EXTERNAL_ID_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REGION_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.REPORT_DATE_INPUT; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.USER_INFORMATION; +import static org.sormas.e2etests.pages.application.configuration.CommunitiesTabPage.CONFIRM_ARCHIVING_YES_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.ConfigurationTabsPage.CONFIGURATION_DISTRICTS_TAB; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.ARCHIVE_DISTRICT_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.CONFIRM_ARCHIVING_DISTRICT_TEXT; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.CREATE_NEW_ENTRY_DISTRICTS_EPID_CODE_INPUT; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.CREATE_NEW_ENTRY_DISTRICTS_NAME_INPUT; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.CREATE_NEW_ENTRY_DISTRICTS_REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.DISTRICTS_NEW_ENTRY_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.EDIT_DISTRICT_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.RESET_FILTERS_DISTRICTS_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.SAVE_NEW_ENTRY_DISTRICTS; +import static org.sormas.e2etests.pages.application.configuration.DistrictsTabPage.SEARCH_DISTRICT_INPUT; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; +import static org.sormas.e2etests.pages.application.entries.CreateNewTravelEntryPage.ARRIVAL_DATE; +import static org.sormas.e2etests.pages.application.entries.CreateNewTravelEntryPage.FIRST_NAME_OF_CONTACT_PERSON_INPUT; +import static org.sormas.e2etests.pages.application.entries.CreateNewTravelEntryPage.LAST_NAME_OF_CONTACT_PERSON_INPUT; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.DISEASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.DISEASE_NAME_INPUT; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.FIRST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.INFO_BUTTON; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.LAST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.POINT_OF_ENTRY_CASE; +import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.PERSON_FILTER_INPUT; + +import com.google.inject.Inject; +import cucumber.api.java8.En; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; +import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; +import org.sormas.e2etests.entities.pojo.web.Case; +import org.sormas.e2etests.entities.pojo.web.Districts; +import org.sormas.e2etests.entities.pojo.web.TravelEntry; +import org.sormas.e2etests.entities.services.DistrictsService; +import org.sormas.e2etests.entities.services.TravelEntryService; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.pages.application.entries.CreateNewTravelEntryPage; +import org.sormas.e2etests.pages.application.entries.EditTravelEntryPage; +import org.testng.asserts.SoftAssert; + +public class DistrictsSteps implements En { + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + private final DateTimeFormatter DATE_FORMATTER_DE = DateTimeFormatter.ofPattern("d.M.yyyy"); + private final WebDriverHelpers webDriverHelpers; + protected Districts districts; + public static TravelEntry travelEntry; + public static TravelEntry aTravelEntry; + public static TravelEntry newCaseFromTravelEntryData; + public static Case aCase; + String firstName; + String lastName; + String sex; + String disease; + String entryPoint = "Test entry point"; + + @Inject + public DistrictsSteps( + WebDriverHelpers webDriverHelpers, + DistrictsService districtsService, + TravelEntryService travelEntryService, + SoftAssert softly) { + this.webDriverHelpers = webDriverHelpers; + + When( + "I click on Districts button in Configuration tab", + () -> webDriverHelpers.clickOnWebElementBySelector(CONFIGURATION_DISTRICTS_TAB)); + + When( + "I click on New Entry button in Districts tab in Configuration", + () -> webDriverHelpers.clickOnWebElementBySelector(DISTRICTS_NEW_ENTRY_BUTTON)); + + When( + "I fill new district with specific data for DE version", + () -> { + districts = districtsService.buildSpecificDistrict(); + fillDistrictName(districts.getDistrictName()); + fillEpidCode(districts.getEpidCode()); + selectCommunityRegion(districts.getRegion()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_NEW_ENTRY_DISTRICTS); + }); + + When( + "I create new travel entry with created district for DE version", + () -> { + travelEntry = travelEntryService.buildGeneratedEntryDE(); + fillFirstName(travelEntry.getFirstName()); + firstName = travelEntry.getFirstName(); + fillLastName(travelEntry.getLastName()); + lastName = travelEntry.getLastName(); + selectSex(travelEntry.getSex()); + sex = travelEntry.getSex(); + fillDateOfArrival(travelEntry.getDateOfArrival(), Locale.GERMAN); + selectResponsibleRegion(districts.getRegion()); + selectResponsibleDistrict(districts.getDistrictName()); + fillDisease(travelEntry.getDisease()); + disease = travelEntry.getDisease(); + if (travelEntry.getDisease().equals("Andere epidemische Krankheit")) + fillOtherDisease("Test"); + fillPointOfEntry(travelEntry.getPointOfEntry()); + fillPointOfEntryDetails(travelEntry.getPointOfEntryDetails()); + }); + + When( + "I check if data with created district in case based on travel entry is correct", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(INFO_BUTTON); + aCase = collectCasePersonDataBasedOnTravelEntryDE(); + softly.assertEquals( + aCase.getResponsibleRegion(), districts.getRegion(), "Regions are not equal"); + softly.assertEquals( + aCase.getResponsibleDistrict(), + districts.getDistrictName(), + "Districts are not equal"); + softly.assertEquals( + aCase.getPointOfEntry(), + travelEntry.getPointOfEntry(), + "Point of entries are not equal"); + softly.assertEquals( + aCase.getFirstName().toLowerCase(Locale.GERMAN), + travelEntry.getFirstName().toLowerCase(Locale.GERMAN), + "First names are not equal"); + softly.assertEquals( + aCase.getLastName().toLowerCase(Locale.GERMAN), + travelEntry.getLastName().toLowerCase(Locale.GERMAN), + "Last names are not equal"); + softly.assertAll(); + }); + + When( + "I check the created data is correctly displayed on Edit travel entry page with specific district for DE version", + () -> { + TimeUnit.SECONDS.sleep( + 4); // workaround because of problem with "element is not attached to the page + // document" + aTravelEntry = collectTravelEntryData(); + ComparisonHelper.compareEqualFieldsOfEntities( + aTravelEntry, travelEntry, List.of("disease", "pointOfEntry", "pointOfEntryDetails")); + }); + + When( + "I filter by last created district", + () -> { + webDriverHelpers.fillAndSubmitInWebElement( + SEARCH_DISTRICT_INPUT, districts.getDistrictName()); + TimeUnit.SECONDS.sleep(2); // wait for filter + webDriverHelpers.waitUntilElementIsVisibleAndClickable(RESET_FILTERS_DISTRICTS_BUTTON); + }); + When( + "I click on edit button for filtered district", + () -> webDriverHelpers.clickOnWebElementBySelector(EDIT_DISTRICT_BUTTON)); + + When( + "I archive chosen district", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CREATE_NEW_ENTRY_DISTRICTS_NAME_INPUT); + webDriverHelpers.clickOnWebElementBySelector(ARCHIVE_DISTRICT_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(CONFIRM_ARCHIVING_DISTRICT_TEXT); + webDriverHelpers.clickOnWebElementBySelector(CONFIRM_ARCHIVING_YES_BUTTON); + }); + + When( + "I filter by Person ID on Travel Entry directory page with specific district", + () -> { + webDriverHelpers.fillAndSubmitInWebElement( + PERSON_FILTER_INPUT, newCaseFromTravelEntryData.getUuid()); + }); + + When( + "I check if data from travel entry for new case is correct with specific district", + () -> { + newCaseFromTravelEntryData = collectTravelEntryData(); + ComparisonHelper.compareEqualFieldsOfEntities( + newCaseFromTravelEntryData, + travelEntry, + List.of("responsibleRegion", "pointOfEntry", "pointOfEntryDetails")); + newCaseFromTravelEntryData = collectTravelEntryPersonData(); + ComparisonHelper.compareEqualFieldsOfEntities( + newCaseFromTravelEntryData, travelEntry, List.of("firstName", "lastName", "sex")); + }); + + When( + "I check if archived district is marked as a inactive", + () -> { + softly.assertEquals( + webDriverHelpers.getValueFromCombobox( + EditTravelEntryPage.RESPONSIBLE_DISTRICT_COMBOBOX), + aTravelEntry.getResponsibleDistrict() + " (Inaktiv)", + "Responsible districts are not equal"); + }); + + When( + "I check if archived district is unavailable", + () -> { + softly.assertFalse( + webDriverHelpers.checkIfElementExistsInCombobox( + DISTRICT_COMBOBOX, districts.getDistrictName())); + softly.assertAll(); + }); + } + + public void fillDistrictName(String communityName) { + webDriverHelpers.fillInWebElement(CREATE_NEW_ENTRY_DISTRICTS_NAME_INPUT, communityName); + } + + public void fillEpidCode(String epidCode) { + webDriverHelpers.fillInWebElement(CREATE_NEW_ENTRY_DISTRICTS_EPID_CODE_INPUT, epidCode); + } + + private void selectCommunityRegion(String region) { + webDriverHelpers.selectFromCombobox(CREATE_NEW_ENTRY_DISTRICTS_REGION_COMBOBOX, region); + } + + private void fillFirstName(String firstName) { + webDriverHelpers.fillInWebElement(FIRST_NAME_OF_CONTACT_PERSON_INPUT, firstName); + } + + private void fillLastName(String lastName) { + webDriverHelpers.fillInWebElement(LAST_NAME_OF_CONTACT_PERSON_INPUT, lastName); + } + + private void fillDateOfArrival(LocalDate dateOfArrival, Locale locale) { + if (locale.equals(Locale.GERMAN)) + webDriverHelpers.clearAndFillInWebElement( + ARRIVAL_DATE, DATE_FORMATTER_DE.format(dateOfArrival)); + else webDriverHelpers.clearAndFillInWebElement(ARRIVAL_DATE, formatter.format(dateOfArrival)); + } + + private void selectSex(String sex) { + webDriverHelpers.selectFromCombobox(CreateNewTravelEntryPage.SEX_COMBOBOX, sex); + } + + private void selectResponsibleRegion(String selectResponsibleRegion) { + webDriverHelpers.selectFromCombobox( + CreateNewTravelEntryPage.RESPONSIBLE_REGION_COMBOBOX, selectResponsibleRegion); + } + + private void selectResponsibleDistrict(String responsibleDistrict) { + webDriverHelpers.selectFromCombobox( + CreateNewTravelEntryPage.RESPONSIBLE_DISTRICT_COMBOBOX, responsibleDistrict); + } + + private void fillDisease(String disease) { + webDriverHelpers.selectFromCombobox(CreateNewTravelEntryPage.DISEASE_COMBOBOX, disease); + } + + private void fillOtherDisease(String otherDisease) { + webDriverHelpers.fillInWebElement(DISEASE_NAME_INPUT, otherDisease); + } + + private void fillPointOfEntry(String pointOfEntry) { + webDriverHelpers.selectFromCombobox( + CreateNewTravelEntryPage.POINT_OF_ENTRY_COMBOBOX, pointOfEntry); + } + + private void fillPointOfEntryDetails(String pointOfEntryDetails) { + webDriverHelpers.fillInWebElement( + CreateNewTravelEntryPage.POINT_OF_ENTRY_DETAILS_INPUT, pointOfEntryDetails); + } + + private Case getUserInformationDE() { + String userInfo = webDriverHelpers.getTextFromWebElement(USER_INFORMATION); + String[] userInfos = userInfo.split(" "); + return Case.builder().firstName(userInfos[0]).lastName(userInfos[1]).build(); + } + + private LocalDate getDateOfReport() { + String dateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE_INPUT); + return LocalDate.parse(dateOfReport, DATE_FORMATTER_DE); + } + + private Case collectCasePersonDataBasedOnTravelEntryDE() { + Case userInfo = getUserInformationDE(); + + return Case.builder() + .dateOfReport(getDateOfReport()) + .firstName(userInfo.getFirstName()) + .lastName(userInfo.getLastName()) + .dateOfBirth(userInfo.getDateOfBirth()) + .externalId(webDriverHelpers.getValueFromWebElement(EXTERNAL_ID_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .disease(webDriverHelpers.getValueFromWebElement(DISEASE_INPUT)) + .responsibleRegion(webDriverHelpers.getValueFromWebElement(REGION_INPUT)) + .responsibleDistrict(webDriverHelpers.getValueFromWebElement(DISTRICT_INPUT)) + .responsibleCommunity(webDriverHelpers.getValueFromWebElement(COMMUNITY_INPUT)) + .pointOfEntry(webDriverHelpers.getValueFromWebElement(POINT_OF_ENTRY_CASE)) + .build(); + } + + private TravelEntry collectTravelEntryData() { + return TravelEntry.builder() + .responsibleRegion( + webDriverHelpers.getValueFromCombobox(EditTravelEntryPage.RESPONSIBLE_REGION_COMBOBOX)) + .responsibleDistrict( + webDriverHelpers.getValueFromCombobox( + EditTravelEntryPage.RESPONSIBLE_DISTRICT_COMBOBOX)) + .disease(webDriverHelpers.getValueFromCombobox(DISEASE_COMBOBOX)) + .pointOfEntry( + webDriverHelpers.getValueFromCombobox(EditTravelEntryPage.POINT_OF_ENTRY_COMBOBOX)) + .pointOfEntryDetails( + webDriverHelpers.getValueFromWebElement( + EditTravelEntryPage.POINT_OF_ENTRY_DETAILS_INPUT)) + .build(); + } + + private TravelEntry collectTravelEntryPersonData() { + return TravelEntry.builder() + .firstName(webDriverHelpers.getValueFromWebElement(FIRST_NAME_INPUT)) + .lastName(webDriverHelpers.getValueFromWebElement(LAST_NAME_INPUT)) + .sex(webDriverHelpers.getValueFromCombobox(EditTravelEntryPage.SEX_COMBOBOX)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .build(); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/FacilitySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/FacilitySteps.java new file mode 100644 index 00000000000..dc1e62bff2c --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/configuration/FacilitySteps.java @@ -0,0 +1,91 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.steps.web.application.configuration; + +import static org.sormas.e2etests.pages.application.configuration.ConfigurationTabsPage.CONFIGURATION_FACILITIES_TAB; +import static org.sormas.e2etests.pages.application.configuration.FacilitiesTabPage.DISTRICT_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.FacilitiesTabPage.FACILITIES_NEW_ENTRY_BUTTON; +import static org.sormas.e2etests.pages.application.configuration.FacilitiesTabPage.FACILITY_CATEGORY_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.FacilitiesTabPage.FACILITY_NAME_INPUT; +import static org.sormas.e2etests.pages.application.configuration.FacilitiesTabPage.FACILITY_TYPE_COMBOBOX; +import static org.sormas.e2etests.pages.application.configuration.FacilitiesTabPage.REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.events.EditEventPage.SAVE_BUTTON; + +import com.google.inject.Inject; +import cucumber.api.java8.En; +import org.sormas.e2etests.enums.DistrictsValues; +import org.sormas.e2etests.enums.RegionsValues; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.testng.asserts.SoftAssert; + +public class FacilitySteps implements En { + + private final WebDriverHelpers webDriverHelpers; + + @Inject + public FacilitySteps(WebDriverHelpers webDriverHelpers, SoftAssert softly) { + this.webDriverHelpers = webDriverHelpers; + + When( + "I click on Facilities button in Configuration tab", + () -> webDriverHelpers.clickOnWebElementBySelector(CONFIGURATION_FACILITIES_TAB)); + + When( + "I click on New Entry button in Facilities tab in Configuration", + () -> webDriverHelpers.clickOnWebElementBySelector(FACILITIES_NEW_ENTRY_BUTTON)); + + When( + "I set name, region and district in Facilities tab in Configuration", + () -> { + String timestamp = String.valueOf(System.currentTimeMillis()); + fillFacilityNameAndDescription("Facility" + timestamp); + selectRegion(RegionsValues.VoreingestellteBundeslander.getName()); + selectDistrict(DistrictsValues.VoreingestellterLandkreis.getName()); + }); + + When( + "I set Facility Category to {string} and Facility Type to {string} in Facilities tab in Configuration", + (String facilityCategory, String facilityType) -> { + selectFacilityCategory(facilityCategory); + selectFacilityType(facilityType); + }); + When( + "I click on Save Button in new Facility form", + () -> { + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + }); + } + + private void selectFacilityType(String facilityType) { + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, facilityType); + } + + private void selectFacilityCategory(String facility) { + webDriverHelpers.selectFromCombobox(FACILITY_CATEGORY_COMBOBOX, facility); + } + + private void fillFacilityNameAndDescription(String facilityDescription) { + webDriverHelpers.fillInWebElement(FACILITY_NAME_INPUT, facilityDescription); + } + + private void selectRegion(String region) { + webDriverHelpers.selectFromCombobox(REGION_COMBOBOX, region); + } + + private void selectDistrict(String district) { + webDriverHelpers.selectFromCombobox(DISTRICT_COMBOBOX, district); + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ChooseSourceCaseSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ChooseSourceCaseSteps.java index 5d8728ed933..5967582cde9 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ChooseSourceCaseSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ChooseSourceCaseSteps.java @@ -18,6 +18,7 @@ package org.sormas.e2etests.steps.web.application.contacts; +import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.*; import cucumber.api.java8.En; @@ -44,6 +45,14 @@ public ChooseSourceCaseSteps( webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); }); + When( + "^I search for the last case uuid in the CHOOSE SOURCE popup of Create Contact window$", + () -> { + webDriverHelpers.fillInWebElement( + SOURCE_CASE_WINDOW_CASE_INPUT_NESTED, apiState.getCreatedCase().getUuid()); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON); + }); + When( "^I open the first found result in the CHOOSE SOURCE window$", () -> { @@ -57,6 +66,18 @@ public ChooseSourceCaseSteps( CASE_CHANGE_POPUP_SUCCESS_MESSAGE); }); + When( + "^I open the first found result in the CHOOSE SOURCE popup of Create Contact window$", + () -> { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.waitForRowToBeSelected(SOURCE_CASE_WINDOW_FIRST_RESULT_OPTION); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON); + }); + When( "^I open the first found result in the CHOOSE SOURCE window for DE version$", () -> { @@ -82,6 +103,14 @@ public ChooseSourceCaseSteps( webDriverHelpers.clickWhileOtherButtonIsDisplayed( POPUP_YES_BUTTON, SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON)); + When( + "I click yes on the DISCARD UNSAVED CHANGES popup if it appears", + () -> { + if (webDriverHelpers.isElementVisibleWithTimeout(POPUP_YES_BUTTON, 5)) { + webDriverHelpers.clickOnWebElementBySelector(POPUP_YES_BUTTON); + } + }); + Then( "I check the linked case information is correctly displayed", () -> { diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactDirectorySteps.java index c41631ef4e8..d8f3251b062 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactDirectorySteps.java @@ -20,9 +20,16 @@ import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.ALL_RESULTS_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.BULK_ACTIONS; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_CONNECTION_NUMBER; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_MEANS_OF_TRANSPORT; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_MEANS_OF_TRANSPORT_DETAILS; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_SEAT_NUMBER; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.ENTER_BULK_EDIT_MODE; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.FACILITY_ACTIVITY_AS_CASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.LEAVE_BULK_EDIT_MODE; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.MORE_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.SHOW_MORE_LESS_FILTERS; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ACTIVITY_TYPE_OF_ACTIVITY_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.ADDITIONAL_INFORMATION_INPUT; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.CITY_INPUT; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.COMMUNITY_COMBOBOX; @@ -41,6 +48,7 @@ import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.INDOORS_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.LONG_FACE_TO_FACE_CONTACT_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.NEW_CONTACT_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OPEN_SAVED_ACTIVITY_BUTTON; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OPEN_SAVED_EXPOSURE_BUTTON; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OTHER_PROTECTIVE_MEASURES_OPTIONS; import static org.sormas.e2etests.pages.application.cases.EpidemiologicalDataCasePage.OUTDOORS_OPTIONS; @@ -61,6 +69,7 @@ import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.ALL_BUTTON_CONTACT; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.APPLY_FILTERS_BUTTON; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.BULK_ACTIONS_CONTACT_VALUES; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.BULK_CREATE_QUARANTINE_ORDER; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_FROM_OTHER_INSTANCES_CHECKBOX; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_ONLY_HIGH_PRIOROTY_CHECKBOX; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.CONTACTS_WITH_EXTENDED_QUARANTINE_CHECKBOX; @@ -90,6 +99,7 @@ import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.NEW_ENTRY_EPIDEMIOLOGICAL_DATA; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.PERSON_LIKE_SEARCH_INPUT; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.RESULTS_GRID_HEADER; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.getCheckboxByUUID; import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.FIRST_NAME_OF_CONTACT_PERSON_INPUT; import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SAVE_BUTTON; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; @@ -115,6 +125,7 @@ import com.github.javafaker.Faker; import cucumber.api.java8.En; +import java.text.Normalizer; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; @@ -170,6 +181,16 @@ public ContactDirectorySteps( webDriverHelpers.accessWebSite(LAST_CREATED_CONTACT_URL); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(UUID_INPUT); }); + When( + "^I navigate to the last created UI contact via the url$", + () -> { + String LAST_CREATED_CONTACT_URL = + environmentManager.getEnvironmentUrlForMarket(locale) + + "/sormas-webdriver/#!contacts/data/" + + collectedContact.getUuid(); + webDriverHelpers.accessWebSite(LAST_CREATED_CONTACT_URL); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(UUID_INPUT); + }); When( "I apply Id of last created Contact on Contact Directory Page", () -> { @@ -177,13 +198,45 @@ public ContactDirectorySteps( webDriverHelpers.fillAndSubmitInWebElement( CONTACT_DIRECTORY_DETAILED_PAGE_FILTER_INPUT, contactUuid); }); + When( + "^I select last created API result in grid in Contact Directory for Bulk Action$", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.scrollToElement( + getCheckboxByUUID(apiState.getCreatedContact().getUuid())); + webDriverHelpers.clickOnWebElementBySelector( + getCheckboxByUUID(apiState.getCreatedContact().getUuid())); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "I click Enter Bulk Edit Mode on Contact directory page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(ENTER_BULK_EDIT_MODE); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + When( + "^I select last created UI result in grid in Contact Directory for Bulk Action$", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.scrollToElement(getCheckboxByUUID(collectedContact.getUuid())); + webDriverHelpers.clickOnWebElementBySelector( + getCheckboxByUUID(collectedContact.getUuid())); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); When( "I click on the NEW CONTACT button", - () -> - webDriverHelpers.clickWhileOtherButtonIsDisplayed( - NEW_CONTACT_BUTTON, FIRST_NAME_OF_CONTACT_PERSON_INPUT)); + () -> { + webDriverHelpers.clickWhileOtherButtonIsDisplayed( + NEW_CONTACT_BUTTON, FIRST_NAME_OF_CONTACT_PERSON_INPUT); + }); + And( + "I click on Create Quarantine Order from Bulk Actions combobox on Contact Directory Page", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_CREATE_QUARANTINE_ORDER)); + And( + "I click on Bulk Actions combobox on Contact Directory Page", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS)); When( "I click on save Contact button", () -> { @@ -232,16 +285,15 @@ public ContactDirectorySteps( () -> { webDriverHelpers.clickOnWebElementBySelector(MORE_BUTTON); }); - - And( - "I click on Link to Event from Bulk Actions combobox on Contact Directory Page", - () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS_CONTACT_VALUES)); - When( - "I click Enter Bulk Edit Mode on Contact directory page", + "I click Leave Bulk Edit Mode on Contact directory page", () -> { - webDriverHelpers.clickOnWebElementBySelector(ENTER_BULK_EDIT_MODE); + webDriverHelpers.clickOnWebElementBySelector(LEAVE_BULK_EDIT_MODE); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); }); + And( + "I click on Link to Event from Bulk Actions combobox on Contact Directory Page", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS_CONTACT_VALUES)); When( "I click checkbox to choose all Contact results on Contact Directory Page", @@ -296,6 +348,12 @@ public ContactDirectorySteps( webDriverHelpers.selectFromCombobox(TYPE_OF_ACTIVITY_COMBOBOX, typeOfactivity); }); + When( + "I select ([^\"]*) option in Type of activity from Combobox in Activity as Case form", + (String typeOfactivity) -> { + webDriverHelpers.selectFromCombobox(ACTIVITY_TYPE_OF_ACTIVITY_COMBOBOX, typeOfactivity); + }); + When( "I fill Location form for Type of place by chosen {string} options in Exposure for Epidemiological data", (String searchCriteria) -> { @@ -331,12 +389,229 @@ public ContactDirectorySteps( CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); webDriverHelpers.fillInWebElement( CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); + String emailAddress = exposureData.getContactPersonEmail(); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + } + }); + + When( + "I fill Location form for Type of place field by {string} options in Case directory for DE version", + (String searchCriteria) -> { + exposureData = contactService.buildGeneratedExposureDataContactForRandomInputsDE(); + switch (searchCriteria) { + case "Unbekannt": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + break; + case "Sonstiges": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + webDriverHelpers.fillInWebElement(TYPE_OF_PLACE_DETAILS, faker.book().title()); + fillLocationDE(exposureData); + break; + case "Transportmittel": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + webDriverHelpers.selectFromCombobox(CASE_MEANS_OF_TRANSPORT, "Sonstiges"); + webDriverHelpers.fillInWebElement( + CASE_MEANS_OF_TRANSPORT_DETAILS, faker.book().publisher()); + webDriverHelpers.fillInWebElement( + CASE_CONNECTION_NUMBER, String.valueOf(faker.number().numberBetween(1, 200))); + webDriverHelpers.fillInWebElement( + CASE_SEAT_NUMBER, String.valueOf(faker.number().numberBetween(1, 200))); + fillLocationDE(exposureData); + break; + case "Einrichtung": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + webDriverHelpers.selectFromCombobox( + FACILITY_CATEGORY_COMBOBOX, exposureData.getFacilityCategory()); + webDriverHelpers.selectFromCombobox( + FACILITY_TYPE_COMBOBOX, exposureData.getFacilityType()); + webDriverHelpers.selectFromCombobox( + FACILITY_DETAILS_COMBOBOX, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + FACILITY_NAME_AND_DESCRIPTION, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_FIRST_NAME, exposureData.getContactPersonFirstName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); + String emailAddress = exposureData.getContactPersonEmail(); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + } + }); + When( + "I fill Location form for Type of place field by {string} options in Case as Activity directory for DE version", + (String searchCriteria) -> { + exposureData = contactService.buildGeneratedExposureDataContactForRandomInputsDE(); + String emailAddress = exposureData.getContactPersonEmail(); + switch (searchCriteria) { + case "Einrichtung (\u00A7 23 IfSG)": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, "Krankenhaus"); + webDriverHelpers.selectFromCombobox( + FACILITY_DETAILS_COMBOBOX, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + FACILITY_NAME_AND_DESCRIPTION, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_FIRST_NAME, exposureData.getContactPersonFirstName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + case "Gemeinschaftseinrichtung (\u00A7 33 IfSG)": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, "Schule"); + webDriverHelpers.selectFromCombobox( + FACILITY_DETAILS_COMBOBOX, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + FACILITY_NAME_AND_DESCRIPTION, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_FIRST_NAME, exposureData.getContactPersonFirstName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + case "Sonstiges": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + webDriverHelpers.fillInWebElement(TYPE_OF_PLACE_DETAILS, faker.book().title()); + exposureData = contactService.buildGeneratedExposureDataContactForRandomInputsDE(); + fillLocationDE(exposureData); + break; + } + }); + + When( + "I fill Location form for Type of place field by {string} options in Case as Activity directory", + (String searchCriteria) -> { + exposureData = contactService.buildGeneratedExposureDataContactForRandomInputs(); + String emailAddress = exposureData.getContactPersonEmail(); + switch (searchCriteria) { + case "Facility (\u00A7 23 IfSG)": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, "Hospital"); + webDriverHelpers.selectFromCombobox( + FACILITY_DETAILS_COMBOBOX, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + FACILITY_NAME_AND_DESCRIPTION, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_FIRST_NAME, exposureData.getContactPersonFirstName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + case "Facility (\u00A7 36 IfSG)": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, "Other Care facility"); + webDriverHelpers.selectFromCombobox( + FACILITY_DETAILS_COMBOBOX, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + FACILITY_NAME_AND_DESCRIPTION, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_FIRST_NAME, exposureData.getContactPersonFirstName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + case "Community facility (\u00A7 33 IfSG)": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, "School"); + webDriverHelpers.selectFromCombobox( + FACILITY_DETAILS_COMBOBOX, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + FACILITY_NAME_AND_DESCRIPTION, exposureData.getFacilityDetails()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_FIRST_NAME, exposureData.getContactPersonFirstName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_LAST_NAME, exposureData.getContactPersonLastName()); + webDriverHelpers.fillInWebElement( + CONTACT_PERSON_PHONE_NUMBER, exposureData.getContactPersonPhone()); webDriverHelpers.fillInWebElement( - CONTACT_PERSON_EMAIL_ADRESS, exposureData.getContactPersonEmail()); + CONTACT_PERSON_EMAIL_ADRESS, + Normalizer.normalize(emailAddress, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", "")); + break; + case "Other": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + webDriverHelpers.fillInWebElement(TYPE_OF_PLACE_DETAILS, faker.book().title()); + fillLocationDE(exposureData); + break; + case "Unknown": + webDriverHelpers.selectFromCombobox( + FACILITY_ACTIVITY_AS_CASE_COMBOBOX, searchCriteria); + fillLocationDE(exposureData); break; } }); + When( + "I am checking all Location data in Activity as Case are saved and displayed", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(OPEN_SAVED_ACTIVITY_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(OPEN_SAVED_ACTIVITY_BUTTON); + Exposure actualLocationData = collectLocationData(); + ComparisonHelper.compareEqualFieldsOfEntities( + actualLocationData, + exposureData, + List.of( + "continent", + "subcontinent", + "country", + "exposureRegion", + "district", + "community", + "street", + "houseNumber", + "additionalInformation", + "postalCode", + "city", + "areaType")); + }); + When( "I click on save button in Exposure for Epidemiological data tab in Contacts", () -> { @@ -372,9 +647,6 @@ public ContactDirectorySteps( webDriverHelpers.clickOnWebElementBySelector(EPIDEMIOLOGICAL_DATA_TAB); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); - And( - "I click on Bulk Actions combobox on Contact Directory Page", - () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS)); And( "I filter by mocked ContactID on Contact directory page", () -> { @@ -499,7 +771,10 @@ public ContactDirectorySteps( }); When( "^I click on Line Listing button$", - () -> webDriverHelpers.clickOnWebElementBySelector(LINE_LISTING)); + () -> { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(LINE_LISTING); + webDriverHelpers.clickOnWebElementBySelector(LINE_LISTING); + }); And( "I click on All button in Contact Directory Page", @@ -597,6 +872,30 @@ public ContactDirectorySteps( openContactFromResultsByUUID(apiState.getCreatedContact().getUuid()); }); + When( + "I am checking all Location data in Exposure are saved and displayed", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(OPEN_SAVED_EXPOSURE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(OPEN_SAVED_EXPOSURE_BUTTON); + Exposure actualLocationData = collectLocationData(); + ComparisonHelper.compareEqualFieldsOfEntities( + actualLocationData, + exposureData, + List.of( + "continent", + "subcontinent", + "country", + "exposureRegion", + "district", + "community", + "street", + "houseNumber", + "additionalInformation", + "postalCode", + "city", + "areaType")); + }); + When( "I search after last created contact via API by name and uuid then open", () -> { @@ -664,6 +963,47 @@ private void fillLocation(Exposure exposureData) { webDriverHelpers.fillInWebElement(GPS_ACCURACY_INPUT, exposureData.getLatLonAccuracy()); } + private void fillLocationDE(Exposure exposureData) { + webDriverHelpers.waitForPageLoaded(); + webDriverHelpers.selectFromCombobox(CONTINENT_COMBOBOX, exposureData.getContinent()); + webDriverHelpers.selectFromCombobox(SUBCONTINENT_COMBOBOX, exposureData.getSubcontinent()); + webDriverHelpers.selectFromCombobox(COUNTRY_COMBOBOX, exposureData.getCountry()); + webDriverHelpers.selectFromCombobox(EXPOSURE_REGION_COMBOBOX, exposureData.getExposureRegion()); + webDriverHelpers.selectFromCombobox(DISTRICT_COMBOBOX, exposureData.getDistrict()); + webDriverHelpers.selectFromCombobox(COMMUNITY_COMBOBOX, exposureData.getCommunity()); + webDriverHelpers.fillInWebElement(STREET_INPUT, exposureData.getStreet()); + webDriverHelpers.fillInWebElement(HOUSE_NUMBER_INPUT, exposureData.getHouseNumber()); + webDriverHelpers.fillInWebElement( + ADDITIONAL_INFORMATION_INPUT, exposureData.getAdditionalInformation()); + webDriverHelpers.fillInWebElement(POSTAL_CODE_INPUT, exposureData.getPostalCode()); + webDriverHelpers.fillInWebElement(CITY_INPUT, exposureData.getCity()); + webDriverHelpers.selectFromCombobox(AREA_TYPE_COMBOBOX, exposureData.getAreaType()); + webDriverHelpers.fillInWebElement(GPS_LATITUDE_INPUT, exposureData.getLatitude()); + webDriverHelpers.fillInWebElement(GPS_LONGITUDE_INPUT, exposureData.getLongitude()); + webDriverHelpers.fillInWebElement(GPS_ACCURACY_INPUT, exposureData.getLatLonAccuracy()); + } + + private Exposure collectLocationData() { + return Exposure.builder() + .continent(webDriverHelpers.getValueFromCombobox(CONTINENT_COMBOBOX)) + .subcontinent(webDriverHelpers.getValueFromCombobox(SUBCONTINENT_COMBOBOX)) + .country(webDriverHelpers.getValueFromCombobox(COUNTRY_COMBOBOX)) + .exposureRegion(webDriverHelpers.getValueFromCombobox(EXPOSURE_REGION_COMBOBOX)) + .district(webDriverHelpers.getValueFromCombobox(DISTRICT_COMBOBOX)) + .community(webDriverHelpers.getValueFromCombobox(COMMUNITY_COMBOBOX)) + .street(webDriverHelpers.getValueFromWebElement(STREET_INPUT)) + .houseNumber(webDriverHelpers.getValueFromWebElement(HOUSE_NUMBER_INPUT)) + .additionalInformation( + webDriverHelpers.getValueFromWebElement(ADDITIONAL_INFORMATION_INPUT)) + .postalCode(webDriverHelpers.getValueFromWebElement(POSTAL_CODE_INPUT)) + .city(webDriverHelpers.getValueFromWebElement(CITY_INPUT)) + .areaType(webDriverHelpers.getValueFromCombobox(AREA_TYPE_COMBOBOX)) + .latitude(webDriverHelpers.getValueFromWebElement(GPS_LATITUDE_INPUT)) + .longitude(webDriverHelpers.getValueFromWebElement(GPS_LONGITUDE_INPUT)) + .latLonAccuracy(webDriverHelpers.getValueFromWebElement(GPS_ACCURACY_INPUT)) + .build(); + } + private void fillExposure(Exposure exposureData) { webDriverHelpers.fillInWebElement( START_OF_EXPOSURE_INPUT, formatter.format(exposureData.getStartOfExposure())); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactImportExportSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactImportExportSteps.java new file mode 100644 index 00000000000..3e33c1562e2 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactImportExportSteps.java @@ -0,0 +1,236 @@ +/* + * SORMAS® - Surveillance Outbreak Response Management & Analysis System + * Copyright © 2016-2022 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 org.sormas.e2etests.steps.web.application.contacts; + +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.BASIC_CASE_EXPORT_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CASE_EXPORT_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CONFIGURATION_NAME_INPUT; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CUSTOM_CASE_DELETE_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CUSTOM_CASE_EXPORT_DOWNLOAD_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.EXPORT_CONFIGURATION_DATA_DISEASE_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.NEW_EXPORT_CONFIGURATION_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.NEW_EXPORT_CONFIGURATION_SAVE_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.ContactImportExportPage.CUSTOM_CONTACT_EXPORT; +import static org.sormas.e2etests.pages.application.contacts.ContactImportExportPage.EXPORT_CONFIGURATION_DATA_FIRST_NAME_CHECKBOX_CONTACT; +import static org.sormas.e2etests.pages.application.contacts.ContactImportExportPage.EXPORT_CONFIGURATION_DATA_ID_CHECKBOX_CONTACT; +import static org.sormas.e2etests.pages.application.contacts.ContactImportExportPage.EXPORT_CONFIGURATION_DATA_LAST_NAME_CHECKBOX_CONTACT; + +import com.opencsv.CSVParser; +import com.opencsv.CSVParserBuilder; +import com.opencsv.CSVReader; +import com.opencsv.CSVReaderBuilder; +import com.opencsv.exceptions.CsvException; +import cucumber.api.java8.En; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; +import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import org.sormas.e2etests.entities.pojo.csv.CustomContactExportCSV; +import org.sormas.e2etests.entities.pojo.web.Contact; +import org.sormas.e2etests.enums.DiseasesValues; +import org.sormas.e2etests.helpers.AssertHelpers; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.state.ApiState; +import org.testng.Assert; +import org.testng.asserts.SoftAssert; + +@Slf4j +public class ContactImportExportSteps implements En { + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String configurationName; + + @Inject + public ContactImportExportSteps( + WebDriverHelpers webDriverHelpers, + ApiState apiState, + SoftAssert softly, + AssertHelpers assertHelpers) { + + When( + "I click on the Export contact button", + () -> { + TimeUnit.SECONDS.sleep(2); // Wait for filter + webDriverHelpers.clickOnWebElementBySelector(CASE_EXPORT_BUTTON); + }); + + When( + "I click on the Custom Contact Export button", + () -> webDriverHelpers.clickOnWebElementBySelector(CUSTOM_CONTACT_EXPORT)); + + When( + "I click on the Basic Contact Export button", + () -> { + webDriverHelpers.clickOnWebElementBySelector(BASIC_CASE_EXPORT_BUTTON); + }); + + When( + "I click on the New Export Configuration button in Custom Contact Export popup", + () -> webDriverHelpers.clickOnWebElementBySelector(NEW_EXPORT_CONFIGURATION_BUTTON)); + + When( + "I fill Configuration Name field with {string} in Custom Contact Export popup", + (String confName) -> { + configurationName = confName + LocalDate.now().toString(); + webDriverHelpers.fillInWebElement(CONFIGURATION_NAME_INPUT, configurationName); + }); + + When( + "I select specific data to export in Export Configuration for Custom Contact Export", + () -> { + webDriverHelpers.clickOnWebElementBySelector(EXPORT_CONFIGURATION_DATA_DISEASE_CHECKBOX); + webDriverHelpers.clickOnWebElementBySelector( + EXPORT_CONFIGURATION_DATA_ID_CHECKBOX_CONTACT); + webDriverHelpers.clickOnWebElementBySelector( + EXPORT_CONFIGURATION_DATA_FIRST_NAME_CHECKBOX_CONTACT); + webDriverHelpers.clickOnWebElementBySelector( + EXPORT_CONFIGURATION_DATA_LAST_NAME_CHECKBOX_CONTACT); + webDriverHelpers.clickOnWebElementBySelector(NEW_EXPORT_CONFIGURATION_SAVE_BUTTON); + }); + + When( + "I download created custom contact export file", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CUSTOM_CASE_EXPORT_DOWNLOAD_BUTTON); + }); + + When( + "I check if downloaded data generated by custom contact option is correct", + () -> { + String file = + "./downloads/sormas_kontakte_" + LocalDate.now().format(formatter) + "_.csv"; + Path path = Paths.get(file); + assertHelpers.assertWithPoll20Second( + () -> + Assert.assertTrue( + Files.exists(path), + "Custom contact document was not downloaded. Path used for check: " + + path.toAbsolutePath())); + CustomContactExportCSV reader = parseCustomContactExport(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid(), apiState.getCreatedContact().getUuid(), "UUIDs are not equal"); + softly.assertEquals( + reader.getDisease(), + DiseasesValues.getCaptionForName(apiState.getCreatedContact().getDisease()), + "Diseases are not equal"); + softly.assertEquals( + String.format(reader.getFirstName(), Locale.GERMAN), + String.format(apiState.getLastCreatedPerson().getFirstName(), Locale.GERMAN), + "First names are not equal"); + softly.assertEquals( + String.format(reader.getLastName(), Locale.GERMAN), + String.format(apiState.getLastCreatedPerson().getLastName(), Locale.GERMAN), + "Last names are not equal"); + softly.assertAll(); + }); + + When( + "I check if downloaded data generated by basic contact option is correct", + () -> { + String file = + "./downloads/sormas_kontakte_" + LocalDate.now().format(formatter) + "_.csv"; + + Path path = Paths.get(file); + assertHelpers.assertWithPoll20Second( + () -> + Assert.assertTrue( + Files.exists(path), + "Basic contact document was not downloaded. Path used for check: " + + path.toAbsolutePath())); + Contact reader = parseBasicContactExport(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid(), apiState.getCreatedContact().getUuid(), "UUIDs are not equal"); + softly.assertAll(); + }); + + When( + "I delete created custom contact export file", + () -> webDriverHelpers.clickOnWebElementBySelector(CUSTOM_CASE_DELETE_BUTTON)); + } + + public CustomContactExportCSV parseCustomContactExport(String fileName) { + List r = null; + String[] values = new String[] {}; + CustomContactExportCSV builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(3) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseCustomContactExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseCustomContactExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = + CustomContactExportCSV.builder() + .uuid(values[0]) + .disease(values[1]) + .firstName(String.format(values[2], Locale.GERMAN)) + .lastName(String.format(values[3], Locale.GERMAN)) + .build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseCustomContactExport: {}", e.getCause()); + } + return builder; + } + + public Contact parseBasicContactExport(String fileName) { + List r = null; + String[] values = new String[] {}; + Contact builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(2) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseBasicContactExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseBasicContactExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = Contact.builder().uuid(values[0]).build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseBasicContactExport: {}", e.getCause()); + } + return builder; + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactsLineListingSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactsLineListingSteps.java index fd6ddaff670..8c9cfc4c4df 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactsLineListingSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/ContactsLineListingSteps.java @@ -18,18 +18,44 @@ package org.sormas.e2etests.steps.web.application.contacts; -import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.*; -import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.*; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.APPLY_FILTERS_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.DISEASE_COLUMNS; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.FIRST_CONTACT_ID_BUTTON; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.FIRST_NAME_COLUMNS; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.LAST_NAME_COLUMNS; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.PERSON_LIKE_SEARCH_INPUT; +import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.TYPE_OF_CONTACT_COLUMNS; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.CONTACT_CHOOSE_CASE; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_ACTION_SAVE; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_BIRTHDATE_DAY_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_BIRTHDATE_MONTH_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_BIRTHDATE_YEAR_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_DATE_LAST_CONTACT_INPUT; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_DATE_REPORT_INPUT; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_DISEASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_DISEASE_OF_SOURCE_CASE; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_DISTRICT_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_FIRST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_LAST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_RELATIONSHIP_TO_CASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_SELECTED_SOURCE_CASE_NAME_AND_ID_TEXT; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_SEX_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.LINE_LISTING_TYPE_OF_CONTACT_COMBOBOX; +import static org.sormas.e2etests.pages.application.contacts.ContactsLineListingPage.getLineListingDateReportInputByIndex; import cucumber.api.java8.En; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.util.Locale; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.sormas.e2etests.entities.pojo.web.ContactsLineListing; import org.sormas.e2etests.entities.services.ContactsLineListingService; +import org.sormas.e2etests.enums.DiseasesValues; import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.state.ApiState; import org.testng.asserts.SoftAssert; public class ContactsLineListingSteps implements En { @@ -42,14 +68,14 @@ public class ContactsLineListingSteps implements En { public ContactsLineListingSteps( WebDriverHelpers webDriverHelpers, ContactsLineListingService contactsLineListingService, - SoftAssert softly) { + SoftAssert softly, + ApiState apiState) { this.webDriverHelpers = webDriverHelpers; When( "^I create a new Contact with specific data for DE version through Line Listing$", () -> { contactsLineListing = contactsLineListingService.buildGeneratedLineListingContactsDE(); - selectDisease(contactsLineListing.getDisease()); selectRegion(contactsLineListing.getRegion()); selectDistrict(contactsLineListing.getDistrict()); fillDateOfReport(contactsLineListing.getDateOfReport(), Locale.GERMAN); @@ -65,21 +91,15 @@ public ContactsLineListingSteps( When( "^I create a new Contact with specific data through Line Listing$", () -> { - contactsLineListing = contactsLineListingService.buildGeneratedLineListingContacts(); - selectDisease(contactsLineListing.getDisease()); - selectRegion(contactsLineListing.getRegion()); - selectDistrict(contactsLineListing.getDistrict()); - fillDateOfReport(contactsLineListing.getDateOfReport(), Locale.ENGLISH); - fillDateOfLastContact(contactsLineListing.getDateOfLastContact(), Locale.ENGLISH); - selectTypeOfContact(contactsLineListing.getTypeOfContact()); - selectRelationshipWithCase(contactsLineListing.getRelationshipWithCase()); - fillFirstName(contactsLineListing.getFirstName()); - fillLastName(contactsLineListing.getLastName()); - selectBirthYear(contactsLineListing.getBirthYear()); - selectBirthMonth(contactsLineListing.getBirthMonth()); - selectBirthDay(contactsLineListing.getBirthDay()); - selectSex(contactsLineListing.getSex()); + createNewContactTroughLineListing(contactsLineListingService, false); }); + + When( + "^I create a new Contact with specific data through Line Listing when disease prefilled$", + () -> { + createNewContactTroughLineListing(contactsLineListingService, true); + }); + When( "^I create a new Contacts from Event Participants using Line Listing$", () -> { @@ -112,7 +132,7 @@ public ContactsLineListingSteps( contactsLineListing.getFirstName() + " " + contactsLineListing.getLastName(); webDriverHelpers.fillInWebElement(PERSON_LIKE_SEARCH_INPUT, caseName); webDriverHelpers.clickOnWebElementBySelector(APPLY_FILTERS_BUTTON); - webDriverHelpers.waitUntilNumberOfElementsIsReduceToGiven(CONTACT_GRID_RESULTS_ROWS, 2); + TimeUnit.SECONDS.sleep(2); // wait for filter webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(FIRST_CONTACT_ID_BUTTON); softly.assertTrue( @@ -137,6 +157,62 @@ public ContactsLineListingSteps( "Last name is not correct"); softly.assertAll(); }); + + When( + "^I click Choose Case button from Contact Directory Line Listing popup window$", + () -> { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(CONTACT_CHOOSE_CASE); + webDriverHelpers.clickOnWebElementBySelector(CONTACT_CHOOSE_CASE); + }); + + When( + "^I check the name and uuid of selected case information is correctly displayed in new Contact Line Listing popup window$", + () -> { + String displayedCaseNameAndId = + webDriverHelpers.getTextFromWebElement( + LINE_LISTING_SELECTED_SOURCE_CASE_NAME_AND_ID_TEXT); + String caseNameAndId = + "Selected source case:\n" + + apiState.getLastCreatedPerson().getFirstName() + + " " + + apiState.getLastCreatedPerson().getLastName() + + " (" + + apiState.getCreatedCase().getUuid().substring(0, 6).toUpperCase() + + ")"; + softly.assertEquals( + displayedCaseNameAndId, caseNameAndId, "Person name or ID is not correct"); + softly.assertAll(); + }); + + When( + "^I check disease dropdown is automatically filled with disease of selected Case in new Contact Line Listing popup window$", + () -> { + softly.assertEquals( + webDriverHelpers.getValueFromWebElement(LINE_LISTING_DISEASE_OF_SOURCE_CASE), + DiseasesValues.getCaptionForName(apiState.getCreatedCase().getDisease()), + "Displayed disease is not correct"); + softly.assertAll(); + }); + } + + private void createNewContactTroughLineListing( + ContactsLineListingService contactsLineListingService, boolean diseasePrefilled) { + contactsLineListing = contactsLineListingService.buildGeneratedLineListingContacts(); + if (!diseasePrefilled) { + selectDisease(contactsLineListing.getDisease()); + } + selectRegion(contactsLineListing.getRegion()); + selectDistrict(contactsLineListing.getDistrict()); + fillDateOfReport(contactsLineListing.getDateOfReport(), Locale.ENGLISH); + fillDateOfLastContact(contactsLineListing.getDateOfLastContact(), Locale.ENGLISH); + selectTypeOfContact(contactsLineListing.getTypeOfContact()); + selectRelationshipWithCase(contactsLineListing.getRelationshipWithCase()); + fillFirstName(contactsLineListing.getFirstName()); + fillLastName(contactsLineListing.getLastName()); + selectBirthYear(contactsLineListing.getBirthYear()); + selectBirthMonth(contactsLineListing.getBirthMonth()); + selectBirthDay(contactsLineListing.getBirthDay()); + selectSex(contactsLineListing.getSex()); } private void selectDisease(String disease) { @@ -152,7 +228,7 @@ private void selectDistrict(String district) { } private void fillDateOfReport(LocalDate dateOfReport, Locale locale) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); if (locale.equals(Locale.GERMAN)) webDriverHelpers.clearAndFillInWebElement( LINE_LISTING_DATE_REPORT_INPUT, formatter.format(dateOfReport)); @@ -162,7 +238,7 @@ private void fillDateOfReport(LocalDate dateOfReport, Locale locale) { } private void fillDateOfLastContact(LocalDate dateOfLastContact, Locale locale) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); if (locale.equals(Locale.GERMAN)) webDriverHelpers.clearAndFillInWebElement( LINE_LISTING_DATE_LAST_CONTACT_INPUT, formatter.format(dateOfLastContact)); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewContactSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewContactSteps.java index e56b47211f0..058a10490ea 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewContactSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewContactSteps.java @@ -18,9 +18,16 @@ package org.sormas.e2etests.steps.web.application.contacts; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.DISEASE_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.LINE_LISTING_DISCARD_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PERSON_SEARCH_LOCATOR_BUTTON; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_NEW_PERSON_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.PICK_OR_CREATE_PERSON_POPUP_HEADER; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.SAVE_POPUP_CONTENT; import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.*; import static org.sormas.e2etests.pages.application.contacts.CreateNewContactPage.SOURCE_CASE_CONTACT_WINDOW_CONFIRM_BUTTON; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.CONTACT_CREATED_POPUP; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_CONFIRM_BUTTON; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON; import static org.sormas.e2etests.pages.application.contacts.EditContactPage.UUID_INPUT; @@ -29,22 +36,29 @@ import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.util.Locale; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.sormas.e2etests.entities.pojo.web.Contact; import org.sormas.e2etests.entities.services.ContactService; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.state.ApiState; +import org.testng.asserts.SoftAssert; public class CreateNewContactSteps implements En { private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy"); private final WebDriverHelpers webDriverHelpers; public static Contact contact; + private final SoftAssert softly; public static Contact collectedContactUUID; @Inject public CreateNewContactSteps( - WebDriverHelpers webDriverHelpers, ContactService contactService, ApiState apiState) { + WebDriverHelpers webDriverHelpers, + ContactService contactService, + ApiState apiState, + SoftAssert softly) { this.webDriverHelpers = webDriverHelpers; + this.softly = softly; When( "^I fill a new contact form for DE version$", @@ -79,6 +93,7 @@ public CreateNewContactSteps( "^I fill a new contact form$", () -> { contact = contactService.buildGeneratedContact(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); fillFirstName(contact.getFirstName()); fillLastName(contact.getLastName()); fillDateOfBirth(contact.getDateOfBirth(), Locale.ENGLISH); @@ -103,6 +118,64 @@ public CreateNewContactSteps( fillRelationshipWithCase(contact.getRelationshipWithCase()); fillDescriptionOfHowContactTookPlace(contact.getDescriptionOfHowContactTookPlace()); }); + + When( + "^I fill a new contact form with chosen data without personal data$", + () -> { + contact = contactService.buildGeneratedContact(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + fillPrimaryPhoneNumber(contact.getPrimaryPhoneNumber()); + fillPrimaryEmailAddress(contact.getPrimaryEmailAddress()); + selectReturningTraveler(contact.getReturningTraveler()); + fillDateOfReport(contact.getReportDate(), Locale.ENGLISH); + fillDateOfLastContact(contact.getDateOfLastContact(), Locale.ENGLISH); + selectResponsibleRegion(contact.getResponsibleRegion()); + selectResponsibleDistrict(contact.getResponsibleDistrict()); + selectResponsibleCommunity(contact.getResponsibleCommunity()); + selectTypeOfContact(contact.getTypeOfContact()); + fillAdditionalInformationOnTheTypeOfContact( + contact.getAdditionalInformationOnContactType()); + selectContactCategory(contact.getContactCategory().toUpperCase()); + fillRelationshipWithCase(contact.getRelationshipWithCase()); + fillDescriptionOfHowContactTookPlace(contact.getDescriptionOfHowContactTookPlace()); + }); + + When( + "^I fill a new contact form with chosen data without personal data on Contact directory page$", + () -> { + contact = contactService.buildGeneratedContact(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + fillPrimaryPhoneNumber(contact.getPrimaryPhoneNumber()); + fillPrimaryEmailAddress(contact.getPrimaryEmailAddress()); + selectReturningTraveler(contact.getReturningTraveler()); + fillDateOfReport(contact.getReportDate(), Locale.ENGLISH); + fillDiseaseOfSourceCase(contact.getDiseaseOfSourceCase()); + fillCaseIdInExternalSystem(contact.getCaseIdInExternalSystem()); + selectMultiDayContact(); + fillDateOfFirstContact(contact.getDateOfFirstContact(), Locale.ENGLISH); + fillDateOfLastContact(contact.getDateOfLastContact(), Locale.ENGLISH); + fillCaseOrEventInformation(contact.getCaseOrEventInformation()); + selectResponsibleRegion(contact.getResponsibleRegion()); + selectResponsibleDistrict(contact.getResponsibleDistrict()); + selectResponsibleCommunity(contact.getResponsibleCommunity()); + selectTypeOfContact(contact.getTypeOfContact()); + fillAdditionalInformationOnTheTypeOfContact( + contact.getAdditionalInformationOnContactType()); + selectContactCategory(contact.getContactCategory().toUpperCase()); + fillRelationshipWithCase(contact.getRelationshipWithCase()); + fillDescriptionOfHowContactTookPlace(contact.getDescriptionOfHowContactTookPlace()); + }); + + When( + "^I click on the person search button in create new contact form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); + When( + "^I click on the clear button in new contact form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); When( "^I click CHOOSE CASE button$", () -> webDriverHelpers.clickOnWebElementBySelector(CHOOSE_CASE_BUTTON)); @@ -128,11 +201,34 @@ public CreateNewContactSteps( () -> { webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(SAVE_BUTTON); webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + if (webDriverHelpers.isElementVisibleWithTimeout(PICK_OR_CREATE_PERSON_POPUP_HEADER, 5)) { + webDriverHelpers.clickOnWebElementBySelector(CREATE_NEW_PERSON_CHECKBOX); + webDriverHelpers.clickOnWebElementBySelector(SAVE_POPUP_CONTENT); + TimeUnit.SECONDS.sleep(1); + } webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(CONTACT_CREATED_POPUP); webDriverHelpers.clickOnWebElementBySelector(CONTACT_CREATED_POPUP); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(50); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(UUID_INPUT); }); + + When( + "^I click on SAVE new contact button in the CHOOSE SOURCE popup of Create Contact window$", + () -> { + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + SOURCE_CASE_WINDOW_CONFIRM_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_CONFIRM_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(10); + }); + + When( + "^I check if default disease value for contacts in the Line listing is set for ([^\"]*)$", + (String disease) -> { + String getDisease = webDriverHelpers.getValueFromCombobox(DISEASE_COMBOBOX); + softly.assertEquals(disease, getDisease, "Diseases are not equal"); + softly.assertAll(); + webDriverHelpers.clickOnWebElementBySelector(LINE_LISTING_DISCARD_BUTTON); + }); } private void fillFirstName(String firstName) { diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewVisitSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewVisitSteps.java index cd2bb017778..4f4535b8bd5 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewVisitSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/CreateNewVisitSteps.java @@ -55,7 +55,6 @@ public CreateNewVisitSteps( "^I create a new Follow-up visit", () -> { followUpVisit = followUpVisitService.buildGeneratedFollowUpVisit(); - webDriverHelpers.waitForPageLoaded(); selectPersonAvailableAndCooperative(followUpVisit.getPersonAvailableAndCooperative()); fillDateAndTimeVisit(followUpVisitService.buildGeneratedFollowUpVisit().getDateOfVisit()); fillVisitRemark(followUpVisit.getVisitRemarks()); @@ -105,7 +104,6 @@ public CreateNewVisitSteps( "^I change Follow-up visit fields and save$", () -> { followUpEditVisit = followUpVisitService.buildEditFollowUpVisit(); - webDriverHelpers.waitForPageLoaded(); selectPersonAvailableAndCooperative(followUpEditVisit.getPersonAvailableAndCooperative()); fillDateAndTimeVisit(followUpVisitService.buildEditFollowUpVisit().getDateOfVisit()); fillVisitRemark(followUpEditVisit.getVisitRemarks()); @@ -128,7 +126,6 @@ public CreateNewVisitSteps( And( "^I open Follow up Visits tab from contact directory$", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(FOLLOW_UP_VISITS_BUTTON); webDriverHelpers.waitUntilIdentifiedElementIsPresent(FROM_INPUT); }); @@ -136,7 +133,6 @@ public CreateNewVisitSteps( Then( "^I am validating the From and To dates displayed$", () -> { - webDriverHelpers.waitForPageLoaded(); String uuid = apiState.getCreatedContact().getUuid(); webDriverHelpers.waitUntilIdentifiedElementIsPresent(MULTIPLE_OPTIONS_SEARCH_INPUT); webDriverHelpers.clearAndFillInWebElement(MULTIPLE_OPTIONS_SEARCH_INPUT, uuid); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactPersonSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactPersonSteps.java index b7b30ad8b05..6b32c6a2d85 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactPersonSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactPersonSteps.java @@ -110,6 +110,7 @@ public EditContactPersonSteps( "I complete all default empty fields from Contact Person tab", () -> { newGeneratedPerson = personService.buildGeneratedPerson(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); fillSalutation(newGeneratedPerson.getSalutation()); fillDateOfBirth(newGeneratedPerson.getDateOfBirth()); selectSex(newGeneratedPerson.getSex()); @@ -152,7 +153,7 @@ public EditContactPersonSteps( "I click on save button from Contact Person tab", () -> { webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(50); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(120); Person contactInfo = getPersonInformation(); fullyDetailedPerson = personService.updateExistentPerson( diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactSteps.java index be02d73bb8e..1475fe08154 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditContactSteps.java @@ -19,6 +19,11 @@ package org.sormas.e2etests.steps.web.application.contacts; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.FIRST_CASE_ID_BUTTON; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.UPLOAD_DOCUMENT_TO_ENTITIES_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.CREATE_DOCUMENT_TEMPLATES; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.GENERATED_DOCUMENT_NAME; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.QUARANTINE_ORDER_COMBOBOX; +import static org.sormas.e2etests.pages.application.cases.EditCasePage.UPLOAD_DOCUMENT_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.EditCasePage.USER_INFORMATION; import static org.sormas.e2etests.pages.application.cases.EditCasePage.UUID_INPUT; import static org.sormas.e2etests.pages.application.contacts.ContactDirectoryPage.APPLY_FILTERS_BUTTON; @@ -29,6 +34,7 @@ import static org.sormas.e2etests.pages.application.tasks.TaskManagementPage.GENERAL_SEARCH_INPUT; import cucumber.api.java8.En; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -46,6 +52,7 @@ import org.sormas.e2etests.helpers.AssertHelpers; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.pages.application.contacts.EditContactPage; +import org.sormas.e2etests.state.ApiState; import org.testng.Assert; import org.testng.asserts.SoftAssert; @@ -65,6 +72,7 @@ public EditContactSteps( WebDriverHelpers webDriverHelpers, ContactService contactService, SoftAssert softly, + ApiState apiState, AssertHelpers assertHelpers, ContactDocumentService contactDocumentService) { this.webDriverHelpers = webDriverHelpers; @@ -76,6 +84,47 @@ public EditContactSteps( openContactFromResultsByUUID(collectedContact.getUuid()); }); + When( + "I check the created data for DE version is correctly displayed on Edit Contact page", + () -> { + collectedContact = collectContactDataDE(); + createdContact = CreateNewContactSteps.contact; + ComparisonHelper.compareEqualFieldsOfEntities( + collectedContact, + createdContact, + List.of( + "firstName", + "lastName", + "returningTraveler", + "reportDate", + "diseaseOfSourceCase", + "caseIdInExternalSystem", + "dateOfLastContact", + "caseOrEventInformation", + "responsibleRegion", + "responsibleDistrict", + "responsibleCommunity", + "additionalInformationOnContactType", + "typeOfContact", + "contactCategory", + "relationshipWithCase", + "descriptionOfHowContactTookPlace")); + }); + + And( + "I click on checkbox to upload generated document to entities in Create Quarantine Order form in Contact directory", + () -> webDriverHelpers.clickOnWebElementBySelector(UPLOAD_DOCUMENT_TO_ENTITIES_CHECKBOX)); + When( + "I check if generated document based on {string} appeared in Documents tab for UI created contact in Edit Contact directory", + (String name) -> { + String uuid = collectedContact.getUuid(); + String path = uuid.substring(0, 6).toUpperCase() + "-" + name; + assertHelpers.assertWithPoll( + () -> + Assert.assertEquals( + path, webDriverHelpers.getTextFromWebElement(GENERATED_DOCUMENT_NAME)), + 120); + }); When( "I check the created data is correctly displayed on Edit Contact page", () -> { @@ -103,6 +152,91 @@ public EditContactSteps( "descriptionOfHowContactTookPlace")); }); + When( + "I check the created data for existing person is correctly displayed on Edit Contact page", + () -> { + collectedContact = collectContactData(); + createdContact = + CreateNewContactSteps.contact.toBuilder() + .firstName(apiState.getLastCreatedPerson().getFirstName()) + .lastName(apiState.getLastCreatedPerson().getLastName()) + .build(); + ComparisonHelper.compareEqualFieldsOfEntities( + collectedContact, + createdContact, + List.of( + "firstName", + "lastName", + "returningTraveler", + "reportDate", + "diseaseOfSourceCase", + "caseIdInExternalSystem", + "dateOfLastContact", + "caseOrEventInformation", + "responsibleRegion", + "responsibleDistrict", + "responsibleCommunity", + "additionalInformationOnContactType", + "typeOfContact", + "contactCategory", + "relationshipWithCase", + "descriptionOfHowContactTookPlace")); + }); + + When( + "I check the created data for existing person is correctly displayed on Edit Contact page based on Case", + () -> { + collectedContact = collectContactDataFromCase(); + createdContact = + CreateNewContactSteps.contact.toBuilder() + .firstName(apiState.getLastCreatedPerson().getFirstName()) + .lastName(apiState.getLastCreatedPerson().getLastName()) + .build(); + + ComparisonHelper.compareEqualFieldsOfEntities( + collectedContact, + createdContact, + List.of( + "firstName", + "lastName", + "returningTraveler", + "reportDate", + "dateOfLastContact", + "responsibleRegion", + "responsibleDistrict", + "responsibleCommunity", + "additionalInformationOnContactType", + "typeOfContact", + "contactCategory", + "relationshipWithCase", + "descriptionOfHowContactTookPlace")); + }); + + When( + "I check the created data is correctly displayed on Edit Contact page related with CHOSEN SOURCE CASE", + () -> { + collectedContact = collectContactDataRelatedWithChooseSourceCase(); + createdContact = CreateNewContactSteps.contact; + ComparisonHelper.compareEqualFieldsOfEntities( + collectedContact, + createdContact, + List.of( + "firstName", + "lastName", + "returningTraveler", + "reportDate", + "diseaseOfSourceCase", + "dateOfLastContact", + "responsibleRegion", + "responsibleDistrict", + "responsibleCommunity", + "additionalInformationOnContactType", + "typeOfContact", + "contactCategory", + "relationshipWithCase", + "descriptionOfHowContactTookPlace")); + }); + When( "I check the created data is correctly displayed on Edit Contact page for DE version", () -> { @@ -143,6 +277,11 @@ public EditContactSteps( webDriverHelpers.waitForPageLoadingSpinnerToDisappear(30); }); + When( + "^I click on ([^\"]*) radio button Contact Person tab$", + (String buttonName) -> + webDriverHelpers.clickWebElementByText( + CONTACT_CLASSIFICATION_RADIO_BUTTON, buttonName)); When( "I check the edited data is correctly displayed on Edit Contact page after editing", () -> { @@ -169,12 +308,12 @@ public EditContactSteps( "I open the last created UI Contact", () -> { webDriverHelpers.clickOnWebElementBySelector(FIRST_CASE_ID_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); }); When( "^I change all contact fields and save$", () -> { - webDriverHelpers.waitForPageLoaded(); editedContact = contactService.buildEditContact(); selectContactClassification(editedContact.getClassification()); selectMultiDayContact(editedContact.getMultiDay()); @@ -246,7 +385,7 @@ public EditContactSteps( fillExtraComment(aQuarantineOrder.getExtraComment()); webDriverHelpers.clickOnWebElementBySelector( EditContactPage.CREATE_QUARANTINE_ORDER_BUTTON); - webDriverHelpers.waitUntilIdentifiedElementIsPresent(CONTACT_SAVED_POPUP); + TimeUnit.SECONDS.sleep(2); // wait for download }); And( @@ -268,6 +407,52 @@ public EditContactSteps( + path.toAbsolutePath()), 120); }); + And( + "I click on Create button in Document Templates box in Edit Contact directory", + () -> webDriverHelpers.clickOnWebElementBySelector(CREATE_DOCUMENT_TEMPLATES)); + And( + "I click on checkbox to upload generated document to entity in Create Quarantine Order form in Edit Contact directory", + () -> webDriverHelpers.clickOnWebElementBySelector(UPLOAD_DOCUMENT_CHECKBOX)); + When( + "I select {string} Quarantine Order in Create Quarantine Order form in Edit Contact directory", + (String name) -> { + webDriverHelpers.selectFromCombobox(QUARANTINE_ORDER_COMBOBOX, name); + }); + When( + "I check if downloaded file is correct for {string} Quarantine Order in Edit Contact directory", + (String name) -> { + String uuid = apiState.getCreatedContact().getUuid(); + Path path = + Paths.get( + userDirPath + "/downloads/" + uuid.substring(0, 6).toUpperCase() + "-" + name); + assertHelpers.assertWithPoll( + () -> + Assert.assertTrue( + Files.exists(path), + "Quarantine order document was not downloaded. Path used for check: " + + path.toAbsolutePath()), + 120); + }); + When( + "I check if generated document based on {string} appeared in Documents tab in Edit Contact directory", + (String name) -> { + String uuid = apiState.getCreatedContact().getUuid(); + String path = uuid.substring(0, 6).toUpperCase() + "-" + name; + assertHelpers.assertWithPoll( + () -> + Assert.assertEquals( + path, webDriverHelpers.getTextFromWebElement(GENERATED_DOCUMENT_NAME)), + 120); + }); + When( + "I delete downloaded file created from {string} Document Template for Contact", + (String name) -> { + String uuid = apiState.getCreatedContact().getUuid(); + File toDelete = + new File( + userDirPath + "/downloads/" + uuid.substring(0, 6).toUpperCase() + "-" + name); + toDelete.deleteOnExit(); + }); When( "^I click on CONFIRMED CONTACT radio button Contact Data tab for DE version$", () -> @@ -284,7 +469,6 @@ public EditContactSteps( When( "^I click Create Case from Contact button$", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.scrollToElement(CREATE_CASE_FROM_CONTACT_BUTTON); webDriverHelpers.clickOnWebElementBySelector(CREATE_CASE_FROM_CONTACT_BUTTON); }); @@ -576,8 +760,72 @@ private Contact collectContactData() { .build(); } + private Contact collectContactDataFromCase() { + String collectedDateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE); + String collectedLastDateOfContact = webDriverHelpers.getValueFromWebElement(LAST_CONTACT_DATE); + LocalDate parsedDateOfReport = LocalDate.parse(collectedDateOfReport, formatter); + LocalDate parsedLastDateOfContact = LocalDate.parse(collectedLastDateOfContact, formatter); + Contact contactInfo = getContactInformation(); + + return Contact.builder() + .firstName(contactInfo.getFirstName()) + .lastName(contactInfo.getLastName()) + .returningTraveler( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(RETURNING_TRAVELER_OPTIONS)) + .reportDate(parsedDateOfReport) + .dateOfLastContact(parsedLastDateOfContact) + .responsibleRegion(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_REGION_COMBOBOX)) + .responsibleDistrict(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_DISTRICT_COMBOBOX)) + .responsibleCommunity(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX)) + .additionalInformationOnContactType( + webDriverHelpers.getValueFromWebElement( + ADDITIONAL_INFORMATION_OF_THE_TYPE_OF_CONTACT_INPUT)) + .typeOfContact( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(TYPE_OF_CONTACT_OPTIONS)) + .contactCategory( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(CONTACT_CATEGORY_OPTIONS)) + .relationshipWithCase( + webDriverHelpers.getValueFromCombobox(RELATIONSHIP_WITH_CASE_COMBOBOX)) + .descriptionOfHowContactTookPlace( + webDriverHelpers.getValueFromWebElement(DESCRIPTION_OF_HOW_CONTACT_TOOK_PLACE_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .build(); + } + + private Contact collectContactDataRelatedWithChooseSourceCase() { + String collectedDateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE); + String collectedLastDateOfContact = webDriverHelpers.getValueFromWebElement(LAST_CONTACT_DATE); + LocalDate parsedDateOfReport = LocalDate.parse(collectedDateOfReport, formatter); + LocalDate parsedLastDateOfContact = LocalDate.parse(collectedLastDateOfContact, formatter); + Contact contactInfo = getContactInformation(); + + return Contact.builder() + .firstName(contactInfo.getFirstName()) + .lastName(contactInfo.getLastName()) + .returningTraveler( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(RETURNING_TRAVELER_OPTIONS)) + .reportDate(parsedDateOfReport) + .diseaseOfSourceCase(webDriverHelpers.getTextFromPresentWebElement(DISEASE_VALUE)) + .dateOfLastContact(parsedLastDateOfContact) + .responsibleRegion(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_REGION_COMBOBOX)) + .responsibleDistrict(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_DISTRICT_COMBOBOX)) + .responsibleCommunity(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX)) + .additionalInformationOnContactType( + webDriverHelpers.getValueFromWebElement( + ADDITIONAL_INFORMATION_OF_THE_TYPE_OF_CONTACT_INPUT)) + .typeOfContact( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(TYPE_OF_CONTACT_OPTIONS)) + .contactCategory( + webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(CONTACT_CATEGORY_OPTIONS)) + .relationshipWithCase( + webDriverHelpers.getValueFromCombobox(RELATIONSHIP_WITH_CASE_COMBOBOX)) + .descriptionOfHowContactTookPlace( + webDriverHelpers.getValueFromWebElement(DESCRIPTION_OF_HOW_CONTACT_TOOK_PLACE_INPUT)) + .uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)) + .build(); + } + private Contact collectContactDataAfterEdit() { - webDriverHelpers.waitForPageLoaded(); String collectedDateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE); String classification = webDriverHelpers.getCheckedOptionFromHorizontalOptionGroup(CONTACT_CLASSIFICATION_OPTIONS); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditPersonContactDetailsSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditPersonContactDetailsSteps.java index ca8a9d702db..eb377129f58 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditPersonContactDetailsSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/EditPersonContactDetailsSteps.java @@ -40,6 +40,7 @@ public EditPersonContactDetailsSteps(WebDriverHelpers webDriverHelpers) { "I edit all Person primary contact details and save", () -> { newCreatederson = EditPersonSteps.newGeneratedPerson; + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); webDriverHelpers.clickOnWebElementBySelector(PRIMARY_CONTACT_DETAILS_EDIT_EMAIL_FIELD); fillContactInformationInput(newCreatederson.getEmailAddress()); webDriverHelpers.clickOnWebElementBySelector(DONE_BUTTON); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/PersonContactDetailsSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/PersonContactDetailsSteps.java index a13bf555a28..f647a810f9a 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/PersonContactDetailsSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/contacts/PersonContactDetailsSteps.java @@ -38,6 +38,7 @@ public PersonContactDetailsSteps(WebDriverHelpers webDriverHelpers) { "I complete all fields from Person Contact Details popup and save", () -> { newGeneratedPerson = EditContactPersonSteps.newGeneratedPerson; + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); selectTypeOfContactDetails( newGeneratedPerson.getPersonContactDetailsTypeOfContactDetails()); fillContactInformationInput( diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/dashboard/surveillance/SurveillanceDashboardSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/dashboard/surveillance/SurveillanceDashboardSteps.java index 9329a2f41ab..eae799ec5f4 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/dashboard/surveillance/SurveillanceDashboardSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/dashboard/surveillance/SurveillanceDashboardSteps.java @@ -15,7 +15,10 @@ package org.sormas.e2etests.steps.web.application.dashboard.surveillance; +import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.DATE_TYPE; import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.REFERENCE_DEFINITION_FULFILLED_CASES_NUMBER; +import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.REGION_COMBOBOX; +import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.REGION_COMBOBOX_DROPDOWN; import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.TIME_PERIOD_COMBOBOX; import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.TIME_PERIOD_YESTERDAY_BUTTON; @@ -23,6 +26,7 @@ import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.pages.application.NavBarPage; import org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage; import org.testng.asserts.SoftAssert; @@ -118,5 +122,911 @@ public SurveillanceDashboardSteps(WebDriverHelpers webDriverHelpers, SoftAssert number > 0, "The number of cases fulfilling the reference definition is incorrect!"); softly.assertAll(); }); + + Then( + "^I validate contacts button is clickable on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CONTACTS_BUTTON); + }); + Then( + "^I validate filter components presence on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CURRENT_PERIOD); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARISON_PERIOD); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DATE_TYPE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.REGION_COMBOBOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.RESET_FILTERS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + }); + Then( + "^I validate presence of diseases metrics on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_METRICS); + }); + Then( + "^I validate presence of diseases slider on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_SLIDER); + }); + Then( + "^I validate presence of Epidemiological Curve on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.EPIDEMIOLOGICAL_CURVE); + }); + Then( + "^I validate presence of maps on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.STATUS_MAP); + }); + Then( + "^I validate show all diseases button is available and clickable on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.SHOW_ALL_DISEASES); + }); + Then( + "^I validate only 6 disease categories are displayed on Surveillance Dashboard Page$", + () -> { + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.DISEASE_CATEGORIES), + 6, + "Number of displayed diseases boxes on surveillance dashboard is not correct"); + }); + Then( + "^I click on show all diseases on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.SHOW_ALL_DISEASES); + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.SHOW_ALL_DISEASES); + webDriverHelpers.waitUntilAListOfElementsIsPresent( + SurveillanceDashboardPage.SHOW_ALL_DISEASES, 7); + }); + Then( + "^I validate presence of all diseases on Surveillance Dashboard Page$", + () -> { + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.DISEASE_CATEGORIES), + 20, + "Number of displayed diseases boxes on surveillance dashboard is not correct"); + }); + Then( + "^I validate name of diseases is shown on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FIRST_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.SECOND_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.THIRD_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FOURTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FIFTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.SIXTH_DISEASE_BOX); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement(SurveillanceDashboardPage.FIRST_DISEASE_BOX), + "", + "First disease box is not displayed or empty"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement(SurveillanceDashboardPage.SECOND_DISEASE_BOX), + "", + "Second disease box is not displayed or empty"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement(SurveillanceDashboardPage.THIRD_DISEASE_BOX), + "", + "Third disease box is not displayed or empty"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement(SurveillanceDashboardPage.FOURTH_DISEASE_BOX), + "", + "Fourth disease box is not displayed or empty"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement(SurveillanceDashboardPage.FIFTH_DISEASE_BOX), + "", + "Fifth disease box is not displayed or empty"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement(SurveillanceDashboardPage.SIXTH_DISEASE_BOX), + "", + "Sixth disease box is not displayed or empty"); + softly.assertAll(); + }); + Then( + "^I validate total data of diseases is shown on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TOTAL_DATA_FIRST_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TOTAL_DATA_SECOND_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TOTAL_DATA_THIRD_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TOTAL_DATA_FOURTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TOTAL_DATA_FIFTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TOTAL_DATA_SIXTH_DISEASE_BOX); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.TOTAL_DATA_FIRST_DISEASE_BOX), + "", + "Total data in first disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.TOTAL_DATA_SECOND_DISEASE_BOX), + "", + "Total data in second disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.TOTAL_DATA_THIRD_DISEASE_BOX), + "", + "Total data in third disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.TOTAL_DATA_FOURTH_DISEASE_BOX), + "", + "Total data in fourth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.TOTAL_DATA_FIFTH_DISEASE_BOX), + "", + "Total data in fifth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.TOTAL_DATA_SIXTH_DISEASE_BOX), + "", + "Total data in sixth disease box is empty of in not displayed"); + softly.assertAll(); + }); + Then( + "^I validate compared data of diseases is shown on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARED_DATA_FIRST_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARED_DATA_SECOND_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARED_DATA_THIRD_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARED_DATA_FOURTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARED_DATA_FIFTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COMPARED_DATA_SIXTH_DISEASE_BOX); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.COMPARED_DATA_FIRST_DISEASE_BOX), + "", + "Compared data in first disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.COMPARED_DATA_SECOND_DISEASE_BOX), + "", + "Compared data in second disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.COMPARED_DATA_THIRD_DISEASE_BOX), + "", + "Compared data in third third box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.COMPARED_DATA_FOURTH_DISEASE_BOX), + "", + "Compared data in fourth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.COMPARED_DATA_FIFTH_DISEASE_BOX), + "", + "Compared data in fifth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.COMPARED_DATA_SIXTH_DISEASE_BOX), + "", + "Compared data in sixth disease box is empty of in not displayed"); + softly.assertAll(); + }); + Then( + "^I validate last report of diseases is shown on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.LAST_REPORT), + 6, + "Number of displayed entries for last report on surveillance dashboard is not correct"); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LAST_REPORT_FIRST_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LAST_REPORT_SECOND_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LAST_REPORT_THIRD_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LAST_REPORT_FOURTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LAST_REPORT_FIFTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LAST_REPORT_SIXTH_DISEASE_BOX); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.LAST_REPORT_FIRST_DISEASE_BOX), + "", + "Last report data in first disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.LAST_REPORT_SECOND_DISEASE_BOX), + "", + "Last report data in second disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.LAST_REPORT_THIRD_DISEASE_BOX), + "", + "Last report data in third disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.LAST_REPORT_FOURTH_DISEASE_BOX), + "", + "Last report data in fourth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.LAST_REPORT_FIFTH_DISEASE_BOX), + "", + "Last report data in fifth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.LAST_REPORT_SIXTH_DISEASE_BOX), + "", + "Last report data in sixth disease box is empty of in not displayed"); + softly.assertAll(); + }); + Then( + "^I validate fatalities of diseases is shown on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.FATALITIES), + 7, + "Number of displayed entries for fatalities displayed on surveillance dashboard is not correct"); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_FIRST_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_SECOND_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_THIRD_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_FOURTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_FIFTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_SIXTH_DISEASE_BOX); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.FATALITIES_FIRST_DISEASE_BOX), + "", + "Fatalities data in first disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.FATALITIES_SECOND_DISEASE_BOX), + "", + "Fatalities data in second disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.FATALITIES_THIRD_DISEASE_BOX), + "", + "Fatalities data in third disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.FATALITIES_FOURTH_DISEASE_BOX), + "", + "Fatalities data in fourth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.FATALITIES_FIFTH_DISEASE_BOX), + "", + "Fatalities data in fifth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.FATALITIES_SIXTH_DISEASE_BOX), + "", + "Fatalities data in sixth disease box is empty of in not displayed"); + softly.assertAll(); + }); + Then( + "^I validate number of events of diseases is shown on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.NUMBER_OF_EVENTS), + 6, + "Number of displayed entries for number of events displayed on surveillance dashboard is not correct"); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_FIRST_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_SECOND_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_THIRD_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_FOURTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_FIFTH_DISEASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_SIXTH_DISEASE_BOX); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_FIRST_DISEASE_BOX), + "", + "Number of events data in first disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_SECOND_DISEASE_BOX), + "", + "Number of events data in second disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_THIRD_DISEASE_BOX), + "", + "Number of events data in third disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_FOURTH_DISEASE_BOX), + "", + "Number of events data in fourth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_FIFTH_DISEASE_BOX), + "", + "Number of events data in fifth disease box is empty of in not displayed"); + softly.assertNotEquals( + webDriverHelpers.getTextFromWebElement( + SurveillanceDashboardPage.NUMBER_OF_EVENTS_SIXTH_DISEASE_BOX), + "", + "Number of events data in sixth disease box is empty of in not displayed"); + softly.assertAll(); + }); + Then( + "^I switch to burden information table on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(NavBarPage.DASHBOARD_BUTTON); + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.BURDEN_TABLE_VIEW_SWITCH); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_INFORMATION); + }); + Then( + "^I validate that all the headers are present in the burden information table on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_DISEASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_NEW_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_PREVIOUS_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_DYNAMIC); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_NUMBER_OF_EVENTS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_OUTBREAK_DISTRICTS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_FATALITIES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_CFR); + }); + Then( + "^I validate diseases presence in the data table on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_FIRST_DISEASE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_SECOND_DISEASE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_THIRD_DISEASE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_FOURTH_DISEASE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_FIFTH_DISEASE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DISEASE_BURDEN_BOX_SIXTH_DISEASE); + }); + Then( + "^I validate switching back to disease boxes is working on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.BURDEN_TILE_VIEW_SWITCH); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FIRST_DISEASE_BOX); + }); + Then( + "^I validate all diseases are displayed in the carousel slider options on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.AFP_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.ANTHRAX_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COVID_19_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CHOLERA_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CRS_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DENGUE_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.EVD_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.GUINEA_WORM_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.RABIES_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_FLU_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LASSA_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.MEASLES_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.MENINGITIS_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.MONKEYPOX_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.PLAGUE_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.POLIO_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.VHF_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.YELLOW_FEVER_BOX_IN_CAROUSEL_SLIDER_BAR); + }); + Then( + "^I validate counter is present on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_CASES_COUNTER_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_COUNTER_BOX_IN_CAROUSEL_SLIDER_BAR); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_COUNTER_BOX_IN_CAROUSEL_SLIDER_BAR); + }); + Then( + "^I validate presence of left statistics charts on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.STATISTICS_CHARTS); + }); + Then( + "^I validate presence of cases metrics on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_MAIN_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_NOT_A_CASE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_CONFIRMED_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_CONFIRMED_NO_SYMPTOMS_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_CONFIRMED_UNKNOWN_SYMPTOMS_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_PROBABLE_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_SUSPECT_BOX); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CASES_METRICS_NOT_YET_CLASSIFIED_BOX); + }); + Then( + "^I validate presence of fatalities counter on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FATALITIES_COUNTER); + }); + Then( + "^I validate presence of events counter on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_COUNTER); + }); + Then( + "^I validate presence of events metrics on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_TYPE_CLUSTER); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_TYPE_EVENT); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_TYPE_SIGNAL); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_TYPE_DROPPED); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.NEW_EVENTS_TYPE_SCREENING); + }); + Then( + "^I validate presence of test results counter on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_COUNTER); + }); + Then( + "^I validate presence of test results metrics on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_INDETERMINATE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_POSITIVE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_NEGATIVE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_PENDING); + }); + Then( + "^I validate presence of legend data on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.TEST_RESULTS_PENDING); + }); + Then( + "^I validate presence of chart on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATISTICS_CHARTS), + 2, + "Statistic chart is missing or not displayed"); + }); + Then( + "^I validate presence of chart download button on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_DOWNLOAD_BUTTON); + }); + Then( + "^I validate chart download options on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.LEGEND_CHART_DOWNLOAD_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_PRINT_CHART); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_DOWNLOAD_PNG_IMAGE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_DOWNLOAD_JPEG_IMAGE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_DOWNLOAD_PDF_DOCUMENT); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_DOWNLOAD_SVG_VECTOR_IMAGE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_DOWNLOAD_CSV); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DOWNLOAD_CHART_OPTION_DOWNLOAD_XLS); + }); + Then( + "^I validate presence of chart buttons on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_EXPAND_EPI_CURVE_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_GROUPING_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.LEGEND_DATA_GROUPING_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_GROUPING_DAY); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_GROUPING_EPI_WEEK); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_GROUPING_MONTH); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_GROUPING_ALWAYS_SHOW_AT_LEAST_7_ENTRIES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_CASE_STATUS_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_DEAD_OR_ALIVE_BUTTON); + }); + Then( + "^I click on legend case status on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_CASE_STATUS_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.LEGEND_DATA_CASE_STATUS_BUTTON); + }); + Then( + "^I check case status chart on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_CASE_STATUS_CONFIRMED); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_CASE_STATUS_CONFIRMED_NO_SYMPTOMS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_CASE_STATUS_CONFIRMED_UNKNOWN_SYMPTOMS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_CASE_STATUS_NOT_YET_CLASSIFIED); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_CASE_STATUS_PROBABLE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_CASE_STATUS_SUSPECT); + }); + Then( + "^I click on legend alive or dead on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_DATA_DEAD_OR_ALIVE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.LEGEND_DATA_DEAD_OR_ALIVE_BUTTON); + }); + Then( + "^I check alive or dead chart on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_ALIVE_OR_DEAD_DEAD); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_ALIVE_OR_DEAD_ALIVE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.LEGEND_CHART_ALIVE_OR_DEAD_UNKNOWN); + }); + Then( + "^I validate presence of map options on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.ZOOM_IN_BUTTON_ON_MAP); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.ZOOM_OUT_BUTTON_ON_MAP); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.FULL_SCREEN_BUTTON_ON_MAP); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.EXPAND_MAP_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.ZOOM_IN_BUTTON_ON_MAP); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.ZOOM_OUT_BUTTON_ON_MAP); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.FULL_SCREEN_BUTTON_ON_MAP); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.EXIT_FULL_SCREEN_BUTTON_ON_MAP); + // TimeUnit.SECONDS.sleep(1); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.EXIT_FULL_SCREEN_BUTTON_ON_MAP); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.EXPAND_MAP_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.COLLAPSE_MAP_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.COLLAPSE_MAP_BUTTON); + }); + Then( + "^I validate presence of Map key options on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_ONLY_NOT_YET_CLASSIFIED_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_SUSPECT_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_PROBABLE_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_CONFIRMED_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_NOT_YET_CLASSIFIED); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_SUSPECT); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_PROBABLE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_MAP_KEY_CONFIRMED); + }); + Then( + "I validate presence of Layers options on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.DASHBOARD_LAYERS_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_ALL_CASES); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_CONFIRMED_CASES_ONLY); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_CONTACTS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_EVENTS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_REGIONS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_SHOW_EPIDEMIOLOGICAL_SITUATION); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.DASHBOARD_LAYERS_HIDE_OTHER_COUNTRIES); + }); + + Then( + "I expand Epidemiological curve on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.EXPAND_EPI_CURVE); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.EXPAND_EPI_CURVE); + }); + Then( + "I verify that only epi curve chart is displayed on Surveillance Dashboard Page", + () -> { + TimeUnit.SECONDS.sleep(2); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATUS_MAP), + 0, + "Case status map should not be visible when epidemiological curve is expanded"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.DISEASES_LAYOUT), + 0, + "Diseases layout should not be visible when epidemiological curve is expanded"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATISTICS_CHARTS), + 1, + "Only one statistics chart should be visible when epidemiological curve is expanded"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.CURVE_AND_MAP_LAYOUT), + 1, + "Curve and map layout should be visible when epidemiological curve is expanded"); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CURVE_AND_MAP_LAYOUT); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.COLLAPSE_EPI_CURVE); + }); + Then( + "I expand Case status map on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.EXPAND_MAP_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.EXPAND_MAP_BUTTON); + }); + Then( + "I verify only Case status map is displayed on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.STATUS_MAP); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATUS_MAP), + 1, + "Case status map should be visible when it's expanded"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.DISEASES_LAYOUT), + 0, + "Diseases layout should not be visible when status map is expanded"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATISTICS_CHARTS), + 0, + "No statistics chart should be visible when status map is expanded"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.CURVE_AND_MAP_LAYOUT), + 1, + "Curve and map layout should be visible when status map is expanded"); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.COLLAPSE_MAP_BUTTON); + }); + Then( + "I select Difference in Number of Cases hide overview on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.HIDE_OVERVIEW); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.HIDE_OVERVIEW); + }); + Then( + "I verify that Overview data is hidden on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATUS_MAP), + 1, + "Case status map should be visible when hide overview is selected"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.DISEASES_LAYOUT), + 0, + "Diseases layout should not be visible when hide overview is selected"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.STATISTICS_CHARTS), + 1, + "Only curve statistics chart should be visible when hide overview is selected"); + softly.assertEquals( + webDriverHelpers.getNumberOfElements(SurveillanceDashboardPage.CURVE_AND_MAP_LAYOUT), + 1, + "Curve and map layout should be visible when hide overview is selected"); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.HIDE_OVERVIEW); + }); + Then( + "^I apply filter compare: today -> yesterday on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.CURRENT_PERIOD); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.DASHBOARD_TODAY); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.COMPARISON_PERIOD); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.DASHBOARD_DAY_BEFORE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.APPLY_FILTERS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + }); + Then( + "^I verify filter works on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.APPLY_FILTERS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + }); + Then( + "^I apply date filter on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.CURRENT_PERIOD); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.CURRENT_PERIOD); + webDriverHelpers.clickOnWebElementBySelector( + SurveillanceDashboardPage.DASHBOARD_THIS_WEEK); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.CURRENT_PERIOD); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.APPLY_FILTERS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + }); + Then( + "^I apply region filter on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(2); + webDriverHelpers.selectFromCombobox( + REGION_COMBOBOX_DROPDOWN, "Voreingestellte Bundesl\u00E4nder"); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.APPLY_FILTERS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.APPLY_FILTERS); + }); + Then( + "^I click on reset filters on Surveillance Dashboard Page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.RESET_FILTERS); + webDriverHelpers.clickOnWebElementBySelector(SurveillanceDashboardPage.RESET_FILTERS); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.RESET_FILTERS); + }); + Then( + "^I verify that filters were reset on Surveillance Dashboard Page$", + () -> { + TimeUnit.SECONDS.sleep(10); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SurveillanceDashboardPage.RESET_FILTERS); + softly.assertEquals( + webDriverHelpers.getValueFromWebElement(REGION_COMBOBOX), + "Region", + "Default value of region combobox should be Region"); + softly.assertEquals( + webDriverHelpers.getValueFromWebElement(DATE_TYPE), + "Most relevant date", + "Default value of date type combobox should be Most relevant date"); + }); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/CreateNewTravelEntrySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/CreateNewTravelEntrySteps.java index fa1168c11f3..2fc5c4ecd4e 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/CreateNewTravelEntrySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/CreateNewTravelEntrySteps.java @@ -18,6 +18,7 @@ package org.sormas.e2etests.steps.web.application.entries; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PERSON_SEARCH_LOCATOR_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.COMMUNITY_INPUT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISEASE_INPUT; import static org.sormas.e2etests.pages.application.cases.EditCasePage.DISTRICT_INPUT; @@ -38,6 +39,7 @@ import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.CREATE_CASE_FROM_TRAVEL_ENTRY; import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.DISEASE_NAME_INPUT; import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.FIRST_NAME_INPUT; +import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.INFO_BUTTON; import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.LAST_NAME_INPUT; import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.POINT_OF_ENTRY_CASE; import static org.sormas.e2etests.pages.application.entries.EditTravelEntryPage.SAVE_NEW_CASE_FOR_TRAVEL_ENTRY_POPUP; @@ -67,6 +69,7 @@ public class CreateNewTravelEntrySteps implements En { private final WebDriverHelpers webDriverHelpers; public static TravelEntry travelEntry; public static TravelEntry aTravelEntry; + public static TravelEntry TravelEntryUuid; public static TravelEntry newCaseFromTravelEntryData; public static Case aCase; String firstName; @@ -106,6 +109,23 @@ public CreateNewTravelEntrySteps( fillPointOfEntryDetails(travelEntry.getPointOfEntryDetails()); }); + When( + "^I fill the required fields in a new travel entry form without personal data$", + () -> { + travelEntry = travelEntryService.buildGeneratedEntryDE(); + fillDateOfArrival(travelEntry.getDateOfArrival(), Locale.GERMAN); + selectResponsibleRegion(travelEntry.getResponsibleRegion()); + selectResponsibleDistrict(travelEntry.getResponsibleDistrict()); + selectResponsibleCommunity(travelEntry.getResponsibleCommunity()); + fillDisease(travelEntry.getDisease()); + disease = travelEntry.getDisease(); + if (travelEntry.getDisease().equals("Andere epidemische Krankheit")) + fillOtherDisease("Test"); + + fillPointOfEntry(travelEntry.getPointOfEntry()); + fillPointOfEntryDetails(travelEntry.getPointOfEntryDetails()); + }); + When( "^I fill the required fields in a new travel entry form for previous created person$", () -> { @@ -136,6 +156,12 @@ public CreateNewTravelEntrySteps( fillPointOfEntryDetails(travelEntry.getPointOfEntryDetails()); }); + When( + "^I click on the person search button in create new travel entry form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); + When( "^I click on Save button from the new travel entry form$", () -> { @@ -165,6 +191,12 @@ public CreateNewTravelEntrySteps( "pointOfEntryDetails")); }); + When( + "I collect travel UUID from travel entry", + () -> { + TravelEntryUuid = collectTravelEntryUuid(); + }); + When( "I check the created data is correctly displayed on Edit case travel entry page for DE version", () -> { @@ -222,6 +254,7 @@ public CreateNewTravelEntrySteps( When( "I check if data in case based on travel entry is correct", () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(INFO_BUTTON); aCase = collectCasePersonDataBasedOnTravelEntryDE(); softly.assertEquals( aCase.getResponsibleRegion(), @@ -237,7 +270,7 @@ public CreateNewTravelEntrySteps( "Communities are not equal"); softly.assertEquals( aCase.getPointOfEntry(), - travelEntry.getPointOfEntry() + " (Inaktiv)", + travelEntry.getPointOfEntry(), "Point of entries are not equal"); softly.assertEquals( aCase.getFirstName().toLowerCase(Locale.GERMAN), @@ -369,6 +402,10 @@ private TravelEntry collectTravelEntryData() { .build(); } + private TravelEntry collectTravelEntryUuid() { + return TravelEntry.builder().uuid(webDriverHelpers.getValueFromWebElement(UUID_INPUT)).build(); + } + private TravelEntry collectTravelEntryPersonData() { return TravelEntry.builder() .firstName(webDriverHelpers.getValueFromWebElement(FIRST_NAME_INPUT)) diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/TravelEntryDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/TravelEntryDirectorySteps.java index 43ce4146737..51b87624b27 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/TravelEntryDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/entries/TravelEntryDirectorySteps.java @@ -34,6 +34,7 @@ import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.TRAVEL_ENTRY_AGGREGATION_COMBOBOX; import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.TRAVEL_ENTRY_DIRECTORY_PAGE_APPLY_FILTER_BUTTON; import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.TRAVEL_ENTRY_DIRECTORY_PAGE_SHOW_MORE_FILTERS_BUTTON; +import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.TRAVEL_ENTRY_FIRST_RECORD_IN_TABLE; import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.TRAVEL_ENTRY_GRID_RESULTS_ROWS; import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.VACCINATED_ENTRIES; @@ -67,7 +68,7 @@ public TravelEntryDirectorySteps( "I select the German travel entry CSV file in the file picker", () -> { webDriverHelpers.sendFile( - FILE_PICKER, userDirPath + "/uploads/Importvorlage_Einreise_21.11.04.csv"); + FILE_PICKER, userDirPath + "/uploads/Importvorlage_Einreise_22.04.01.csv"); }); When( @@ -151,7 +152,7 @@ public TravelEntryDirectorySteps( And( "I fill Travel Entry from input to {int} days before UI Travel Entry created on Travel Entry directory page", (Integer number) -> { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); webDriverHelpers.fillInWebElement( DATE_FROM_COMBOBOX, formatter.format( @@ -160,7 +161,7 @@ public TravelEntryDirectorySteps( And( "I fill Travel Entry to input to {int} days after UI Travel Entry created on Travel Entry directory page", (Integer number) -> { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); webDriverHelpers.fillInWebElement( DATE_TO_COMBOBOX, formatter.format( @@ -169,7 +170,7 @@ public TravelEntryDirectorySteps( And( "I fill Travel Entry from input to {int} days after before UI Travel Entry created on Travel Entry directory page", (Integer number) -> { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); webDriverHelpers.fillInWebElement( DATE_FROM_COMBOBOX, formatter.format( @@ -179,5 +180,12 @@ public TravelEntryDirectorySteps( "I apply {string} to aggregation combobox on Travel Entry directory page", (String value) -> webDriverHelpers.selectFromCombobox(TRAVEL_ENTRY_AGGREGATION_COMBOBOX, value)); + When( + "I click on first filtered record in Travel Entry", + () -> { + TimeUnit.SECONDS.sleep(2); // wait for filter + webDriverHelpers.scrollToElement(TRAVEL_ENTRY_FIRST_RECORD_IN_TABLE); + webDriverHelpers.doubleClickOnWebElementBySelector(TRAVEL_ENTRY_FIRST_RECORD_IN_TABLE); + }); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/CreateNewEventSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/CreateNewEventSteps.java index 44e6fe6b613..ee3d4328968 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/CreateNewEventSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/CreateNewEventSteps.java @@ -23,24 +23,40 @@ import static org.sormas.e2etests.pages.application.events.CreateNewEventPage.SAVE_BUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.UUID_INPUT; +import com.opencsv.CSVParser; +import com.opencsv.CSVParserBuilder; +import com.opencsv.CSVReader; +import com.opencsv.CSVReaderBuilder; +import com.opencsv.exceptions.CsvException; import cucumber.api.java8.En; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.List; import java.util.Locale; import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; import org.sormas.e2etests.entities.pojo.web.Event; import org.sormas.e2etests.entities.services.EventService; import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.testng.asserts.SoftAssert; +@Slf4j public class CreateNewEventSteps implements En { private final WebDriverHelpers webDriverHelpers; protected static Event newEvent; public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("M/d/yyyy"); public static final DateTimeFormatter DATE_FORMATTER_DE = DateTimeFormatter.ofPattern("d.M.yyyy"); + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @Inject - public CreateNewEventSteps(WebDriverHelpers webDriverHelpers, EventService eventService) { + public CreateNewEventSteps( + WebDriverHelpers webDriverHelpers, EventService eventService, SoftAssert softly) { this.webDriverHelpers = webDriverHelpers; When( @@ -107,6 +123,76 @@ public CreateNewEventSteps(WebDriverHelpers webDriverHelpers, EventService event webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); webDriverHelpers.clickOnWebElementBySelector(NEW_EVENT_CREATED_MESSAGE); }); + + When( + "I check if downloaded data generated by basic event export option is correct", + () -> { + String file = + "./downloads/sormas_ereignisse_" + LocalDate.now().format(formatter) + "_.csv"; + Event reader = parseBasicEventExport(file); + Path path = Paths.get(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid().toLowerCase(), + newEvent.getUuid().toLowerCase(), + "UUIDs are not equal"); + softly.assertEquals( + reader.getEventStatus().toLowerCase(), + newEvent.getEventStatus().toLowerCase(), + "Event statuses are not equal"); + softly.assertEquals( + reader.getRiskLevel().toLowerCase(), + newEvent.getRiskLevel().toLowerCase(), + "Risk levels are not equal"); + softly.assertEquals( + reader.getInvestigationStatus().toLowerCase(), + newEvent.getInvestigationStatus().toLowerCase(), + "Investigation statuses are not equal"); + softly.assertEquals( + reader.getEventManagementStatus().toLowerCase(), + newEvent.getEventManagementStatus().toLowerCase(), + "Event management statuses are not equal"); + softly.assertEquals( + reader.getDisease().toLowerCase(), + newEvent.getDisease().toLowerCase(), + "Diseases statuses are not equal"); + softly.assertAll(); + }); + + When( + "I check if downloaded data generated by detailed event export option is correct", + () -> { + String file = + "./downloads/sormas_ereignisse_" + LocalDate.now().format(formatter) + "_.csv"; + Event reader = parseDetailedEventExport(file); + Path path = Paths.get(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid().toLowerCase(), + newEvent.getUuid().toLowerCase(), + "UUIDs are not equal"); + softly.assertEquals( + reader.getEventStatus().toLowerCase(), + newEvent.getEventStatus().toLowerCase(), + "Event statuses are not equal"); + softly.assertEquals( + reader.getRiskLevel().toLowerCase(), + newEvent.getRiskLevel().toLowerCase(), + "Risk levels are not equal"); + softly.assertEquals( + reader.getInvestigationStatus().toLowerCase(), + newEvent.getInvestigationStatus().toLowerCase(), + "Investigation statuses are not equal"); + softly.assertEquals( + reader.getEventManagementStatus().toLowerCase(), + newEvent.getEventManagementStatus().toLowerCase(), + "Event management statuses are not equal"); + softly.assertEquals( + reader.getDisease().toLowerCase(), + newEvent.getDisease().toLowerCase(), + "Diseases statuses are not equal"); + softly.assertAll(); + }); } private Event collectEventUuid() { @@ -180,4 +266,74 @@ private void selectResponsibleDistrict(String responsibleDistrict) { private void selectResponsibleCommunity(String responsibleCommunity) { webDriverHelpers.selectFromCombobox(EVENT_COMMUNITY, responsibleCommunity); } + + public Event parseBasicEventExport(String fileName) { + List r = null; + String[] values = new String[] {}; + Event builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(2) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseBasicEventExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseBasicEventExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = + Event.builder() + .uuid(values[0]) + .eventStatus(values[4]) + .riskLevel(values[5]) + .investigationStatus(values[6]) + .eventManagementStatus(values[7]) + .disease(values[11]) + .build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseBasicEventExport: {}", e.getCause()); + } + return builder; + } + + public Event parseDetailedEventExport(String fileName) { + List r = null; + String[] values = new String[] {}; + Event builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(3) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseDetailedEventExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseDetailedEventExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = + Event.builder() + .uuid(values[0]) + .eventStatus(values[2]) + .eventManagementStatus(values[3]) + .riskLevel(values[5]) + .investigationStatus(values[7]) + .disease(values[10]) + .build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseCustomCaseExport: {}", e.getCause()); + } + return builder; + } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EditEventSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EditEventSteps.java index f0e8f7282cf..87892dbcb9a 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EditEventSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EditEventSteps.java @@ -20,26 +20,49 @@ import static org.sormas.e2etests.pages.application.actions.CreateNewActionPage.NEW_ACTION_POPUP; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.ALL_RESULTS_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.CreateNewCasePage.PERSON_SEARCH_LOCATOR_BUTTON; import static org.sormas.e2etests.pages.application.cases.EditCasePage.UUID_INPUT; +import static org.sormas.e2etests.pages.application.events.EditEventPage.CASE_CONTROL_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.COHORT_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.COMPLIANT_PATHOGEN_FINE_TYPING_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.CONTACT_TO_CONTAMINATED_MATERIALS_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.CONTACT_TO_SICK_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; import static org.sormas.e2etests.pages.application.events.EditEventPage.CREATE_CONTACTS_BULK_EDIT_BUTTON; +import static org.sormas.e2etests.pages.application.events.EditEventPage.DESCRIPTIVE_ANALYSIS_OF_ASCETAINED_DATA_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; import static org.sormas.e2etests.pages.application.events.EditEventPage.DISEASE_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.DISEASE_INPUT; import static org.sormas.e2etests.pages.application.events.EditEventPage.EDIT_EVENT_GROUP_BUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.EDIT_FIRST_TASK; +import static org.sormas.e2etests.pages.application.events.EditEventPage.EPIDEMIOLOGICAL_EVIDENCE_OPTIONS; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_ACTIONS_TAB; +import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_CLUSTER_EDIT; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_DATA_SAVED_MESSAGE; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_HANDOUT_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_INVESTIGATION_STATUS_OPTIONS; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_MANAGEMENT_STATUS_OPTIONS; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_STATUS_OPTIONS; +import static org.sormas.e2etests.pages.application.events.EditEventPage.EXPLORATIVE_SURVEY_OF_AFFECTED_PEOPLE_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.EXPRESSED_BY_THE_DISEASE_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.EXPRESSED_BY_THE_HEALTH_DEPARTMENT_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.FACILITY_CATEGORY_COMBOBOX; +import static org.sormas.e2etests.pages.application.events.EditEventPage.FACILITY_TYPE_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.FIRST_GROUP_ID; import static org.sormas.e2etests.pages.application.events.EditEventPage.GROUP_EVENT_NAME_POPUP_INPUT; import static org.sormas.e2etests.pages.application.events.EditEventPage.GROUP_EVENT_UUID; +import static org.sormas.e2etests.pages.application.events.EditEventPage.IMPRESSION_TEST_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.LABORATORY_DIAGNOSTIC_EVIDENCE_OPTIONS; import static org.sormas.e2etests.pages.application.events.EditEventPage.LINK_EVENT_GROUP_BUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.NAVIGATE_TO_EVENT_DIRECTORY_EVENT_GROUP_BUTTON; +import static org.sormas.e2etests.pages.application.events.EditEventPage.NAVIGATE_TO_EVENT_DIRECTORY_LIST_GROUP_BUTTON; +import static org.sormas.e2etests.pages.application.events.EditEventPage.NAVIGATE_TO_EVENT_PARTICIPANTS_BUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.NEW_ACTION_BUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.NEW_EVENT_GROUP_RADIOBUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.NEW_GROUP_EVENT_CREATED_MESSAGE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.OTHER_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.PATHOGEN_FINE_TYPING_COMPLIANT_WITH_THE_ONE_OF_CASES_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.PLACE_OF_STAY_COMBOBOX; +import static org.sormas.e2etests.pages.application.events.EditEventPage.PRIMARY_MODE_OF_TRANSMISSION_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.REPORT_DATE_INPUT; import static org.sormas.e2etests.pages.application.events.EditEventPage.RISK_LEVEL_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.RISK_LEVEL_INPUT; @@ -49,12 +72,19 @@ import static org.sormas.e2etests.pages.application.events.EditEventPage.SELECT_EVENT_GROUP_RADIOBUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.SOURCE_TYPE_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.SOURCE_TYPE_INPUT; +import static org.sormas.e2etests.pages.application.events.EditEventPage.SPATIAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; import static org.sormas.e2etests.pages.application.events.EditEventPage.START_DATA_INPUT; +import static org.sormas.e2etests.pages.application.events.EditEventPage.STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.SUSPICION_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.TEMPORAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE; import static org.sormas.e2etests.pages.application.events.EditEventPage.TITLE_INPUT; import static org.sormas.e2etests.pages.application.events.EditEventPage.TOTAL_ACTIONS_COUNTER; import static org.sormas.e2etests.pages.application.events.EditEventPage.TYPE_OF_PLACE_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EditEventPage.TYPE_OF_PLACE_INPUT; import static org.sormas.e2etests.pages.application.events.EditEventPage.UNLINK_EVENT_BUTTON; +import static org.sormas.e2etests.pages.application.events.EditEventPage.VERIFICATION_OF_AT_LEAST_TWO_INFECTED_OR_DISEASED_PERSONS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.VERIFICATION_ON_MATERIALS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; +import static org.sormas.e2etests.pages.application.events.EditEventPage.WATER_SAMPLE_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE; import static org.sormas.e2etests.pages.application.events.EditEventPage.getGroupEventName; import static org.sormas.e2etests.pages.application.events.EventActionsPage.CREATE_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.BULK_ACTIONS_EVENT_DIRECTORY; @@ -63,6 +93,7 @@ import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.getByEventUuid; import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.ADD_PARTICIPANT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.APPLY_FILTERS_BUTTON; +import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.CONFIRM_NAVIGATION_POPUP; import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.CREATE_NEW_PERSON_RADIO_BUTTON; import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.DISCARD_BUTTON; import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.ERROR_MESSAGE_TEXT; @@ -83,6 +114,7 @@ import static org.sormas.e2etests.pages.application.persons.EditPersonPage.POPUP_RESPONSIBLE_DISTRICT_COMBOBOX; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.POPUP_RESPONSIBLE_REGION_COMBOBOX; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.POPUP_SAVE; +import static org.sormas.e2etests.pages.application.persons.EditPersonPage.SEE_EVENTS_FOR_PERSON; import static org.sormas.e2etests.steps.BaseSteps.locale; import com.github.javafaker.Faker; @@ -95,6 +127,7 @@ import java.time.format.TextStyle; import java.util.List; import java.util.Locale; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; import org.sormas.e2etests.entities.pojo.web.Event; @@ -154,6 +187,166 @@ public EditEventSteps( webDriverHelpers.waitUntilElementIsVisibleAndClickable(EVENT_DATA_SAVED_MESSAGE); }); + When( + "I check CLUSTER option on edit Event page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(EVENT_CLUSTER_EDIT); + }); + + When( + "I select {string} option from Primary Mode Of Transmission Combobox on edit Event page", + (String option) -> { + webDriverHelpers.selectFromCombobox(PRIMARY_MODE_OF_TRANSMISSION_COMBOBOX, option); + }); + + When( + "I click on Epidemiological evidence with ([^\"]*) option", + (String option) -> { + webDriverHelpers.clickWebElementByText(EPIDEMIOLOGICAL_EVIDENCE_OPTIONS, option); + }); + + When( + "I tick the all options for Study on Epidemiological evidence for De version", + () -> { + webDriverHelpers.clickOnWebElementBySelector(STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + CASE_CONTROL_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + COHORT_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I check that all options for Study on Epidemiological evidence appears and there are checked for De version", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CASE_CONTROL_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + COHORT_STUDY_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I tick the all options for Explorative survey of affected people on Epidemiological evidence for De version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + EXPLORATIVE_SURVEY_OF_AFFECTED_PEOPLE_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + CONTACT_TO_SICK_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + CONTACT_TO_CONTAMINATED_MATERIALS_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I check the all options for Explorative survey of affected people on Epidemiological evidence appears and there are checked for De version", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + EXPLORATIVE_SURVEY_OF_AFFECTED_PEOPLE_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CONTACT_TO_SICK_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + CONTACT_TO_CONTAMINATED_MATERIALS_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I tick the all options for Descriptive analysis of ascertained data on Epidemiological evidence for De version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + DESCRIPTIVE_ANALYSIS_OF_ASCETAINED_DATA_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector(TEMPORAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector(SPATIAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector(PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I check the all options for Descriptive analysis of ascertained data on Epidemiological evidence appears and there are checked for De version", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + DESCRIPTIVE_ANALYSIS_OF_ASCETAINED_DATA_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + TEMPORAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SPATIAL_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I tick the all options for Suspicion on Epidemiological evidence for De version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + SUSPICION_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + EXPRESSED_BY_THE_DISEASE_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + EXPRESSED_BY_THE_HEALTH_DEPARTMENT_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I check the all options for Suspicion on Epidemiological evidence are visible and clickable for De version", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + SUSPICION_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + EXPRESSED_BY_THE_DISEASE_PERSON_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + EXPRESSED_BY_THE_HEALTH_DEPARTMENT_EPIDEMIOLOGICAL_EVIDENCE_BUTTON_DE); + }); + + When( + "I click on Laboratory diagnostic evidence with ([^\"]*) option", + (String option) -> { + webDriverHelpers.clickWebElementByText(LABORATORY_DIAGNOSTIC_EVIDENCE_OPTIONS, option); + }); + + When( + "I tick the all options for Verification of at least two infected or diseased persons on Laboratory diagnostic evidence for De version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + VERIFICATION_OF_AT_LEAST_TWO_INFECTED_OR_DISEASED_PERSONS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + COMPLIANT_PATHOGEN_FINE_TYPING_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + }); + + When( + "I check the all options for Verification of at least two infected or diseased persons on Laboratory diagnostic evidence appears and there are checked for De version", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + VERIFICATION_OF_AT_LEAST_TWO_INFECTED_OR_DISEASED_PERSONS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + COMPLIANT_PATHOGEN_FINE_TYPING_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + }); + + When( + "I tick the all options for Verification on materials on Laboratory diagnostic evidence for De version", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + VERIFICATION_ON_MATERIALS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + IMPRESSION_TEST_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + WATER_SAMPLE_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + OTHER_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.clickOnWebElementBySelector( + PATHOGEN_FINE_TYPING_COMPLIANT_WITH_THE_ONE_OF_CASES_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + }); + + When( + "I check the all options for Verification on materials on Laboratory diagnostic evidence appears and there are checked for De version", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + VERIFICATION_ON_MATERIALS_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + IMPRESSION_TEST_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + WATER_SAMPLE_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + OTHER_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PATHOGEN_FINE_TYPING_COMPLIANT_WITH_THE_ONE_OF_CASES_LABORATORY_DIAGNOSTIC_EVIDENCE_BUTTON_DE); + }); + // TODO refactor this When( "I collect the UUID displayed on Edit event page", @@ -274,6 +467,12 @@ public EditEventSteps( webDriverHelpers.waitUntilElementIsVisibleAndClickable(PERSON_DATA_SAVED); }); + When( + "^I click on the person search button in add new event participant form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PERSON_SEARCH_LOCATOR_BUTTON); + }); + When( "I fill birth fields for participant in event participant list", () -> { @@ -306,6 +505,15 @@ public EditEventSteps( fillFirstName(participant.getFirstName()); }); + When( + "I add participant responsible region and responsible district only", + () -> { + participant = eventParticipant.buildGeneratedEventParticipant(); + webDriverHelpers.clickOnWebElementBySelector(ADD_PARTICIPANT_BUTTON); + selectResponsibleRegion(participant.getResponsibleRegion()); + selectResponsibleDistrict(participant.getResponsibleDistrict()); + }); + When( "I add participant first and last name only", () -> { @@ -341,6 +549,18 @@ public EditEventSteps( webDriverHelpers.clickOnWebElementBySelector(PICK_OR_CREATE_POPUP_SAVE_BUTTON); }); + When( + "I click on SAVE button in edit event form", + () -> { + webDriverHelpers.clickOnWebElementBySelector(PICK_OR_CREATE_POPUP_SAVE_BUTTON); + }); + + When( + "I confirm navigation popup", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_POPUP); + }); + When( "I click on Create Contacts button from bulk actions menu in Event Participant Tab", () -> { @@ -374,14 +594,12 @@ public EditEventSteps( When( "I choose select event group Radiobutton", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(SELECT_EVENT_GROUP_RADIOBUTTON); }); When( "I select the first row from table and I click on save button", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(FIRST_GROUP_ID); webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON_FOR_POPUP_WINDOWS); }); @@ -389,15 +607,14 @@ public EditEventSteps( When( "I unlinked the first chosen group by click on Unlink event group button", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.scrollToElement(UNLINK_EVENT_BUTTON); webDriverHelpers.clickOnWebElementBySelector(UNLINK_EVENT_BUTTON); + TimeUnit.SECONDS.sleep(3); // waiting for unlinked }); When( "I click on Edit event group button from event groups box", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.scrollToElement(EDIT_EVENT_GROUP_BUTTON); webDriverHelpers.clickOnWebElementBySelector(EDIT_EVENT_GROUP_BUTTON); webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON_FOR_EDIT_EVENT_GROUP); @@ -406,19 +623,35 @@ public EditEventSteps( When( "I click on Edit event button for the first event in Events section", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(EDIT_EVENT_GROUP_BUTTON); }); When( "I click on the Navigate to event directory filtered on this event group", () -> { - webDriverHelpers.waitForPageLoaded(); - webDriverHelpers.scrollToElement(NAVIGATE_TO_EVENT_DIRECTORY_EVENT_GROUP_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + NAVIGATE_TO_EVENT_DIRECTORY_EVENT_GROUP_BUTTON); webDriverHelpers.clickOnWebElementBySelector( NAVIGATE_TO_EVENT_DIRECTORY_EVENT_GROUP_BUTTON); }); + When( + "I navigate to EVENTS LIST from edit event page", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + NAVIGATE_TO_EVENT_DIRECTORY_LIST_GROUP_BUTTON); + webDriverHelpers.clickOnWebElementBySelector( + NAVIGATE_TO_EVENT_DIRECTORY_LIST_GROUP_BUTTON); + }); + + When( + "I navigate to EVENT PARTICIPANT from edit event page", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + NAVIGATE_TO_EVENT_PARTICIPANTS_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(NAVIGATE_TO_EVENT_PARTICIPANTS_BUTTON); + }); + When( "^I create a new event group$", () -> { @@ -470,13 +703,18 @@ public EditEventSteps( webDriverHelpers.accessWebSite(LAST_CREATED_EVENT_ACTIONS_URL); webDriverHelpers.waitForPageLoaded(); }); + Then( + "I check that SEE EVENTS FOR THIS PERSON button appears on Edit Person page", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(SEE_EVENTS_FOR_PERSON); + }); Then( "I click on New Action from Event Actions tab", () -> { webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(CREATE_BUTTON); webDriverHelpers.clickOnWebElementBySelector(CREATE_BUTTON); - webDriverHelpers.waitForPageLoaded(); }); Then( @@ -518,7 +756,6 @@ public EditEventSteps( "I check that number of displayed Event Participants is {int}", (Integer number) -> { webDriverHelpers.clickOnWebElementBySelector(EditEventPage.EVENT_PARTICIPANTS_TAB); - webDriverHelpers.waitForPageLoaded(); assertHelpers.assertWithPoll20Second( () -> Assert.assertEquals( @@ -557,6 +794,21 @@ public EditEventSteps( + path.toAbsolutePath()), 120); }); + When( + "I set Place of stay to {string}, Facility Category to {string} and Facility Type to {string} in Edit Event directory", + (String placeOfStay, String facilityCategory, String facilityType) -> { + selectPlaceOfStay(placeOfStay); + selectFacilityCategory(facilityCategory); + selectFacilityType(facilityType); + }); + + When( + "I click on Save Button in Edit Event directory", + () -> { + webDriverHelpers.scrollToElement(SAVE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EVENT_DATA_SAVED_MESSAGE); + }); } private Person collectPersonUuid() { @@ -661,6 +913,18 @@ private void selectDisease(String disease) { webDriverHelpers.selectFromCombobox(DISEASE_COMBOBOX, disease); } + private void selectFacilityType(String facilityType) { + webDriverHelpers.selectFromCombobox(FACILITY_TYPE_COMBOBOX, facilityType); + } + + private void selectFacilityCategory(String facilityCategory) { + webDriverHelpers.selectFromCombobox(FACILITY_CATEGORY_COMBOBOX, facilityCategory); + } + + private void selectPlaceOfStay(String placeOfStay) { + webDriverHelpers.selectFromCombobox(PLACE_OF_STAY_COMBOBOX, placeOfStay); + } + private void fillTitle(String title) { webDriverHelpers.fillInWebElement(TITLE_INPUT, title); } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventActionsTableSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventActionsTableSteps.java index 01671c972c1..8ca9d5c67b8 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventActionsTableSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventActionsTableSteps.java @@ -27,6 +27,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import javax.inject.Inject; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.WebElement; @@ -37,6 +39,7 @@ import org.sormas.e2etests.steps.BaseSteps; import org.testng.asserts.SoftAssert; +@Slf4j public class EventActionsTableSteps implements En { private final WebDriverHelpers webDriverHelpers; @@ -71,7 +74,7 @@ public EventActionsTableSteps( "Event ID is not correct"); softly.assertEquals( eventActionTableEntry.getActionTitle(), - apiState.getCreatedAction().getTitle(), + apiState.getCreatedAction().getMeasure(), "Action title is not correct"); softly.assertEquals( eventActionTableEntry.getActionCreationDate().toString().substring(0, 10), @@ -90,8 +93,8 @@ public EventActionsTableSteps( apiState.getCreatedAction().getPriority(), "Priority is not correct"); softly.assertEquals( - eventActionTableEntry.getActionLastModifiedBy(), - UserRoles.NationalUser.getRole(), + eventActionTableEntry.getActionLastModifiedBy().toUpperCase(), + UserRoles.NationalUser.getRole().toUpperCase(), "Last modified by user is not correct"); softly.assertAll(); }); @@ -183,14 +186,20 @@ private Map extractColumnHeadersHashMap() { return headerHashmap; } + @SneakyThrows private LocalDateTime getLocalDateTimeFromColumns(String date) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/dd/yyyy h:mm a"); + if (date.isEmpty()) { + throw new Exception(String.format("Provided date to be parsed: %s, is empty!", date)); + } + DateTimeFormatter formatter = + DateTimeFormatter.ofPattern("M/d/yyyy h:m a").localizedBy(Locale.ENGLISH); try { - return LocalDateTime.parse(date, formatter); + log.info("Parsing date: [{}]", date); + return LocalDateTime.parse(date.trim(), formatter); } catch (Exception e) { throw new WebDriverException( String.format( - "Unable to parse date: %s due to caught exception: %s", date, e.getMessage())); + "Unable to parse date: [ %s ] due to caught exception: %s", date, e.getMessage())); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventDirectorySteps.java index 2734d0cc758..3ba832969cd 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventDirectorySteps.java @@ -27,19 +27,24 @@ import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.DATE_TO_COMBOBOX; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.PERSON_ID_NAME_CONTACT_INFORMATION_LIKE_INPUT; import static org.sormas.e2etests.pages.application.configuration.DocumentTemplatesPage.FILE_PICKER; +import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_MANAGEMENT_STATUS_CHECK; import static org.sormas.e2etests.pages.application.events.EditEventPage.EVENT_PARTICIPANTS_TAB; import static org.sormas.e2etests.pages.application.events.EditEventPage.FIRST_EVENT_PARTICIPANT; import static org.sormas.e2etests.pages.application.events.EditEventPage.NEW_TASK_BUTTON; import static org.sormas.e2etests.pages.application.events.EditEventPage.UUID_INPUT; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.APPLY_FILTER; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.BASIC_EVENT_EXPORT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.BASIC_EXPORT_PARTICIPANT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.BULK_ACTIONS_EVENT_DIRECTORY; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.BULK_EDIT_EVENT_DIRECTORY; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.CHANGE_EVENT_MANAGEMENT_STATUS_CHECKBOX; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.CLOSE_POPUP_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.COMMIT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.CREATED_PARTICIPANT; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.CREATE_CASE_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.CUSTOM_EXPORT_PARTICIPANT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.DATE_TYPE_COMBOBOX; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.DETAILED_EVENT_EXPORT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.DETAILED_EXPORT_PARTICIPANT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.ENTER_BULK_EDIT_MODE_EVENT_DIRECTORY; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENTS_COLUMN_HEADERS; @@ -58,6 +63,7 @@ import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_GROUP_NAME_SORT; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_INVESTIGATION_STATUS; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_MANAGEMENT_FILTER; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_MANAGEMENT_STATUS_COMBOBOX; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_REGION_COMBOBOX_INPUT; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_STATUS_FILTER_BUTTONS; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.EVENT_STATUS_FILTER_COMBOBOX; @@ -84,6 +90,7 @@ import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.LINK_EVENT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.LINK_EVENT_BUTTON_EDIT_PAGE; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.MORE_BUTTON_EVENT_DIRECTORY; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.NEW_EVENT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.RESET_FILTER; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.SAVE_BUTTON_IN_LINK_FORM; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.SEARCH_EVENT_BY_FREE_TEXT; @@ -91,6 +98,8 @@ import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.TOTAL_EVENTS_COUNTER; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.UNLINK_EVENT_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.getByEventUuid; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.getCheckboxByIndex; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.getCheckboxByUUID; import static org.sormas.e2etests.pages.application.persons.PersonDirectoryPage.APPLY_FILTERS_BUTTON; import static org.sormas.e2etests.pages.application.persons.PersonDirectoryPage.RESET_FILTERS_BUTTON; import static org.sormas.e2etests.steps.BaseSteps.locale; @@ -162,6 +171,7 @@ public EventDirectorySteps( SEARCH_EVENT_BY_FREE_TEXT, dataOperations.getPartialUuidFromAssociatedLink(eventUuid)); }); + When( "I navigate to the last created through API Event page via URL", () -> { @@ -187,7 +197,6 @@ public EventDirectorySteps( "I click checkbox to choose all Event results on Event Directory Page", () -> { webDriverHelpers.clickOnWebElementBySelector(FIRST_CHECKBOX_EVENT_DIRECTORY); - webDriverHelpers.waitForPageLoaded(); }); When( @@ -216,44 +225,39 @@ public EventDirectorySteps( () -> { String region = apiState.getCreatedEvent().getEventLocation().getRegion().getUuid(); webDriverHelpers.selectFromCombobox( - EVENT_REGION_COMBOBOX_INPUT, RegionsValues.getValueFor(region)); + EVENT_REGION_COMBOBOX_INPUT, RegionsValues.getNameValueForUuid(region)); }); When( "I chose District option in Event Group Directory", () -> { - webDriverHelpers.waitForPageLoaded(); String district = apiState.getCreatedEvent().getEventLocation().getDistrict().getUuid(); webDriverHelpers.selectFromCombobox( - EVENT_DISTRICT_COMBOBOX_INPUT, DistrictsValues.getNameByUUID(district)); + EVENT_DISTRICT_COMBOBOX_INPUT, DistrictsValues.getNameValueForUuid(district)); }); When( "I chose Community option in Event Group Directory", () -> { - webDriverHelpers.waitForPageLoaded(); String community = apiState.getCreatedEvent().getEventLocation().getCommunity().getUuid(); webDriverHelpers.selectFromCombobox( - EVENT_COMMUNITY_COMBOBOX_INPUT, CommunityValues.getValueFor(community)); + EVENT_COMMUNITY_COMBOBOX_INPUT, CommunityValues.getNameValueForUuid(community)); }); When( "I chose Region {string} option in Event Group Directory", (String regionOption) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(EVENT_REGION_COMBOBOX_INPUT, regionOption); }); When( "I chose District {string} option in Event Group Directory", (String districtOption) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(EVENT_DISTRICT_COMBOBOX_INPUT, districtOption); }); When( "I chose Community {string} option in Event Group Directory", (String communityOption) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(EVENT_COMMUNITY_COMBOBOX_INPUT, communityOption); }); @@ -272,7 +276,6 @@ public EventDirectorySteps( searchText = "All groups"; break; } - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(EVENT_STATUS_FILTER_COMBOBOX, searchText); }); @@ -303,10 +306,23 @@ public EventDirectorySteps( And( "I click on Bulk Actions combobox on Event Directory Page", () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS_EVENT_DIRECTORY)); + When( + "^I select first (\\d+) results in grid in Event Directory$", + (Integer number) -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + for (int i = 2; i <= number + 1; i++) { + webDriverHelpers.scrollToElement(getCheckboxByIndex(String.valueOf(i))); + webDriverHelpers.clickOnWebElementBySelector(getCheckboxByIndex(String.valueOf(i))); + } + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); And( "I click on Group Events from Bulk Actions combobox on Event Directory Page", () -> webDriverHelpers.clickOnWebElementBySelector(GROUP_EVENTS_EVENT_DIRECTORY)); + And( + "I click on Edit Events from Bulk Actions combobox on Event Directory Page", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_EDIT_EVENT_DIRECTORY)); When( "I navigate to the last created Event page via URL", () -> { @@ -320,12 +336,6 @@ public EventDirectorySteps( webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(UUID_INPUT, 50); }); - When( - "^I click on ([^\"]*) Radiobutton on Event Directory Page$", - (String buttonName) -> { - webDriverHelpers.clickWebElementByText(EVENTS_RADIO_BUTTON, buttonName); - webDriverHelpers.waitForPageLoaded(); - }); When( "I check that name appearing in hover is equal to name of linked Event group", () -> { @@ -336,7 +346,12 @@ public EventDirectorySteps( .build(); ComparisonHelper.compareEqualFieldsOfEntities( collectedGroup, createdGroup, List.of("name")); - webDriverHelpers.waitForPageLoaded(); + }); + + When( + "^I click on ([^\"]*) Radiobutton on Event Directory Page$", + (String buttonName) -> { + webDriverHelpers.clickWebElementByText(EVENTS_RADIO_BUTTON, buttonName); }); When( @@ -349,6 +364,7 @@ public EventDirectorySteps( When( "^I click on Unlink Event button on Event Directory Page$", () -> webDriverHelpers.clickOnWebElementBySelector(UNLINK_EVENT_BUTTON)); + When( "^I fill Id filter with Id of last created event in Link Event to group form$", () -> @@ -382,7 +398,6 @@ public EventDirectorySteps( "I apply {string} to combobox on Event Directory Page", (String eventParameter) -> { webDriverHelpers.selectFromCombobox(EVENT_DISPLAY_COMBOBOX, eventParameter); - webDriverHelpers.waitForPageLoaded(); }); And( "I apply Date type filter to {string} on Event directory page", @@ -444,10 +459,16 @@ public EventDirectorySteps( webDriverHelpers.selectFromCombobox( FILTER_BY_RISK_LEVEL, RiskLevelValues.getCaptionForName(riskLevel)); }); + When( + "I select a German Risk level filter based on the event created with API", + () -> { + String riskLevel = apiState.getCreatedEvent().getRiskLevel(); + webDriverHelpers.selectFromCombobox( + FILTER_BY_RISK_LEVEL, RiskLevelValues.getCaptionForNameDE(riskLevel)); + }); When( "I fill Reporting User filter to {string} on Event Directory Page", (String reportingUser) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(FILTER_BY_REPORTING_USER, reportingUser); }); And( @@ -479,6 +500,14 @@ public EventDirectorySteps( FILTER_BY_RISK_LEVEL, RiskLevelValues.getRandomUIRiskLevelDifferentThan(apiRiskLevel)); }); + When( + "I select random German risk level value different than risk level value of last created via API Event in Event Directory", + () -> { + String apiRiskLevel = apiState.getCreatedEvent().getRiskLevel(); + webDriverHelpers.selectFromCombobox( + FILTER_BY_RISK_LEVEL, + RiskLevelValues.getRandomUIRiskLevelDifferentThanDE(apiRiskLevel)); + }); When( "I select random Disease filter among the filter options from API", @@ -499,7 +528,6 @@ public EventDirectorySteps( When( "I filter by last created group in Event Directory Page", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.fillInWebElement(EVENT_GROUP_INPUT, EditEventSteps.groupEvent.getUuid()); }); @@ -512,7 +540,6 @@ public EventDirectorySteps( When( "I select Signal filter from quick filter", () -> { - webDriverHelpers.waitForPageLoaded(); TimeUnit.SECONDS.sleep(5); webDriverHelpers.clickOnWebElementBySelector(EventDirectoryPage.EVENT_SIGNAL); }); @@ -520,7 +547,6 @@ public EventDirectorySteps( When( "I select Event filter from quick filter", () -> { - webDriverHelpers.waitForPageLoaded(); TimeUnit.SECONDS.sleep(5); webDriverHelpers.clickOnWebElementBySelector(EventDirectoryPage.EVENT_EVENT); }); @@ -528,7 +554,6 @@ public EventDirectorySteps( When( "I select Screening filter from quick filter", () -> { - webDriverHelpers.waitForPageLoaded(); TimeUnit.SECONDS.sleep(5); webDriverHelpers.clickOnWebElementBySelector(EventDirectoryPage.EVENT_SCREENING); }); @@ -536,7 +561,6 @@ public EventDirectorySteps( When( "I select Cluster filter from quick filter", () -> { - webDriverHelpers.waitForPageLoaded(); TimeUnit.SECONDS.sleep(5); webDriverHelpers.clickOnWebElementBySelector(EventDirectoryPage.EVENT_CLUSTER); }); @@ -544,7 +568,6 @@ public EventDirectorySteps( When( "I select Dropped filter from quick filter", () -> { - webDriverHelpers.waitForPageLoaded(); TimeUnit.SECONDS.sleep(5); webDriverHelpers.clickOnWebElementBySelector(EventDirectoryPage.EVENT_DROPPED); }); @@ -557,6 +580,14 @@ public EventDirectorySteps( FILTER_BY_SOURCE_TYPE, SourceTypeValues.getCaptionForName((sourceType))); }); + When( + "I select German Source Type based on the event created with API", + () -> { + String sourceType = apiState.getCreatedEvent().getSrcType(); + webDriverHelpers.selectFromCombobox( + FILTER_BY_SOURCE_TYPE, SourceTypeValues.getCaptionForNameDE((sourceType))); + }); + When( "I select source Type filter value different than the source type value of the last created via API case in Event Directory", () -> { @@ -566,6 +597,15 @@ public EventDirectorySteps( SourceTypeValues.getRandomSourceTypeDifferentThan(apiSourceType)); }); + When( + "I select German source Type filter value different than the source type value of the last created via API case in Event Directory", + () -> { + String apiSourceType = apiState.getCreatedEvent().getSrcType(); + webDriverHelpers.selectFromCombobox( + FILTER_BY_SOURCE_TYPE, + SourceTypeValues.getRandomSourceTypeDifferentThanDE(apiSourceType)); + }); + When( "I select Type of Place field among the filter options from API", () -> { @@ -574,6 +614,14 @@ public EventDirectorySteps( FILTER_BY_TYPE_OF_PLACE, TypeOfPlace.getValueFor(sourceTypeOfPlace)); }); + When( + "I select German Type of Place field based on the event created with API", + () -> { + String sourceTypeOfPlace = apiState.getCreatedEvent().getTypeOfPlace(); + webDriverHelpers.selectFromCombobox( + FILTER_BY_TYPE_OF_PLACE, TypeOfPlace.getValueForDE(sourceTypeOfPlace)); + }); + When( "I select type of place filter value different than the type of place value of the last created via API case in Event Directory", () -> { @@ -583,10 +631,18 @@ public EventDirectorySteps( TypeOfPlace.getRandomUITypeOfPlaceDifferentThan(apiValueTypeOfPlace)); }); + When( + "I select German type of place filter value different than the type of place value of the last created via API case in Event Directory", + () -> { + String apiValueTypeOfPlace = apiState.getCreatedEvent().getTypeOfPlace(); + webDriverHelpers.selectFromCombobox( + FILTER_BY_TYPE_OF_PLACE, + TypeOfPlace.getRandomUITypeOfPlaceDifferentThanDE(apiValueTypeOfPlace)); + }); + When( "I select Report Date among Event Reference Date options", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox( DATE_TYPE_COMBOBOX, EventReferenceDateOptions.REPORT_DATE.toString()); }); @@ -594,26 +650,24 @@ public EventDirectorySteps( When( "I fill in a date range in Date of Event From Epi Week and ...To fields", () -> { - webDriverHelpers.waitForPageLoaded(); eventService.timeRange = buildTimeRange(); webDriverHelpers.fillInWebElement( DATE_FROM_COMBOBOX, eventService .timeRange[0] - .format(DateTimeFormatter.ofPattern("dd.MM.yyyy")) + .format(DateTimeFormatter.ofPattern("MM/dd/yyyy")) .toString()); webDriverHelpers.fillInWebElement( DATE_TO_COMBOBOX, eventService .timeRange[1] - .format(DateTimeFormatter.ofPattern("dd.MM.yyyy")) + .format(DateTimeFormatter.ofPattern("MM/dd/yyyy")) .toString()); }); When( "I check that the dates of displayed Event results are correct", () -> { - webDriverHelpers.waitForPageLoaded(); List> tableRowsData = getTableRowsData(); for (int i = 0; i < tableRowsData.size(); i++) { String dateCell = @@ -642,13 +696,17 @@ public EventDirectorySteps( When( "^I search for specific event in event directory", () -> { - webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(RESET_FILTER, 35); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(NEW_EVENT_BUTTON, 35); webDriverHelpers.clickOnWebElementBySelector(RESET_FILTER); + TimeUnit.SECONDS.sleep(5); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); final String eventUuid = CreateNewEventSteps.newEvent.getUuid(); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( SEARCH_EVENT_BY_FREE_TEXT_INPUT, 20); webDriverHelpers.fillAndSubmitInWebElement(SEARCH_EVENT_BY_FREE_TEXT_INPUT, eventUuid); webDriverHelpers.clickOnWebElementBySelector(APPLY_FILTER); + TimeUnit.SECONDS.sleep(5); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); }); When( @@ -676,6 +734,13 @@ public EventDirectorySteps( webDriverHelpers.waitUntilElementIsVisibleAndClickable(getByEventUuid(personUuid)); }); + When( + "I check if filtered participant for existing person appears in the event participants list", + () -> { + final String personUuid = apiState.getLastCreatedPerson().getUuid(); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(getByEventUuid(personUuid)); + }); + When( "I click on the first row from event participant", () -> { @@ -715,6 +780,44 @@ public EventDirectorySteps( RESET_FILTERS_BUTTON, 30); webDriverHelpers.clickOnWebElementBySelector(RESET_FILTERS_BUTTON); TimeUnit.SECONDS.sleep(3); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(100); + }); + + When( + "I click to bulk change event managements status for selected events", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CHANGE_EVENT_MANAGEMENT_STATUS_CHECKBOX); + webDriverHelpers.clickWebElementByText(EVENT_MANAGEMENT_STATUS_COMBOBOX, "PENDING"); + }); + When( + "I check if Event Management Status is set to {string}", + (String eventManagementStatus) -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(EVENT_MANAGEMENT_STATUS_COMBOBOX); + assertHelpers.assertWithPoll20Second( + () -> + Assert.assertEquals( + webDriverHelpers.getTextFromWebElement(EVENT_MANAGEMENT_STATUS_CHECK), + eventManagementStatus, + "Event Management status is not correct")); + }); + When( + "^I select last created API result in grid in Event Directory for Bulk Action$", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.scrollToElement(getCheckboxByUUID(apiState.getCreatedEvent().getUuid())); + webDriverHelpers.clickOnWebElementBySelector( + getCheckboxByUUID(apiState.getCreatedEvent().getUuid())); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "^I select last created UI result in grid in Event Directory for Bulk Action$", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + webDriverHelpers.scrollToElement( + getCheckboxByUUID(CreateNewEventSteps.newEvent.getUuid())); + webDriverHelpers.clickOnWebElementBySelector( + getCheckboxByUUID(CreateNewEventSteps.newEvent.getUuid())); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); When( @@ -724,7 +827,6 @@ public EventDirectorySteps( "I click Enter Bulk Edit Mode on Event directory page", () -> { webDriverHelpers.clickOnWebElementBySelector(ENTER_BULK_EDIT_MODE_EVENT_DIRECTORY); - webDriverHelpers.waitForPageLoaded(); }); When( "I click on the created event participant from the list", @@ -738,6 +840,10 @@ public EventDirectorySteps( "I open the first event from events list", () -> webDriverHelpers.clickOnWebElementBySelector(FIRST_EVENT_ID_BUTTON)); + When( + "I open the first event group from events list group", + () -> webDriverHelpers.clickOnWebElementBySelector(FIRST_EVENT_ID_BUTTON)); + And( "I click Create Case for Event Participant", () -> webDriverHelpers.clickOnWebElementBySelector(CREATE_CASE_BUTTON)); @@ -831,6 +937,36 @@ public EventDirectorySteps( number.intValue(), "Number of displayed cases is not correct"))); + Then( + "I check the if Event is displayed correctly in Events Directory table", + () -> { + List> tableRowsData = getTableRowsData(); + softly.assertEquals( + apiState.getCreatedEvent().getUuid().toUpperCase().substring(0, 6), + tableRowsData.get(0).get(EventsTableColumnsHeaders.EVENT_ID_HEADER.toString()), + "Event IDs are not equal"); + softly.assertEquals( + DiseasesValues.getCaptionForName(apiState.getCreatedEvent().getDisease()), + tableRowsData.get(0).get(EventsTableColumnsHeaders.DISEASE_HEADER.toString()), + "Diseases are not equal"); + softly.assertEquals( + RegionsValues.getNameValueForUuid( + apiState.getCreatedEvent().getEventLocation().getRegion().getUuid()), + tableRowsData.get(0).get(EventsTableColumnsHeaders.REGION_HEADER.toString()), + "Regions are not equal"); + softly.assertEquals( + DistrictsValues.getNameValueForUuid( + apiState.getCreatedEvent().getEventLocation().getDistrict().getUuid()), + tableRowsData.get(0).get(EventsTableColumnsHeaders.DISTRICT_HEADER.toString()), + "Districts are not equal"); + softly.assertEquals( + CommunityValues.getNameValueForUuid( + apiState.getCreatedEvent().getEventLocation().getCommunity().getUuid()), + tableRowsData.get(0).get(EventsTableColumnsHeaders.COMMUNITY_HEADER.toString()), + "Communities are not equal"); + softly.assertAll(); + }); + When( "I click on the Import button from Events directory", () -> { @@ -877,6 +1013,8 @@ public EventDirectorySteps( When( "I check that four new events have appeared in Events directory", () -> { + TimeUnit.SECONDS.sleep(2); // wait for spinner + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(50); List eventUUIDs = new ArrayList<>(); List eventTitles = new ArrayList<>(); List> tableRowsData = getTableRowsData(); @@ -896,6 +1034,25 @@ public EventDirectorySteps( "The imported events did not show up correctly in Events directory."); softly.assertAll(); }); + + When( + "I click on the Export Event button", + () -> webDriverHelpers.clickOnWebElementBySelector(EVENT_EXPORT_BUTTON)); + + When( + "I click on the Basic Event Export button", + () -> { + webDriverHelpers.clickOnWebElementBySelector(BASIC_EVENT_EXPORT_BUTTON); + TimeUnit.SECONDS.sleep(2); // wait for download + }); + + When( + "I click on the Detailed Event Export button", + () -> { + TimeUnit.SECONDS.sleep(8); // wait for basic download if in parallel + webDriverHelpers.clickOnWebElementBySelector(DETAILED_EVENT_EXPORT_BUTTON); + TimeUnit.SECONDS.sleep(4); // wait for download + }); } private List> getTableRowsData() { diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventExportSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventExportSteps.java index 275cc179e33..b60931c226a 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventExportSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/events/EventExportSteps.java @@ -3,9 +3,9 @@ import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CUSTOM_CASE_DELETE_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.CUSTOM_CASE_EXPORT_DOWNLOAD_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.EXPORT_CONFIGURATION_DATA_DISTRICT_CHECKBOX; -import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.EXPORT_CONFIGURATION_DATA_REGION_CHECKBOX; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.NEW_EXPORT_CONFIGURATION_BUTTON; import static org.sormas.e2etests.pages.application.cases.CaseImportExportPage.NEW_EXPORT_CONFIGURATION_SAVE_BUTTON; +import static org.sormas.e2etests.pages.application.events.EventParticipantsPage.EXPORT_EVENT_PARTICIPANT_CONFIGURATION_DATA_REGION_CHECKBOX; import com.google.inject.Inject; import com.opencsv.CSVParser; @@ -35,7 +35,8 @@ public EventExportSteps(WebDriverHelpers webDriverHelpers, ApiState apiState, So When( "I select specific data of event participant to export in Export Configuration", () -> { - webDriverHelpers.clickOnWebElementBySelector(EXPORT_CONFIGURATION_DATA_REGION_CHECKBOX); + webDriverHelpers.clickOnWebElementBySelector( + EXPORT_EVENT_PARTICIPANT_CONFIGURATION_DATA_REGION_CHECKBOX); webDriverHelpers.clickOnWebElementBySelector(EXPORT_CONFIGURATION_DATA_DISTRICT_CHECKBOX); webDriverHelpers.clickOnWebElementBySelector(NEW_EXPORT_CONFIGURATION_SAVE_BUTTON); }); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/facilities/ConfigurationFacilitiesSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/facilities/ConfigurationFacilitiesSteps.java index e723f235ae7..94be0a780b3 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/facilities/ConfigurationFacilitiesSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/facilities/ConfigurationFacilitiesSteps.java @@ -46,12 +46,16 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @@ -75,7 +79,8 @@ public class ConfigurationFacilitiesSteps implements En { public static String[] UIHeader; public static int randomNr; public static Faker faker; - String facilityName; + private String facilityName; + private static String facilityFile; public static String cityName; public static String aFacilityName; public static String uploadFileDirectoryAndName; @@ -137,12 +142,18 @@ public ConfigurationFacilitiesSteps( When( "I read exported csv from facilities tab", () -> { - FacilityCSV reader = - parseCSVintoPOJOFacilityTab( - "./downloads/sormas_einrichtungen_" - + LocalDate.now().format(formatter) - + "_.csv"); + facilityFile = + "./downloads/sormas_einrichtungen_" + LocalDate.now().format(formatter) + "_.csv"; + FacilityCSV reader = parseCSVintoPOJOFacilityTab(facilityFile); writeCSVFromPOJOFacilityTab(reader); + TimeUnit.SECONDS.sleep(5); // wait for reader + }); + + When( + "I delete downloaded csv file for facilities in facility tab", + () -> { + Path path = Paths.get(facilityFile); + Files.delete(path); }); When( @@ -232,6 +243,8 @@ public static void writeCSVFromPOJOFacilityTab(FacilityCSV facilityData) { uploadFileDirectoryAndName = userDirPath + "/uploads/testFile.csv"; cityName = faker.harryPotter().location(); + Random rand = new Random(); + randomNr = rand.nextInt(1000); aFacilityName = faker.harryPotter().location() + randomNr; File file = new File(uploadFileDirectoryAndName); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/CreateNewImmunizationSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/CreateNewImmunizationSteps.java index 5c5a9d57713..9037c1874c4 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/CreateNewImmunizationSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/CreateNewImmunizationSteps.java @@ -55,7 +55,6 @@ public CreateNewImmunizationSteps( When( "I check Overwrite immunization management status option", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector( OVERWRITE_IMMUNIZATION_MANAGEMENT_STATUS_INPUT); }); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/EditImmunizationSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/EditImmunizationSteps.java index de3c6021e80..3cdea7932dc 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/EditImmunizationSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/EditImmunizationSteps.java @@ -1,11 +1,8 @@ package org.sormas.e2etests.steps.web.application.immunizations; -import static org.sormas.e2etests.pages.application.cases.EditCasePage.*; -import static org.sormas.e2etests.pages.application.immunizations.CreateNewImmunizationPage.MEANS_OF_IMMUNIZATIONS_COMBOBOX; -import static org.sormas.e2etests.pages.application.immunizations.EditImmunizationPage.DISEASE_COMBOBOX; -import static org.sormas.e2etests.pages.application.immunizations.EditImmunizationPage.FACILITY_COMBOBOX_IMMUNIZATION_INPUT; +import static org.sormas.e2etests.pages.application.immunizations.EditImmunizationPage.*; +import static org.sormas.e2etests.pages.application.immunizations.EditImmunizationPage.DISEASE_INPUT; import static org.sormas.e2etests.pages.application.immunizations.EditImmunizationPage.FACILITY_NAME_DESCRIPTION_VALUE; -import static org.sormas.e2etests.pages.application.users.EditUserPage.*; import cucumber.api.java8.En; import java.time.LocalDate; @@ -34,7 +31,7 @@ public EditImmunizationSteps( When( "I check the created data is correctly displayed on Edit immunization page", () -> { - webDriverHelpers.waitUntilIdentifiedElementIsPresent(DISEASE_COMBOBOX); + webDriverHelpers.waitUntilIdentifiedElementIsPresent(UUID); collectedImmunization = collectImmunizationData(); createdImmunization = CreateNewImmunizationSteps.immunization; ComparisonHelper.compareEqualFieldsOfEntities( @@ -56,21 +53,21 @@ public EditImmunizationSteps( private Immunization collectImmunizationData() { return Immunization.builder() .dateOfReport(getDateOfReport()) - .disease(webDriverHelpers.getValueFromCombobox(DISEASE_COMBOBOX)) - .meansOfImmunization(webDriverHelpers.getValueFromCombobox(MEANS_OF_IMMUNIZATIONS_COMBOBOX)) - .responsibleRegion(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_REGION_COMBOBOX)) - .responsibleDistrict(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_DISTRICT_COMBOBOX)) - .responsibleCommunity(webDriverHelpers.getValueFromCombobox(RESPONSIBLE_COMMUNITY_COMBOBOX)) + .disease(webDriverHelpers.getValueFromWebElement(DISEASE_INPUT)) + .meansOfImmunization(webDriverHelpers.getValueFromWebElement(MEANS_OF_IMMUNIZATIONS_INPUT)) + .responsibleRegion(webDriverHelpers.getValueFromWebElement(RESPONSIBLE_REGION_INPUT)) + .responsibleDistrict(webDriverHelpers.getValueFromWebElement(RESPONSIBLE_DISTRICT_INPUT)) + .responsibleCommunity(webDriverHelpers.getValueFromWebElement(RESPONSIBLE_COMMUNITY_INPUT)) .facilityDescription( webDriverHelpers.getValueFromWebElement(FACILITY_NAME_DESCRIPTION_VALUE)) - .facilityCategory(webDriverHelpers.getValueFromWebElement(FACILITY_CATEGORY_COMBOBOX_INPUT)) - .facilityType(webDriverHelpers.getValueFromWebElement(FACILITY_TYPE_COMBOBOX_INPUT)) + .facilityCategory(webDriverHelpers.getValueFromWebElement(FACILITY_CATEGORY_INPUT)) + .facilityType(webDriverHelpers.getValueFromWebElement(FACILITY_TYPE_INPUT)) .facility(webDriverHelpers.getValueFromWebElement(FACILITY_COMBOBOX_IMMUNIZATION_INPUT)) .build(); } private LocalDate getDateOfReport() { - String dateOfReport = webDriverHelpers.getValueFromWebElement(REPORT_DATE_INPUT); + String dateOfReport = webDriverHelpers.getValueFromWebElement(DATE_OF_REPORT_INPUT); return LocalDate.parse(dateOfReport, DATE_FORMATTER); } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/ImmunizationDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/ImmunizationDirectorySteps.java index 1dac6febd0f..9cdd31b61b1 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/ImmunizationDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/immunizations/ImmunizationDirectorySteps.java @@ -15,9 +15,9 @@ public ImmunizationDirectorySteps(WebDriverHelpers webDriverHelpers) { When( "^I click on the NEW IMMUNIZATION button$", () -> { - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(50); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(70); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( - ADD_NEW_IMMUNIZATION_BUTTON); + ADD_NEW_IMMUNIZATION_BUTTON, 30); webDriverHelpers.clickOnWebElementBySelector(ADD_NEW_IMMUNIZATION_BUTTON); }); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/EditPersonSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/EditPersonSteps.java index 21beb4391ad..ca937675927 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/EditPersonSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/EditPersonSteps.java @@ -30,7 +30,6 @@ import static org.sormas.e2etests.pages.application.persons.EditPersonPage.CITY_INPUT; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.COMMUNITY_COMBOBOX; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.COMMUNITY_INPUT; -import static org.sormas.e2etests.pages.application.persons.EditPersonPage.CONFIRM_NAVIGATION_BUTTON; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.DATE_OF_BIRTH_DAY_COMBOBOX; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.DATE_OF_BIRTH_MONTH_COMBOBOX; import static org.sormas.e2etests.pages.application.persons.EditPersonPage.DATE_OF_BIRTH_YEAR_COMBOBOX; @@ -119,6 +118,7 @@ public EditPersonSteps( When( "I check that previous created person is correctly displayed in Edit Person page", () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); previousCreatedPerson = EditContactPersonSteps.fullyDetailedPerson; collectedPerson = collectPersonData(); ComparisonHelper.compareEqualEntities(previousCreatedPerson, collectedPerson); @@ -127,6 +127,7 @@ public EditPersonSteps( When( "I check that previous edited person is correctly displayed in Edit Person page", () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); collectedPerson = collectPersonData(); ComparisonHelper.compareDifferentFieldsOfEntities( previousCreatedPerson, @@ -150,6 +151,7 @@ public EditPersonSteps( "While on Person edit page, I will edit all fields with new values", () -> { newGeneratedPerson = personService.buildGeneratedPerson(); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); fillFirstName(newGeneratedPerson.getFirstName()); fillLastName(newGeneratedPerson.getLastName()); fillSalutation(newGeneratedPerson.getSalutation()); @@ -179,6 +181,7 @@ public EditPersonSteps( selectAreaType(newGeneratedPerson.getAreaType()); fillContactPersonFirstName(newGeneratedPerson.getContactPersonFirstName()); fillContactPersonLastName(newGeneratedPerson.getContactPersonLastName()); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); fillBirthName(newGeneratedPerson.getBirthName()); fillNamesOfGuardians(newGeneratedPerson.getNameOfGuardians()); }); @@ -187,38 +190,53 @@ public EditPersonSteps( () -> { webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); webDriverHelpers.clickOnWebElementBySelector(SEE_CASES_FOR_PERSON_BUTTON); - webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); + // webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); + // webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + }); + + Then( + "I check that SEE CASES FOR THIS PERSON button appears on Edit Person page", + () -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(SEE_CASES_FOR_PERSON_BUTTON); + }); + + Then( + "I check that SEE CONTACTS FOR THIS PERSON button appears on Edit Person page", + () -> { webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + webDriverHelpers.waitUntilElementIsVisibleAndClickable(SEE_CONTACTS_FOR_PERSON_BUTTON); }); + Then( "I click on See CONTACTS for this Person button from Edit Person page", () -> { webDriverHelpers.clickOnWebElementBySelector(SEE_CONTACTS_FOR_PERSON_BUTTON); - webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + // webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); + // webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); }); Then( "I click on Edit Case button from Cases card on Edit Person page", () -> { webDriverHelpers.clickOnWebElementBySelector(EDIT_CASES_BUTTON); - webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + // webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); + // webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); }); Then( "I click on Edit Contact button from Contacts card on Edit Person page", () -> { webDriverHelpers.clickOnWebElementBySelector(EDIT_CONTACTS_BUTTON); - webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + // webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); + // webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); }); Then( "I click on Edit Immunization button for Immunization created through API from Immunization card on Edit Person page", () -> { webDriverHelpers.clickOnWebElementBySelector( getByImmunizationUuid(apiState.getCreatedImmunization().getUuid())); - webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); + // webDriverHelpers.clickOnWebElementBySelector(CONFIRM_NAVIGATION_BUTTON); + // webDriverHelpers.waitForPageLoadingSpinnerToDisappear(150); }); Then( diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDetailedTableViewSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDetailedTableViewSteps.java new file mode 100644 index 00000000000..7f224b521f8 --- /dev/null +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDetailedTableViewSteps.java @@ -0,0 +1,160 @@ +package org.sormas.e2etests.steps.web.application.persons; + +import static org.sormas.e2etests.pages.application.persons.PersonDirectoryPage.PERSON_DETAILED_COLUMN_HEADERS; + +import cucumber.api.java8.En; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import org.openqa.selenium.By; +import org.sormas.e2etests.helpers.WebDriverHelpers; +import org.sormas.e2etests.steps.BaseSteps; +import org.testng.asserts.SoftAssert; + +@Slf4j +public class PersonDetailedTableViewSteps implements En { + + private final WebDriverHelpers webDriverHelpers; + private static BaseSteps baseSteps; + static Map headersMap; + + @Inject + public PersonDetailedTableViewSteps( + WebDriverHelpers webDriverHelpers, BaseSteps baseSteps, SoftAssert softly) { + this.webDriverHelpers = webDriverHelpers; + this.baseSteps = baseSteps; + + When( + "I check that the Person table structure is correct", + () -> { + headersMap = extractColumnHeadersHashMap(); + String headers = headersMap.toString(); + softly.assertTrue( + headers.contains("PERSON ID=0"), "The PERSON ID column is not correctly displayed!"); + softly.assertTrue( + headers.contains("FIRST NAME=1"), + "The FIRST NAME column is not correctly displayed!"); + softly.assertTrue( + headers.contains("LAST NAME=2"), "The LAST NAME column is not correctly displayed!"); + softly.assertTrue( + headers.contains("AGE AND BIRTH DATE=3"), + "The PERSON ID column is not correctly displayed!"); + softly.assertTrue( + headers.contains("SEX=4"), "The SEX column is not correctly displayed!"); + softly.assertTrue( + headers.contains("DISTRICT=5"), "The DISTRICT column is not correctly displayed!"); + softly.assertTrue( + headers.contains("STREET=6"), "The STREET column is not correctly displayed!"); + softly.assertTrue( + headers.contains("HOUSE NUMBER=7"), + "The HOUSE NUMBER column is not correctly displayed!"); + softly.assertTrue( + headers.contains("POSTAL CODE=8"), + "The POSTAL CODE column is not correctly displayed!"); + softly.assertTrue( + headers.contains("CITY=9"), "The CITY column is not correctly displayed!"); + softly.assertTrue( + headers.contains("PRIMARY PHONE NUMBER=10"), + "The PRIMARY PHONE NUMBER column is not correctly displayed!"); + softly.assertTrue( + headers.contains("PRIMARY EMAIL ADDRESS=11"), + "The PRIMARY EMAIL ADDRESS column is not correctly displayed!"); + softly.assertAll(); + }); + + When( + "I click the header of column {int} in Person directory", + (Integer col) -> { + webDriverHelpers.clickOnWebElementBySelector( + By.xpath("//thead//tr//th[" + col.toString() + "]")); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(5); + }); + + When( + "I check that column {int} is sorted in ascending order", + (Integer col) -> { + List rawColumnData = getTableColumnDataByIndex(col, 10); + List ascColumnData = new ArrayList<>(rawColumnData); + ascColumnData.sort(Comparator.naturalOrder()); + softly.assertEquals( + rawColumnData, + ascColumnData, + "Column " + col.toString() + " is not correctly sorted!"); + softly.assertAll(); + }); + + When( + "I check that column {int} is sorted in descending order", + (Integer col) -> { + List rawColumnData = getTableColumnDataByIndex(col, 10); + List desColumnData = new ArrayList<>(rawColumnData); + desColumnData.sort(Comparator.reverseOrder()); + softly.assertEquals( + rawColumnData, + desColumnData, + "Column " + col.toString() + " is not correctly sorted!"); + softly.assertAll(); + }); + + When( + "I check that an upwards arrow appears in the header of column {int}", + (Integer col) -> { + String upArrowBytes = "[34, -17, -125, -98, 32, 34]"; + String content = + webDriverHelpers.javascriptGetElementContent( + "'table > thead > tr > th:nth-of-type(" + col + ")'),'::after'"); + byte[] array = content.getBytes(StandardCharsets.UTF_8); + softly.assertEquals( + Arrays.toString(array), upArrowBytes, "The upwards arrow is not displayed!"); + softly.assertAll(); + }); + + When( + "I check that a downwards arrow appears in the header of column {int}", + (Integer col) -> { + String downArrowBytes = "[34, -17, -125, -99, 32, 34]"; + String content = + webDriverHelpers.javascriptGetElementContent( + "'table > thead > tr > th:nth-of-type(" + col + ")'),'::after'"); + byte[] array = content.getBytes(StandardCharsets.UTF_8); + softly.assertEquals( + Arrays.toString(array), downArrowBytes, "The downwards arrow is not displayed!"); + softly.assertAll(); + }); + } + + private Map extractColumnHeadersHashMap() { + AtomicInteger atomicInt = new AtomicInteger(); + HashMap headerHashmap = new HashMap<>(); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + PERSON_DETAILED_COLUMN_HEADERS); + webDriverHelpers.waitUntilAListOfWebElementsAreNotEmpty(PERSON_DETAILED_COLUMN_HEADERS); + webDriverHelpers.scrollToElementUntilIsVisible(PERSON_DETAILED_COLUMN_HEADERS); + baseSteps + .getDriver() + .findElements(PERSON_DETAILED_COLUMN_HEADERS) + .forEach( + webElement -> { + webDriverHelpers.scrollToElementUntilIsVisible(webElement); + headerHashmap.put(webElement.getText(), atomicInt.getAndIncrement()); + }); + return headerHashmap; + } + + private List getTableColumnDataByIndex(int col, int maxRows) { + List list = new ArrayList<>(); + for (int i = 1; i < maxRows + 1; i++) { + list.add( + webDriverHelpers.getTextFromWebElement( + By.xpath("//tbody//tr[" + i + "]//td[" + col + "]"))); + } + return list; + } +} diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDirectorySteps.java index 77f0a4be8ea..110423d2285 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/persons/PersonDirectorySteps.java @@ -24,6 +24,8 @@ import static org.sormas.e2etests.pages.application.persons.EditPersonPage.*; import static org.sormas.e2etests.pages.application.persons.PersonDirectoryPage.*; import static org.sormas.e2etests.steps.BaseSteps.locale; +import static org.sormas.e2etests.steps.web.application.entries.CreateNewTravelEntrySteps.TravelEntryUuid; +import static org.sormas.e2etests.steps.web.application.entries.CreateNewTravelEntrySteps.aCase; import com.github.javafaker.Faker; import com.google.common.truth.Truth; @@ -44,6 +46,7 @@ import org.sormas.e2etests.helpers.AssertHelpers; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.state.ApiState; +import org.sormas.e2etests.steps.web.application.cases.EditCaseSteps; import org.sormas.e2etests.steps.web.application.contacts.EditContactPersonSteps; import org.sormas.e2etests.steps.web.application.events.EditEventSteps; import org.testng.Assert; @@ -86,6 +89,38 @@ public PersonDirectorySteps( webDriverHelpers.isElementVisibleWithTimeout(UUID_INPUT, 20); }); + Then( + "I open the last created person linked with Case", + () -> { + aCase = EditCaseSteps.aCase; + String PersonFullName = aCase.getFirstName() + " " + aCase.getLastName(); + TimeUnit.SECONDS.sleep(5); // waiting for event table grid reloaded + webDriverHelpers.fillAndSubmitInWebElement(MULTIPLE_OPTIONS_SEARCH_INPUT, PersonFullName); + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + PERSON_RESULTS_UUID_LOCATOR_FROM_GRID); + webDriverHelpers.clickOnWebElementBySelector(PERSON_RESULTS_UUID_LOCATOR_FROM_GRID); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(60); + }); + + When( + "^I open the last created Person via API", + () -> { + String personUUID = apiState.getLastCreatedPerson().getUuid(); + TimeUnit.SECONDS.sleep(5); // waiting for event table grid reloaded + webDriverHelpers.fillAndSubmitInWebElement(MULTIPLE_OPTIONS_SEARCH_INPUT, personUUID); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( + getPersonResultsUuidLocator(personUUID)); + webDriverHelpers.clickOnWebElementBySelector(getPersonResultsUuidLocator(personUUID)); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(60); + }); + + When( + "^I check that EDIT TRAVEL ENTRY button appears on Edit Person page", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable( + getByTravelEntryPersonUuid(TravelEntryUuid.getUuid())); + }); + Then( "I check the result for UID for second person in grid PERSON ID column", () -> { @@ -117,7 +152,6 @@ public PersonDirectorySteps( "I fill Year of birth filter in Persons with the year of the last created person via API", () -> { String yearOfBirth = apiState.getLastCreatedPerson().getBirthdateYYYY().toString(); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(BIRTH_YEAR_COMBOBOX, yearOfBirth); }); @@ -156,27 +190,24 @@ public PersonDirectorySteps( "I choose random value of Region in Persons for the last created person by API", () -> { String regionName = apiState.getLastCreatedPerson().getAddress().getRegion(); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox( - REGIONS_COMBOBOX, RegionsValues.getValueFor(regionName)); + REGIONS_COMBOBOX, RegionsValues.getNameValueForUuid(regionName)); }); Then( "I choose random value of District in Persons for the last created person by API", () -> { String districtName = apiState.getLastCreatedPerson().getAddress().getDistrict(); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox( - DISTRICTS_COMBOBOX, DistrictsValues.getNameByUUID(districtName)); + DISTRICTS_COMBOBOX, DistrictsValues.getNameValueForUuid(districtName)); }); Then( "I choose random value of Community in Persons for the last created person by API", () -> { String communityName = apiState.getLastCreatedPerson().getAddress().getCommunity(); - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox( - COMMUNITY_PERSON_COMBOBOX, CommunityValues.getValueFor(communityName)); + COMMUNITY_PERSON_COMBOBOX, CommunityValues.getNameValueForUuid(communityName)); }); Then( @@ -229,7 +260,6 @@ public PersonDirectorySteps( Then( "I change REGION filter to {string} for Person", (String region) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(REGIONS_COMBOBOX, region); }); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/reports/WeeklyReportsSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/reports/WeeklyReportsSteps.java index 2c64eb0d607..fdbfe854976 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/reports/WeeklyReportsSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/reports/WeeklyReportsSteps.java @@ -36,21 +36,18 @@ public WeeklyReportsSteps(WebDriverHelpers webDriverHelpers) { When( "I choose {string} as year for weekly reports", (String year) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(WeeklyReportsPage.YEAR_FILTER, year); }); When( "I choose {string} as epi week for weekly reports", (String epiWeek) -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(WeeklyReportsPage.EPI_WEEK_FILTER, epiWeek); }); When( "I click on the last epi week button for weekly reports", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(WeeklyReportsPage.LAST_EPI_WEEK_BUTTON); }); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/CreateNewSampleSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/CreateNewSampleSteps.java index 8e869cb6824..108b9b80618 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/CreateNewSampleSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/CreateNewSampleSteps.java @@ -28,11 +28,15 @@ import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Locale; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.openqa.selenium.By; import org.sormas.e2etests.entities.pojo.helpers.ComparisonHelper; import org.sormas.e2etests.entities.pojo.web.Sample; +import org.sormas.e2etests.entities.pojo.web.SampleAdditionalTest; +import org.sormas.e2etests.entities.services.SampleAdditionalTestService; import org.sormas.e2etests.entities.services.SampleService; +import org.sormas.e2etests.enums.PathogenTestResults; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.testng.asserts.SoftAssert; @@ -42,6 +46,7 @@ public class CreateNewSampleSteps implements En { public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm"); public static Sample sample; public static Sample sampleTestResult; + public static SampleAdditionalTest additionalTestResult; public static String sampleId; private final WebDriverHelpers webDriverHelpers; private final Faker faker; @@ -50,6 +55,7 @@ public class CreateNewSampleSteps implements En { public CreateNewSampleSteps( WebDriverHelpers webDriverHelpers, SampleService sampleService, + SampleAdditionalTestService sampleAdditionalTestService, Faker faker, SoftAssert softly) { this.webDriverHelpers = webDriverHelpers; @@ -123,11 +129,50 @@ public CreateNewSampleSteps( }); When( - "I select the German words for PCR / RT-PCR as Type of Test in the Create New Sample popup", + "I select the German words for PCR RT-PCR as Type of Test in the Create New Sample popup", () -> { selectTypeOfTest("Nukleins\u00E4ure-Nachweis (z.B. PCR)"); }); + When( + "^I create a new Sample with for COVID alternative purpose$", + () -> { + sample = sampleService.buildGeneratedSample(); + selectPurposeOfSample(sample.getPurposeOfTheSample(), SAMPLE_PURPOSE_OPTIONS); + fillDateOfCollection(sample.getDateOfCollection()); + fillTimeOfCollection(sample.getTimeOfCollection()); + selectSampleType(sample.getSampleType()); + selectReasonForSample(sample.getReasonForSample()); + fillSampleID(sample.getSampleID()); + selectLaboratory(sample.getLaboratory()); + selectLaboratoryName(sample.getLaboratoryName()); + webDriverHelpers.clickOnWebElementBySelector(REQUEST_PATHOGEN_OPTION_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(ANTIGEN_DETECTION_TEST_OPTION_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(ISOLATION_TEST_OPTION_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(PCR_RTP_PCR_TEST_OPTION_BUTTON); + webDriverHelpers.selectFromCombobox( + FINAL_LABORATORY_RESULT_COMBOBOX, PathogenTestResults.POSITIVE.getPathogenResults()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_SAMPLE_BUTTON); + }); + + When( + "I fill all fields from Pathogen test for COVID-19 disease result popup and save", + () -> { + sampleTestResult = sampleService.buildGeneratedSampleTestResultForCovid(); + fillReportDate(sampleTestResult.getReportDate(), Locale.ENGLISH); + selectTypeOfTest(sampleTestResult.getTypeOfTest()); + selectTestedDisease(sampleTestResult.getTestedDisease()); + selectPathogenLaboratory(sampleTestResult.getLaboratory()); + selectTestResult(sampleTestResult.getSampleTestResults()); + fillDateOfResult(sampleTestResult.getDateOfResult(), Locale.ENGLISH); + fillTimeOfResult(sampleTestResult.getTimeOfResult()); + selectResultVerifiedByLabSupervisor( + sampleTestResult.getResultVerifiedByLabSupervisor(), + RESULT_VERIFIED_BY_LAB_SUPERVISOR_OPTIONS); + fillTestResultsComment(sampleTestResult.getTestResultsComment()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_SAMPLE_BUTTON); + }); + When( "^I save the created sample", () -> { @@ -165,6 +210,34 @@ public CreateNewSampleSteps( fillTestResultsComment(sampleTestResult.getTestResultsComment()); webDriverHelpers.clickOnWebElementBySelector(SAVE_SAMPLE_BUTTON); }); + When( + "^I complete all fields from Additional test result popup and save$", + () -> { + additionalTestResult = sampleAdditionalTestService.buildSampleAdditionalTestResult(); + fillDateOfResult(additionalTestResult.getDateOfResult(), Locale.ENGLISH); + fillTimeOfResult(additionalTestResult.getTimeOfResult()); + selectHaemoglobinInUrine(additionalTestResult.getHaemoglobinInUrine()); + selectProteinInUrine(additionalTestResult.getProteinInUrine()); + selectCellsInUrine(additionalTestResult.getRedBloodCellsInUrine()); + fillPh(additionalTestResult.getPh()); + fillPCO2(additionalTestResult.getPCO2()); + fillPAO2(additionalTestResult.getPAO2()); + fillHCO3(additionalTestResult.getHCO3()); + fillOxygenTherapy(additionalTestResult.getOxygen()); + fillSgpt(additionalTestResult.getSgpt()); + fillTotalBilirubin(additionalTestResult.getTotalBilirubin()); + fillSgot(additionalTestResult.getSgot()); + fillConjBilirubin(additionalTestResult.getConjBilirubin()); + fillCretinine(additionalTestResult.getCreatine()); + fillWbc(additionalTestResult.getWbc()); + fillPotassium(additionalTestResult.getPotassium()); + fillPlatelets(additionalTestResult.getPlatelets()); + fillUrea(additionalTestResult.getUrea()); + fillProthrombin(additionalTestResult.getProthrombin()); + fillHaemoglobin(additionalTestResult.getHaemoglobin()); + fillOtherTests(additionalTestResult.getOtherResults()); + webDriverHelpers.clickOnWebElementBySelector(SAVE_SAMPLE_BUTTON); + }); When( "^I complete all fields from Pathogen test result popup for IgM test type and save$", @@ -176,7 +249,6 @@ public CreateNewSampleSteps( When( "I check if Pathogen test result in Samples is displayed correctly and save", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.clickOnWebElementBySelector(EDIT_PATHOGEN_TEST_BUTTON); final Sample actualSampleTestResult = collectPathogenTestResultsData(); ComparisonHelper.compareEqualFieldsOfEntities( @@ -263,6 +335,15 @@ public CreateNewSampleSteps( ComparisonHelper.compareEqualEntities(sampleTestResult, actualSampleTestResult); }); + When( + "^I check that the created Additional test is correctly displayed$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(EDIT_ADDITIONAL_TEST_RESULTS_BUTTON); + final SampleAdditionalTest actualAdditionalTestResult = + collectAdditionalTestResultsData(); + ComparisonHelper.compareEqualEntities(additionalTestResult, actualAdditionalTestResult); + }); + When( "^I check that the created Pathogen is correctly displayed for DE version$", () -> { @@ -274,19 +355,14 @@ public CreateNewSampleSteps( When( "I confirm the Create case from contact with positive test result", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitUntilElementIsVisibleAndClickable(CONFIRM_BUTTON); - String displayedText = - webDriverHelpers.getTextFromWebElement(CREATE_CASE_POSITIVE_TEST_RESULT_LABEL); - String expectedText = "Create case from contact with positive test result?"; - softly.assertEquals(displayedText, expectedText); - softly.assertAll(); webDriverHelpers.clickOnWebElementBySelector(CONFIRM_BUTTON); }); When( "I confirm the Create case from event participant with positive test result", () -> { + TimeUnit.SECONDS.sleep(5); // weak performance, wait for popup webDriverHelpers.waitUntilElementIsVisibleAndClickable(CONFIRM_BUTTON); String displayedText = webDriverHelpers.getTextFromWebElement(CREATE_CASE_POSITIVE_TEST_RESULT_LABEL); @@ -298,6 +374,14 @@ public CreateNewSampleSteps( softly.assertAll(); webDriverHelpers.clickOnWebElementBySelector(CONFIRM_BUTTON); }); + + When( + "I check if default disease value for new Pathogen test is set for ([^\"]*)", + (String disease) -> { + String testedDisease = webDriverHelpers.getValueFromCombobox(TESTED_DISEASE_COMBOBOX); + softly.assertEquals(disease, testedDisease, "Diseases are not equal"); + softly.assertAll(); + }); } private void selectPurposeOfSample(String samplePurpose, By element) { @@ -416,6 +500,86 @@ private void fillTestResultsComment(String testResultsComment) { webDriverHelpers.clearAndFillInWebElement(TEST_RESULTS_COMMENT_AREA_INPUT, testResultsComment); } + private void selectHaemoglobinInUrine(String haemoglobinInUrine) { + webDriverHelpers.selectFromCombobox(HAEMOGLOBIN_IN_URINE_COMBOBOX, haemoglobinInUrine); + } + + private void selectProteinInUrine(String proteinInUrine) { + webDriverHelpers.selectFromCombobox(PROTEIN_IN_URINE_COMBOBOX, proteinInUrine); + } + + private void selectCellsInUrine(String cellsInUrine) { + webDriverHelpers.selectFromCombobox(CELLS_IN_URINE_COMBOBOX, cellsInUrine); + } + + private void fillPh(String ph) { + webDriverHelpers.clearAndFillInWebElement(PH_INPUT, ph); + } + + private void fillPCO2(String pCO2) { + webDriverHelpers.clearAndFillInWebElement(PCO2_INPUT, pCO2); + } + + private void fillPAO2(String pAO2) { + webDriverHelpers.clearAndFillInWebElement(PAO2_INPUT, pAO2); + } + + private void fillHCO3(String hCO3) { + webDriverHelpers.clearAndFillInWebElement(HCO3_INPUT, hCO3); + } + + private void fillOxygenTherapy(String oxygenTherapy) { + webDriverHelpers.clearAndFillInWebElement(OXYGEN_INPUT, oxygenTherapy); + } + + private void fillSgpt(String sgpt) { + webDriverHelpers.clearAndFillInWebElement(SGPT_INPUT, sgpt); + } + + private void fillTotalBilirubin(String totalBilirubin) { + webDriverHelpers.clearAndFillInWebElement(TOTAL_BILIRUBIN_INPUT, totalBilirubin); + } + + private void fillSgot(String sgot) { + webDriverHelpers.clearAndFillInWebElement(SGOT_INPUT, sgot); + } + + private void fillConjBilirubin(String conjBilirubin) { + webDriverHelpers.clearAndFillInWebElement(CONJ_BILIRUBIN_INPUT, conjBilirubin); + } + + private void fillCretinine(String creatinine) { + webDriverHelpers.clearAndFillInWebElement(CREATININE_INPUT, creatinine); + } + + private void fillWbc(String wbc) { + webDriverHelpers.clearAndFillInWebElement(WBC_INPUT, wbc); + } + + private void fillPotassium(String potassium) { + webDriverHelpers.clearAndFillInWebElement(POTASSIUM_INPUT, potassium); + } + + private void fillPlatelets(String platelets) { + webDriverHelpers.clearAndFillInWebElement(PLATELETS_INPUT, platelets); + } + + private void fillUrea(String urea) { + webDriverHelpers.clearAndFillInWebElement(UREA_INPUT, urea); + } + + private void fillProthrombin(String prothrombin) { + webDriverHelpers.clearAndFillInWebElement(PROTHROMBIN_INPUT, prothrombin); + } + + private void fillHaemoglobin(String haemoglobin) { + webDriverHelpers.clearAndFillInWebElement(HAEMOGLOBIN_INPUT, haemoglobin); + } + + private void fillOtherTests(String otherTests) { + webDriverHelpers.clearAndFillInWebElement(OTHER_TESTS_INPUT, otherTests); + } + private Sample collectSampleData() { return Sample.builder() .purposeOfTheSample(getPurposeOfSample()) @@ -557,6 +721,86 @@ private String getResultVerifiedByLabSupervisor() { RESULT_VERIFIED_BY_LAB_SUPERVISOR_EDIT_OPTIONS); } + private String getHaemoglobinInUrine() { + return webDriverHelpers.getValueFromWebElement(HAEMOGLOBIN_IN_URINE_INPUT); + } + + private String getProteinInUrine() { + return webDriverHelpers.getValueFromWebElement(PROTEIN_IN_URINE_INPUT); + } + + private String getCellsInUrine() { + return webDriverHelpers.getValueFromWebElement(CELLS_IN_URINE_INPUT); + } + + private String getPh() { + return webDriverHelpers.getValueFromWebElement(PH_INPUT); + } + + private String getPCO2() { + return webDriverHelpers.getValueFromWebElement(PCO2_INPUT); + } + + private String getPAO2() { + return webDriverHelpers.getValueFromWebElement(PAO2_INPUT); + } + + private String getHC03() { + return webDriverHelpers.getValueFromWebElement(HCO3_INPUT); + } + + private String getOxygen() { + return webDriverHelpers.getValueFromWebElement(OXYGEN_INPUT); + } + + private String getSgpt() { + return webDriverHelpers.getValueFromWebElement(SGPT_INPUT); + } + + private String getTotalBilirubin() { + return webDriverHelpers.getValueFromWebElement(TOTAL_BILIRUBIN_INPUT); + } + + private String getSgot() { + return webDriverHelpers.getValueFromWebElement(SGOT_INPUT); + } + + private String getConjBilirubin() { + return webDriverHelpers.getValueFromWebElement(CONJ_BILIRUBIN_INPUT); + } + + private String getCreatine() { + return webDriverHelpers.getValueFromWebElement(CREATININE_INPUT); + } + + private String getWbc() { + return webDriverHelpers.getValueFromWebElement(WBC_INPUT); + } + + private String getPotassium() { + return webDriverHelpers.getValueFromWebElement(POTASSIUM_INPUT); + } + + private String getPlatelets() { + return webDriverHelpers.getValueFromWebElement(PLATELETS_INPUT); + } + + private String getUrea() { + return webDriverHelpers.getValueFromWebElement(UREA_INPUT); + } + + private String getProthrombin() { + return webDriverHelpers.getValueFromWebElement(PROTHROMBIN_INPUT); + } + + private String getHaemoglobin() { + return webDriverHelpers.getValueFromWebElement(HAEMOGLOBIN_INPUT); + } + + private String getOtherResults() { + return webDriverHelpers.getValueFromWebElement(OTHER_TESTS_INPUT); + } + private Sample collectPathogenTestResultsData() { return Sample.builder() .sampleTestResults(getPathogenPopupTestResult()) @@ -571,6 +815,33 @@ private Sample collectPathogenTestResultsData() { .build(); } + private SampleAdditionalTest collectAdditionalTestResultsData() { + return SampleAdditionalTest.builder() + .dateOfResult(getDateOfResult(Locale.ENGLISH)) + .timeOfResult(getTimeOfResult()) + .haemoglobinInUrine(getHaemoglobinInUrine()) + .proteinInUrine(getProteinInUrine()) + .redBloodCellsInUrine(getCellsInUrine()) + .ph(getPh()) + .pCO2(getPCO2()) + .pAO2(getPAO2()) + .hCO3(getHC03()) + .oxygen(getOxygen()) + .sgpt(getSgpt()) + .totalBilirubin(getTotalBilirubin()) + .sgot(getSgot()) + .conjBilirubin(getConjBilirubin()) + .creatine(getCreatine()) + .wbc(getWbc()) + .potassium(getPotassium()) + .platelets(getPlatelets()) + .urea(getUrea()) + .prothrombin(getProthrombin()) + .haemoglobin(getHaemoglobin()) + .otherResults(getOtherResults()) + .build(); + } + private Sample collectPathogenTestResultsDataDE() { return Sample.builder() .sampleTestResults(getPathogenPopupTestResult()) diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/EditSampleSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/EditSampleSteps.java index 2da1e131766..bcbefd016db 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/EditSampleSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/EditSampleSteps.java @@ -85,6 +85,13 @@ public EditSampleSteps( webDriverHelpers.scrollToElement(PATHOGEN_NEW_TEST_RESULT_BUTTON); webDriverHelpers.clickOnWebElementBySelector(PATHOGEN_NEW_TEST_RESULT_BUTTON); }); + When( + "^I click on the new additional test from the Edit Sample page$", + () -> { + webDriverHelpers.waitUntilElementIsVisibleAndClickable(ADDIITONAL_NEW_TEST_RESULT_BUTTON); + webDriverHelpers.scrollToElement(ADDIITONAL_NEW_TEST_RESULT_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(ADDIITONAL_NEW_TEST_RESULT_BUTTON); + }); When( "^I change all Sample fields and save$", diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/SamplesDirectorySteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/SamplesDirectorySteps.java index ac1b719d182..f233f90634e 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/SamplesDirectorySteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/samples/SamplesDirectorySteps.java @@ -18,7 +18,11 @@ package org.sormas.e2etests.steps.web.application.samples; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.CLOSE_POPUP_BUTTON; import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.APPLY_FILTER_BUTTON; +import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.BASIC_EXPORT_SAMPLE_BUTTON; +import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.DETAILED_EXPORT_SAMPLE_BUTTON; +import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.EXPORT_SAMPLE_BUTTON; import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.FINAL_LABORATORY_RESULT; import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.LABORATORY_SEARCH_COMBOBOX; import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.RESET_FILTER_BUTTON; @@ -36,12 +40,28 @@ import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.SPECIMEN_CONDITION_SEARCH_COMBOBOX; import static org.sormas.e2etests.pages.application.samples.SamplesDirectoryPage.TEST_RESULTS_SEARCH_COMBOBOX; import static org.sormas.e2etests.steps.BaseSteps.locale; +import static org.sormas.e2etests.steps.web.application.events.EventDirectorySteps.userDirPath; import com.google.common.truth.Truth; +import com.opencsv.CSVParser; +import com.opencsv.CSVParserBuilder; +import com.opencsv.CSVReader; +import com.opencsv.CSVReaderBuilder; +import com.opencsv.exceptions.CsvException; import cucumber.api.java8.En; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.LocalDate; import java.util.Arrays; +import java.util.List; import java.util.concurrent.TimeUnit; import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import org.sormas.e2etests.entities.pojo.web.Sample; import org.sormas.e2etests.enums.CaseClassification; import org.sormas.e2etests.enums.DiseasesValues; import org.sormas.e2etests.enums.DistrictsValues; @@ -55,7 +75,9 @@ import org.sormas.e2etests.state.ApiState; import org.sormas.e2etests.steps.web.application.cases.EditCaseSteps; import org.testng.Assert; +import org.testng.asserts.SoftAssert; +@Slf4j public class SamplesDirectorySteps implements En { @Inject @@ -63,7 +85,8 @@ public SamplesDirectorySteps( WebDriverHelpers webDriverHelpers, EnvironmentManager environmentManager, ApiState apiState, - AssertHelpers assertHelpers) { + AssertHelpers assertHelpers, + SoftAssert softly) { When( "I click on apply filters button from Sample Directory", @@ -162,7 +185,7 @@ public SamplesDirectorySteps( () -> { String region = apiState.getCreatedCase().getRegion().getUuid(); webDriverHelpers.selectFromCombobox( - SAMPLE_REGION_SEARCH_COMBOBOX, RegionsValues.getValueFor(region)); + SAMPLE_REGION_SEARCH_COMBOBOX, RegionsValues.getNameValueForUuid(region)); }); When( @@ -176,7 +199,7 @@ public SamplesDirectorySteps( () -> { String district = apiState.getCreatedCase().getDistrict().getUuid(); webDriverHelpers.selectFromCombobox( - SAMPLE_DISTRICT_SEARCH_COMBOBOX, DistrictsValues.getNameByUUID(district)); + SAMPLE_DISTRICT_SEARCH_COMBOBOX, DistrictsValues.getNameValueForUuid(district)); }); When( @@ -370,5 +393,114 @@ public SamplesDirectorySteps( webDriverHelpers.getNumberOfElements(SAMPLE_GRID_RESULTS_ROWS), number.intValue(), "Displayed number of sample results is not correct"))); + + And( + "I click Export button in Sample Directory", + () -> webDriverHelpers.clickOnWebElementBySelector(EXPORT_SAMPLE_BUTTON)); + + And( + "I click on Basic Export button in Sample Directory", + () -> { + webDriverHelpers.clickOnWebElementBySelector(BASIC_EXPORT_SAMPLE_BUTTON); + TimeUnit.SECONDS.sleep(5); // time for file to be downloaded + }); + And( + "I click on Detailed Export button in Sample Directory", + () -> { + webDriverHelpers.clickOnWebElementBySelector(DETAILED_EXPORT_SAMPLE_BUTTON); + TimeUnit.SECONDS.sleep(5); // time for file to be downloaded + }); + When( + "I close popup after export in Sample directory", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CLOSE_POPUP_BUTTON); + }); + When( + "I check if downloaded data generated by basic export option is correct", + () -> { + String file = userDirPath + "/downloads/sormas_proben_" + LocalDate.now() + "_.csv"; + Sample reader = parseBasicSampleExport(file); + Path path = Paths.get(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid().toLowerCase(), + apiState.getCreatedSample().getUuid().toLowerCase(), + "UUIDs are not equal"); + softly.assertAll(); + }); + When( + "I check if downloaded data generated by detailed export option is correct", + () -> { + String file = userDirPath + "/downloads/sormas_proben_" + LocalDate.now() + "_.csv"; + Sample reader = parseDetailedSampleExport(file); + Path path = Paths.get(file); + Files.delete(path); + softly.assertEquals( + reader.getUuid().toLowerCase(), + apiState.getCreatedSample().getUuid().toLowerCase(), + "UUIDs are not equal"); + softly.assertAll(); + }); + When( + "I delete exported file from Sample Directory", + () -> { + File toDelete = + new File(userDirPath + "/downloads/sormas_proben_" + LocalDate.now() + "_.csv"); + toDelete.deleteOnExit(); + }); + } + + public Sample parseBasicSampleExport(String fileName) { + List r = null; + String[] values = new String[] {}; + Sample builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(2) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseSampleExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseSampleExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = Sample.builder().uuid(values[0]).build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseSampleExport: {}", e.getCause()); + } + return builder; + } + + public Sample parseDetailedSampleExport(String fileName) { + List r = null; + String[] values = new String[] {}; + Sample builder = null; + CSVParser csvParser = new CSVParserBuilder().withSeparator(';').build(); + try (CSVReader reader = + new CSVReaderBuilder(new FileReader(fileName)) + .withCSVParser(csvParser) + .withSkipLines(2) // parse only data + .build()) { + r = reader.readAll(); + } catch (IOException e) { + log.error("IOException parseSampleExport: {}", e.getCause()); + } catch (CsvException e) { + log.error("CsvException parseSampleExport: {}", e.getCause()); + } + try { + for (int i = 0; i < r.size(); i++) { + values = r.get(i); + } + builder = Sample.builder().uuid(values[1]).build(); + } catch (NullPointerException e) { + log.error("Null pointer exception parseSampleExport: {}", e.getCause()); + } + return builder; } } diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/CreateNewTaskSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/CreateNewTaskSteps.java index 8f9a481d237..230c40aa1fd 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/CreateNewTaskSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/CreateNewTaskSteps.java @@ -46,7 +46,7 @@ public CreateNewTaskSteps(WebDriverHelpers webDriverHelpers, TaskService taskSer task = taskService.buildGeneratedTask(); fillAllFields(task); webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); - webDriverHelpers.waitForPageLoadingSpinnerToDisappear(10); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); When( @@ -63,6 +63,12 @@ public CreateNewTaskSteps(WebDriverHelpers webDriverHelpers, TaskService taskSer final Task actualTask = collectTaskData(); ComparisonHelper.compareEqualEntities(task, actualTask); }); + When( + "^I click on Save button in New Task form$", + () -> { + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); When( "^I change all Task's fields and save$", diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/TaskManagementSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/TaskManagementSteps.java index 57262d0e957..fc175478ee1 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/TaskManagementSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/tasks/TaskManagementSteps.java @@ -18,11 +18,14 @@ package org.sormas.e2etests.steps.web.application.tasks; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.TOTAL_CASES_COUNTER; +import static org.sormas.e2etests.pages.application.contacts.EditContactPage.POPUP_YES_BUTTON; +import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.TRAVEL_ENTRY_DIRECTORY_PAGE_SHOW_MORE_FILTERS_BUTTON; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.APPLY_FILTER; +import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.BULK_ACTIONS_EVENT_DIRECTORY; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.RESET_FILTER; import static org.sormas.e2etests.pages.application.events.EventDirectoryPage.getByEventUuid; -import static org.sormas.e2etests.pages.application.tasks.CreateNewTaskPage.COMMENTS_ON_EXECUTION_TEXTAREA; -import static org.sormas.e2etests.pages.application.tasks.CreateNewTaskPage.TASK_TYPE_COMBOBOX; +import static org.sormas.e2etests.pages.application.tasks.CreateNewTaskPage.*; import static org.sormas.e2etests.pages.application.tasks.TaskManagementPage.*; import cucumber.api.java8.En; @@ -40,10 +43,12 @@ import org.openqa.selenium.WebDriverException; import org.openqa.selenium.WebElement; import org.sormas.e2etests.entities.pojo.web.Task; +import org.sormas.e2etests.helpers.AssertHelpers; import org.sormas.e2etests.helpers.WebDriverHelpers; import org.sormas.e2etests.state.ApiState; import org.sormas.e2etests.steps.BaseSteps; import org.sormas.e2etests.steps.web.application.cases.EditCaseSteps; +import org.testng.Assert; import org.testng.asserts.SoftAssert; @Slf4j @@ -58,6 +63,7 @@ public TaskManagementSteps( WebDriverHelpers webDriverHelpers, BaseSteps baseSteps, ApiState apiState, + AssertHelpers assertHelpers, SoftAssert softly, Properties properties) { this.webDriverHelpers = webDriverHelpers; @@ -67,6 +73,13 @@ public TaskManagementSteps( "^I click on the NEW TASK button$", () -> webDriverHelpers.clickWhileOtherButtonIsDisplayed(NEW_TASK_BUTTON, TASK_TYPE_COMBOBOX)); + And( + "I click on SHOW MORE FILTERS BUTTON on Task directory page", + () -> { + webDriverHelpers.clickOnWebElementBySelector( + TRAVEL_ENTRY_DIRECTORY_PAGE_SHOW_MORE_FILTERS_BUTTON); + TimeUnit.SECONDS.sleep(3); + }); When( "^I open last created task from Tasks Directory$", @@ -74,11 +87,18 @@ public TaskManagementSteps( By lastTaskEditButton = By.xpath( String.format( - EDIT_BUTTON_XPATH_BY_TEXT, CreateNewTaskSteps.task.getCommentsOnTask())); - webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(lastTaskEditButton, 40); - webDriverHelpers.clickOnWebElementBySelector(lastTaskEditButton); + EDIT_BUTTON_XPATH_BY_TEXT, CreateNewTaskSteps.task.getCommentsOnExecution())); + webDriverHelpers.clickOnWebElementBySelector(SHOW_MORE_FILTERS); webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable( - COMMENTS_ON_EXECUTION_TEXTAREA); + ASSIGNED_USER_FILTER_INPUT); + String assignedUser = CreateNewTaskSteps.task.getAssignedTo(); + int indexToSubstring = assignedUser.indexOf("-"); + webDriverHelpers.fillInWebElement( + ASSIGNED_USER_FILTER_INPUT, assignedUser.substring(0, indexToSubstring).trim()); + webDriverHelpers.clickOnWebElementBySelector(APPLY_FILTER); + webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(lastTaskEditButton, 40); + webDriverHelpers.clickElementSeveralTimesUntilNextElementIsDisplayed( + lastTaskEditButton, TASK_STATUS_OPTIONS, 5); }); When( @@ -162,6 +182,12 @@ public TaskManagementSteps( TimeUnit.SECONDS.sleep(5); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); + When( + "I click on Enter Bulk Edit Mode from Tasks Directory", + () -> { + webDriverHelpers.clickOnWebElementBySelector(BULK_EDIT_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); When( "^I search last created task by API using Contact UUID$", @@ -173,6 +199,73 @@ public TaskManagementSteps( GENERAL_SEARCH_INPUT, apiState.getCreatedContact().getUuid()); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); }); + When( + "^I select first (\\d+) results in grid in Task Directory$", + (Integer number) -> { + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + for (int i = 2; i <= number + 1; i++) { + webDriverHelpers.scrollToElement(getCheckboxByIndex(String.valueOf(i))); + webDriverHelpers.clickOnWebElementBySelector(getCheckboxByIndex(String.valueOf(i))); + } + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "I click yes on the CONFIRM REMOVAL popup from Task Directory page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(POPUP_YES_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); + }); + When( + "I check if popup message is {string}", + (String expectedText) -> { + softly.assertEquals( + webDriverHelpers.getTextFromPresentWebElement( + By.cssSelector(".v-Notification-description")), + expectedText, + "Bulk action went wrong"); + softly.assertAll(); + }); + When( + "I check if popup message after bulk edit is {string}", + (String expectedText) -> { + softly.assertEquals( + webDriverHelpers.getTextFromPresentWebElement( + By.cssSelector(".v-Notification-caption")), + expectedText, + "Bulk edit went wrong"); + softly.assertAll(); + }); + + And( + "I click on Bulk Actions combobox in Task Directory", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS_EVENT_DIRECTORY)); + And( + "I click on Delete button from Bulk Actions Combobox in Task Directory", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_DELETE_BUTTON)); + And( + "I click on Archive button from Bulk Actions Combobox in Task Directory", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_ARCHIVE_BUTTON)); + And( + "I click on Edit button from Bulk Actions Combobox in Task Directory", + () -> webDriverHelpers.clickOnWebElementBySelector(BULK_EDITING_BUTTON)); + When( + "I click to bulk change assignee for selected tasks", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CHANGE_ASSIGNEE_CHECKBOX); + webDriverHelpers.selectFromCombobox(TASK_ASSIGNEE_COMBOBOX, "Surveillance OFFICER"); + }); + When( + "I click to bulk change priority for selected tasks", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CHANGE_PRIORITY_CHECKBOX); + webDriverHelpers.clickWebElementByText(TASK_RADIOBUTTON, "HIGH"); + }); + When( + "I click to bulk change status for selected tasks", + () -> { + webDriverHelpers.clickOnWebElementBySelector(CHANGE_STATUS_CHECKBOX); + webDriverHelpers.clickWebElementByText(TASK_RADIOBUTTON, "DONE"); + }); When( "^I am checking if all the fields are correctly displayed in the Task Management table$", @@ -239,10 +332,20 @@ public TaskManagementSteps( softly.assertAll(); }); + Then( + "I check that number of displayed tasks results is {int}", + (Integer number) -> + assertHelpers.assertWithPoll20Second( + () -> + Assert.assertEquals( + Integer.parseInt( + webDriverHelpers.getTextFromPresentWebElement(TOTAL_CASES_COUNTER)), + number.intValue(), + "Number of displayed tasks is not correct"))); + When( "^I collect the task column objects$", () -> { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40); List> tableRowsData = getTableRowsData(); taskTableRows = new ArrayList<>(); diff --git a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/users/CreateNewUserSteps.java b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/users/CreateNewUserSteps.java index daef295ff6b..d530b7cd14f 100644 --- a/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/users/CreateNewUserSteps.java +++ b/sormas-e2e-tests/src/test/java/org/sormas/e2etests/steps/web/application/users/CreateNewUserSteps.java @@ -18,15 +18,20 @@ package org.sormas.e2etests.steps.web.application.users; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.ALL_RESULTS_CHECKBOX; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.BULK_ACTIONS; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_DETAILED_COLUMN_HEADERS; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_DETAILED_TABLE_DATA; import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.CASE_DETAILED_TABLE_ROWS; +import static org.sormas.e2etests.pages.application.cases.CaseDirectoryPage.ENTER_BULK_EDIT_MODE; import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.LOGOUT_BUTTON; import static org.sormas.e2etests.pages.application.users.CreateNewUserPage.*; +import static org.sormas.e2etests.pages.application.users.UserManagementPage.NEW_USER_BUTTON; import cucumber.api.java8.En; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import javax.inject.Inject; import org.openqa.selenium.WebElement; @@ -46,6 +51,7 @@ public class CreateNewUserSteps implements En { public static String userName; public static String userPass; private final BaseSteps baseSteps; + private static int amountOfRecords; @Inject public CreateNewUserSteps( @@ -56,6 +62,70 @@ public CreateNewUserSteps( this.webDriverHelpers = webDriverHelpers; this.baseSteps = baseSteps; + When( + "^I pick and count amount a users that was created on the same period of time$", + () -> { + String userNameFromEditUser = user.getUserName().substring(0, 19); + webDriverHelpers.fillInWebElement(USER_INPUT_SEARCH, userNameFromEditUser); + TimeUnit.SECONDS.sleep(5); // wait for page loaded + String amountOfUsers = webDriverHelpers.getTextFromWebElement(AMOUNT_OF_CHOSEN_USERS); + amountOfRecords = Integer.parseInt(amountOfUsers); + }); + + When( + "I click Enter Bulk Edit Mode on Users directory page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(ENTER_BULK_EDIT_MODE); + }); + + When( + "I click checkbox to choose all User results", + () -> { + webDriverHelpers.clickOnWebElementBySelector(ALL_RESULTS_CHECKBOX); + }); + + When( + "I pick {string} value for Active filter in User Directory", + (String activeValue) -> { + webDriverHelpers.selectFromCombobox(ACTIVE_USER_COMBOBOX, activeValue); + TimeUnit.SECONDS.sleep(3); // waiting for all users to pick + }); + + When( + "I click on Bulk Actions combobox on User Directory Page", + () -> { + webDriverHelpers.clickOnWebElementBySelector(BULK_ACTIONS); + TimeUnit.SECONDS.sleep(3); // waiting for all users to pick + }); + + When( + "I click on {string} from Bulk Actions combobox on User Directory Page", + (String action) -> { + switch (action) { + case "Enable": + webDriverHelpers.clickOnWebElementBySelector(ENABLE_BULK_ACTIONS_VALUES); + webDriverHelpers.clickOnWebElementBySelector(CONFIRM_POP_UP); + break; + case "Disable": + webDriverHelpers.clickOnWebElementBySelector(DISABLE_BULK_ACTIONS_VALUES); + webDriverHelpers.clickOnWebElementBySelector(CONFIRM_POP_UP); + break; + } + }); + + And( + "I check that all Users are changed Active field value to opposite", + () -> { + String amountOfCheckboxes = + webDriverHelpers.getTextFromWebElement(AMOUNT_ACTIVE_INACTIVE_USERS); + Integer optionsRecords = Integer.parseInt(amountOfCheckboxes); + softly.assertEquals( + Integer.valueOf(amountOfRecords), + optionsRecords, + "Not all Active fields value are changed"); + softly.assertAll(); + }); + When( "I create new ([^\"]*) with limited disease to ([^\"]*)", (String role, String disease) -> { @@ -156,6 +226,47 @@ public CreateNewUserSteps( closeNewPasswordPopUp(); }); + When( + "I create {int} new users with National User via UI", + (Integer users) -> { + List userList = new ArrayList<>(); + for (int i = 0; i < users; i++) { + webDriverHelpers.clickWhileOtherButtonIsDisplayed( + NEW_USER_BUTTON, FIRST_NAME_OF_USER_INPUT); + user = userService.buildGeneratedUserWithRole("National User"); + fillFirstName(user.getFirstName()); + fillLastName(user.getLastName()); + fillEmailAddress(user.getEmailAddress()); + fillPhoneNumber(user.getPhoneNumber()); + selectLanguage(user.getLanguage()); + selectCountry(user.getCountry()); + selectRegion(user.getRegion()); + selectDistrict(user.getDistrict()); + selectCommunity(user.getCommunity()); + selectFacilityCategory(user.getFacilityCategory()); + selectFacilityType(user.getFacilityType()); + selectFacility(user.getFacility()); + fillFacilityNameAndDescription(user.getFacilityNameAndDescription()); + fillStreet(user.getStreet()); + fillHouseNr(user.getHouseNumber()); + fillAdditionalInformation(user.getAdditionalInformation()); + fillPostalCode(user.getPostalCode()); + fillCity(user.getCity()); + selectAreaType(user.getAreaType()); + fillGpsLatitude(user.getGpsLatitude()); + fillGpsLongitude(user.getGpsLongitude()); + fillGpsAccuracy(user.getGpsAccuracy()); + selectActive(user.getActive()); + fillUserName(user.getUserName()); + selectUserRole("National User"); + selectLimitedDisease(user.getLimitedDisease()); + webDriverHelpers.scrollToElement(SAVE_BUTTON); + webDriverHelpers.clickOnWebElementBySelector(SAVE_BUTTON); + webDriverHelpers.waitForPageLoadingSpinnerToDisappear(20); + closeNewPasswordPopUp(); + } + }); + And( "^I change user data and save the changes$", () -> { @@ -270,7 +381,6 @@ private void fillCity(String city) { } private void selectAreaType(String areaType) { - webDriverHelpers.waitForPageLoaded(); webDriverHelpers.selectFromCombobox(AREA_TYPE_COMBOBOX, areaType); } diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/api/Api.feature b/sormas-e2e-tests/src/test/resources/features/sanity/api/Api.feature index aaef2cb904d..3ccd6bcbdb3 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/api/Api.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/api/Api.feature @@ -1,4 +1,4 @@ -@Sanity @API +@Sanity @API Feature: Check basic POSTs RestApi endpoints @env_main @@ -81,3 +81,82 @@ Feature: Check basic POSTs RestApi endpoints | 1 | | 5 | + @env_de + Scenario: Create a new person on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de @ignore + Scenario: Create new case on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de + Scenario: Create a new contact on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de @ignore + Scenario: Create a new contact linked to a case on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact linked to the previous created case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de + Scenario: Create a new event on DE market + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de @ignore + Scenario: Create a new sample on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new sample + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de + Scenario: Create a new task on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + @env_de + Scenario Outline: Create Person and attach immunizations on DE market + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + When API: I create new immunizations for last created person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + + Examples: + | numberOfImmunizations | + | 1 | + | 5 | \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/apiperformance/ApiResponseMeasurements.feature b/sormas-e2e-tests/src/test/resources/features/sanity/apiperformance/ApiResponseMeasurements.feature new file mode 100644 index 00000000000..f0e39d1871b --- /dev/null +++ b/sormas-e2e-tests/src/test/resources/features/sanity/apiperformance/ApiResponseMeasurements.feature @@ -0,0 +1,22 @@ +@API @ApiMeasurements @PublishApiCustomReport +Feature: APIs loading time + + @env_performance + Scenario: Check response time for person creation + Given API: I check response time for person creation is less than 1000 milliseconds + + @env_performance + Scenario: Check response time for event creation + Given API: I check response time for event creation is less than 1000 milliseconds + + @env_performance + Scenario: Check response time for case creation + Given API: I check response time for case creation is less than 2000 milliseconds + + @env_performance + Scenario: Check response time for contact creation + Given API: I check response time for contact creation is less than 2000 milliseconds + + @env_performance + Scenario: Check response time for sample creation + Given API: I check response time for sample creation is less than 2000 milliseconds \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/pagesperformance/PagesLoadMeasurements.feature b/sormas-e2e-tests/src/test/resources/features/sanity/pagesperformance/PagesLoadMeasurements.feature index 1809824ac39..768ba9b2ed0 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/pagesperformance/PagesLoadMeasurements.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/pagesperformance/PagesLoadMeasurements.feature @@ -1,40 +1,40 @@ -@UI @PagesMeasurements @PublishCustomReport +@UI @PagesMeasurements @PublishPagesCustomReport Feature: Pages loading time @env_performance Scenario: Check Tasks page loading time Given I log in with National User - And I click on the Tasks button from navbar + And I click on the Tasks button from navbar and start timer Then I wait for "Tasks" page to load and calculate elapsed time @env_performance Scenario: Check Persons page loading time Given I log in with National User - And I click on the Persons button from navbar + And I click on the Persons button from navbar and start timer Then I wait for "Persons" page to load and calculate elapsed time @env_performance Scenario: Check Cases page loading time Given I log in with National User - And I click on the Cases button from navbar + And I click on the Cases button from navbar and start timer Then I wait for "Cases" page to load and calculate elapsed time @env_performance Scenario: Check Contacts page loading time Given I log in with National User - And I click on the Contacts button from navbar + And I click on the Contacts button from navbar and start timer Then I wait for "Contacts" page to load and calculate elapsed time @env_performance Scenario: Check Events page loading time Given I log in with National User - And I click on the Events button from navbar + And I click on the Events button from navbar and start timer Then I wait for "Events" page to load and calculate elapsed time @env_performance Scenario: Check Samples page loading time Given I log in with National User - And I click on the Sample button from navbar + And I click on the Sample button from navbar and start timer Then I wait for "Samples" page to load and calculate elapsed time @env_performance @@ -46,7 +46,7 @@ Feature: Pages loading time @env_performance Scenario: Check Immunizations page loading time Given I log in with National User - And I click on the Immunizations button from navbar + And I click on the Immunizations button from navbar and start timer Then I wait for "Immunizations" page to load and calculate elapsed time @env_performance diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/About.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/About.feature new file mode 100644 index 00000000000..fd73590797e --- /dev/null +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/About.feature @@ -0,0 +1,15 @@ +@UI @Sanity @About +Feature: About end to end tests + + @issue=SORDEV-6474 @env_main + Scenario: Check language options in Data Dictionary depending on the user language setting + Given I log in as a National Language User + And I click on the About button from navbar + Then I click on the User Settings button from navbar + And I select "Deutsch" language from Combobox in User settings + And I click on Data Dictionary hyperlink and download XLSX file in About directory + And I read data from downloaded XLSX Data Dictionary file + And I detect and check language that was defined in User Settings for XLSX file content + And I delete exported xlsx file from user downloads directory + Then I click on the User Settings button from navbar + And I set on default language as English in User settings \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Case.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Case.feature index 2e8a42f2c3c..f1a3d761b99 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Case.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Case.feature @@ -21,7 +21,7 @@ Feature: Case end to end tests Then I check the created data is correctly displayed on Edit case page And I check the created data is correctly displayed on Edit case person page - @env_main + @env_main @ignore #un-ignore this when dataReceived fields are fixed in test-auto Scenario: Edit, save and check all fields of a new case Given I log in with National User And I click on the Cases button from navbar @@ -93,6 +93,67 @@ Feature: Case end to end tests And I click on save button from Edit Case page with current hospitalization Then I check if the specific data is correctly displayed + @issue=SORDEV-5517 @env_de + Scenario: Fill the case tab (DE specific) + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data for DE version + Then I select German Investigation Status Done + And I check if date of investigation filed is available + Then I select German Investigation Status Pending + Then I select German Investigation Status Discarded + And I check if date of investigation filed is available + Then I select German Investigation Status Pending + Then I select German Outcome Of Case Status Deceased + And I check if date of outcome filed is available + Then I select German Outcome Of Case Status Recovered + And I check if date of outcome filed is available + And I click on the German option for Yes in Sequelae + And I check if Sequelae Details field is available + And I click on the German option for No in Sequelae + And I click on the German option for Unknown in Sequelae + Then I select German Outcome Of Case Status Unknown + And I check if date of outcome filed is available + And I click on the German option for Yes in Sequelae + And I check if Sequelae Details field is available + And I click on the German option for No in Sequelae + And I click on the German option for Unknown in Sequelae + Then I click on Place of stay of this case differs from its responsible jurisdiction + And I check if region combobox is available and I select Responsible Region + And I check if district combobox is available and i select Responsible District + And I check if community combobox is available + Then I click on Facility as German place of stay + And I check if Facility Category combobox is available + And I check if Facility Type combobox is available + Then I set Facility in German as a Other facility + And I fill Facility name and description filed by dummy description + And I check if Facility name and description field is available + Then I set German Quarantine Home + And I check if Quarantine start field is available + And I check if Quarantine end field is available + Then I select Quarantine ordered verbally checkbox + And I check if Date of verbal order field is available + Then I select Quarantine ordered by official document checkbox + And I check if Date of the official document ordered field is available + Then I select Official quarantine order sent + And I check if Date official quarantine order was sent field is available + Then I set German Quarantine Institutional + And I check if Quarantine start field is available + And I check if Quarantine end field is available + And I check if Date of verbal order field is available + And I check if Date of the official document ordered field is available + And I check if Date official quarantine order was sent field is available + Then I set German Quarantine None + Then I set German Quarantine Unknown + Then I set German Quarantine Other + And I check if Quarantine details field is available + Then I set German Vaccination Status as vaccinated + Then I set German Vaccination Status as unvaccinated + Then I set German Vaccination Status as unknown + And I click on save button from Edit Case page with current hospitalization + Then I check if the specific data is correctly displayed + @env_main Scenario: Delete created case When API: I create a new person @@ -137,7 +198,7 @@ Feature: Case end to end tests When I am accessing the Symptoms tab using of created case via api And I check the created data is correctly displayed on Symptoms tab page -@issue=SORDEV-5496 @env_main + @issue=SORDEV-5496 @env_main Scenario: Generate and download Case document Given I log in with National User And I click on the Cases button from navbar @@ -192,12 +253,12 @@ Feature: Case end to end tests Then I click on Save button from New Treatment popup Then I check if created data is correctly displayed in Treatment section - @issue=SORDEV-5518 @env_main + @issue=SORDEV-5518 @env_main Scenario: Fill the case person tab Given I log in with National User And I click on the Cases button from navbar And I click on the NEW CASE button - When I create a new case with specific data + When I create a new case with disease "ANTHRAX" Then I check the created data is correctly displayed on Edit case page And I check the created data is correctly displayed on Edit case person page Then I set Present condition of Person to Dead in Case Person tab @@ -209,7 +270,7 @@ Feature: Case end to end tests And I click on save button to Save Person data in Case Person Tab Then I check if saved Person data is correct - @issue=SORDEV-5529 @env_main @ignore + @issue=SORDEV-5529 @env_main Scenario: Fill the clinical course tab When API: I create a new person Then API: I check that POST call body is "OK" @@ -235,40 +296,6 @@ Feature: Case end to end tests Then I navigate to symptoms tab And I check if created data is correctly displayed in Symptoms tab for Set cleared to Unknown Then I click on Clinical Course tab from Edit Case page - And I set Diabetes radio button to YES - And I set Diabetes radio button to NO - And I set Diabetes radio button to UNKNOWN - And I set Diabetes radio button to UNKNOWN - And I set Immunodeficiency including HIV radio button to YES - And I set Immunodeficiency including HIV radio button to NO - And I set Immunodeficiency including HIV radio button to UNKNOWN - And I set Immunodeficiency including HIV radio button to UNKNOWN - And I set Liver disease radio button to YES - And I set Liver disease radio button to NO - And I set Liver disease radio button to UNKNOWN - And I set Liver disease radio button to UNKNOWN - And I set Malignancy radio button to YES - And I set Malignancy radio button to NO - And I set Malignancy radio button to UNKNOWN - And I set Malignancy radio button to UNKNOWN - And I set Chronic pulmonary disease radio button to YES - And I set Chronic pulmonary disease radio button to NO - And I set Chronic pulmonary disease radio button to UNKNOWN - And I set Chronic pulmonary disease radio button to UNKNOWN - And I set Renal disease radio button to YES - And I set Renal disease radio button to NO - And I set Renal disease radio button to UNKNOWN - And I set Renal disease radio button to UNKNOWN - And I set Chronic neurological/neuromuscular disease radio button to YES - And I set Chronic neurological/neuromuscular disease radio button to NO - And I set Chronic neurological/neuromuscular disease radio button to UNKNOWN - And I set Chronic neurological/neuromuscular disease radio button to UNKNOWN - And I set Cardiovascular disease including hypertension radio button to YES - And I set Cardiovascular disease including hypertension radio button to NO - And I set Cardiovascular disease including hypertension radio button to UNKNOWN - And I set Cardiovascular disease including hypertension radio button to UNKNOWN - Then I click Save button on Clinical Course Tab - And I check if Case saved popup appeared and close it @issue=SORDEV-8412 @env_main Scenario: Change of Isolation/Quarantine should be documented @@ -342,7 +369,7 @@ Feature: Case end to end tests And I navigate to case person tab And I check if saved Person data is correct - @issue=SORDEV-7452 @env_main @ignore + @issue=SORDEV-7452 @env_main Scenario: Bulk mode for linking/adding cases to new Event When API: I create a new person Then API: I check that POST call body is "OK" @@ -369,7 +396,7 @@ Feature: Case end to end tests And I navigate to the last created Event page via URL And I check that number of displayed Event Participants is 1 - @issue=SORDEV-7452 @env_main @ignore + @issue=SORDEV-7452 @env_main Scenario: Bulk mode for linking/adding case to existing Event Given API: I create a new event Then API: I check that POST call body is "OK" @@ -456,7 +483,7 @@ Feature: Case end to end tests Then I click on the Persons button from navbar And I filter Persons by created person name in cases And I click on first person in person directory - And I set Present condition of Person to Dead in Case Person tab + And I set Present condition of Person to Dead in Person tab Then I set death date for person 1 month ago And I click on save button from Edit Person page Then I click on the Cases button from navbar @@ -546,43 +573,107 @@ Feature: Case end to end tests And I check if Cause of death is Other cause And I check if Date of dead for specified case is correct - - #TODO separate into 3 tests - test doesn't reflect test case steps - @issue=SORDEV-8048 @env_de @ignore - Scenario: Test Default value for disease if only one is used by the server + @issue=SORDEV-6612 @env_main + Scenario: Manually triggered calculation of case classification + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 Given I log in with National User And I click on the Cases button from navbar - And I click on the NEW CASE button - When I create a new case with specific data for DE version - Then I check the created data is correctly displayed on Edit case page for DE version - Then I back to Case Directory using case list button - And I click on Case Line Listing button - Then I create a new case in line listing feature popup for DE version - And I save the new line listing case + And I open the last created Case via API + Then I click on INFO button on Case Edit page + When I am accessing the Symptoms tab using of created case via api + And I change all symptoms fields to "YES" option field and save + And I am accessing the Symptoms tab using of created case via api + And I check the created data is correctly displayed on Symptoms tab page + And I click on Case tab from Symptoms tab directory + And I check that Case Classification has "Suspect case" value + Then I click on save case button + Then I navigate to symptoms tab + Then I change Other symptoms to "YES" option + And I click on Clear all button From Symptoms tab + And I change all symptoms fields to "NO_AND_OTHER_SYMPTOMS_TO_YES" option field and save + And I am accessing the Symptoms tab using of created case via api + And I check the created data that describes Clinical signs and Symptoms are correctly displayed for No or UNKNOWN option in Symptoms tab page + And I click on Case tab from Symptoms tab directory + And I check that Case Classification has "Not yet classified" value + Then I click on save case button + When I am accessing the Symptoms tab using of created case via api + And I click on Clear all button From Symptoms tab + And I change all symptoms fields to "YES" option field and save + When I am accessing the Symptoms tab using of created case via api + And I check the created data is correctly displayed on Symptoms tab page + And I click on Case tab from Symptoms tab directory + And I change Epidemiological confirmation Combobox to "Yes" option + Then I click on save case button + And I check that Case Classification has "Probable case" value + Then I click on save case button + When I am accessing the Symptoms tab using of created case via api + And I click on Clear all button From Symptoms tab + And I change all symptoms fields to "YES" option field and save + When I am accessing the Symptoms tab using of created case via api + And I check the created data is correctly displayed on Symptoms tab page + And I click on Case tab from Symptoms tab directory + Then I click on save case button + And I collect the case person UUID displayed on Edit case page + And I click on New Sample + When I collect the sample UUID displayed on create new sample page + And I create a new Sample with for COVID alternative purpose + And I click on edit Sample + And I click on the new pathogen test from the Edit Sample page + And I fill all fields from Pathogen test for COVID-19 disease result popup and save + Then I check that the created Pathogen is correctly displayed + And I save the created sample + And I click on Case tab from Symptoms tab directory + Then I click on save case button in Symptoms tab + And I check that Case Classification has "Confirmed case" value + When I am accessing the Symptoms tab using of created case via api + And I click on Clear all button From Symptoms tab + And I change all symptoms fields to "NO" option field and save + When I am accessing the Symptoms tab using of created case via api + And I check the created data that describes Clinical signs and Symptoms are correctly displayed for No or UNKNOWN option in Symptoms tab page + Then I click on save case button in Symptoms tab + And I click on Case tab from Symptoms tab directory + And I collect the case person UUID displayed on Edit case page + And I click on Case tab from Symptoms tab directory + Then I click on save case button in Symptoms tab + And I check that Case Classification has "Confirmed case with no symptoms" value + When I am accessing the Symptoms tab using of created case via api + And I click on Clear all button From Symptoms tab + And I change all symptoms fields to "UNKNOWN" option field and save + When I am accessing the Symptoms tab using of created case via api + And I check the created data that describes Clinical signs and Symptoms are correctly displayed for No or UNKNOWN option in Symptoms tab page + And I click on Case tab from Symptoms tab directory + Then I click on save case button in Symptoms tab + And I collect the case person UUID displayed on Edit case page + And I click on Case tab from Symptoms tab directory + Then I click on save case button + And I check that Case Classification has "Confirmed case with unknown symptoms" value + When I am accessing the Symptoms tab using of created case via api + And I click on Clear all button From Symptoms tab + And I change all symptoms fields and save + And I am accessing the Symptoms tab using of created case via api + And I check the created data is correctly displayed on Symptoms tab page + And I click on Case tab from Symptoms tab directory + And I check that Case Classification has "Confirmed case" value + Then I click on save case button + And I change the Case Classification field for "NOT_CLASSIFIED" value + And I click on save case button + And From Case page I click on Calculate Case Classification button + And I click on save case button + And I check that Case Classification has "Confirmed case" value + + @issue=SORDEV-8048 @env_de + Scenario: Test Default value for disease if only one is used by the server for Cases + Given I log in with National User Then I click on the Cases button from navbar - And I check that case created from Line Listing for DE version is saved and displayed in results grid - Then I click on the Contacts button from navbar - And I click on the NEW CONTACT button - And I fill a new contact form for DE version - Then I click on SAVE new contact button - Then I check the created data for DE version is correctly displayed on Edit Contact page - Then I click on the Contacts button from navbar - Then I click on Line Listing button - And I create a new Contact with specific data for DE version through Line Listing - And I save the new contact using line listing feature - Then I click on the Contacts button from navbar - And I check that contact created from Line Listing is saved and displayed in results grid - Then I click on the Events button from navbar - And I click on the NEW EVENT button - When I create a new event with specific data for DE version - And I click on the Events button from navbar - And I search for specific event in event directory - And I click on the searched event - Then I check the created data for DE version is correctly displayed in event edit page - Then I click on the Sample button from navbar - When I open created Sample - Then I click on the new pathogen test from the Edit Sample page for DE version - And I complete all fields from Pathogen test result popup for IgM test type for DE version and save + When I click on the NEW CASE button + Then I check if default disease value is set for COVID-19 + And I click on Case Line Listing button + And I check if default disease value in the Line listing is set for COVID-19 @issue=SORDEV-9353 @env_main Scenario: Deselecting the "Enter home address of the case person now" test regression @@ -626,7 +717,7 @@ Feature: Case end to end tests And I check that case reference definition is set to fulfilled in German on Edit case page When I click on New Sample in German And I create a new Sample with positive test result for DE version - And I select the German words for PCR / RT-PCR as Type of Test in the Create New Sample popup + And I select the German words for PCR RT-PCR as Type of Test in the Create New Sample popup And I save the created sample Then I check that case classification is set to one of the confirmed classifications in German on Edit case page And I check that case reference definition is set to fulfilled in German on Edit case page @@ -643,11 +734,15 @@ Feature: Case end to end tests @issue=SORDEV-5479 @env_main Scenario: Test for exporting and importing case contact + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 Given I log in as a Admin User And I click on the Cases button from navbar - And I click on the NEW CASE button - When I create a new case with specific data - Then I check the created data is correctly displayed on Edit case page + And I open the last created Case via API When I open the Case Contacts tab Then I click on new contact button from Case Contacts tab And I create a new basic contact to export from Cases Contacts tab @@ -658,8 +753,9 @@ Feature: Case end to end tests Then I click on the Import button from Case Contacts directory And I select the case contact CSV file in the file picker And I click on the "START DATA IMPORT" button from the Import Case Contacts popup + And I select first existing person from the Case Contact Import popup And I confirm the save Case Contact Import popup - And I confirm the save Case Contact Import popup + And I select first existing contact from the Case Contact Import popup And I check that an import success notification appears in the Import Case Contact popup Then I delete exported file from Case Contact Directory @@ -717,4 +813,138 @@ Feature: Case end to end tests And I click on the Download Import Guide button in Import Cases Then I check if Import Guide for cases was downloaded correctly And And I click on the Download Data Dictionary button in Import Cases - Then I check if Data Dictionary for cases was downloaded correctly \ No newline at end of file + Then I check if Data Dictionary for cases was downloaded correctly + + @issue=SORDEV-5526 @env_main + Scenario: Create a contact with source case + Given API: I create a new person + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new case + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And I log in with National User + And I click on the Cases button from navbar + And I open the last created Case via API + And I navigate to Epidemiological Data tab on Edit Case Page + When I select NO from Contacts With Source Case Known + Then I check that Contacts of Source filed is not available + When I select UNKNOWN from Contacts With Source Case Known + Then I check that Contacts of Source filed is not available + When I select YES from Contacts With Source Case Known + Then I check if Contacts of Source filed is available + When I click on the NEW CONTACT button on Epidemiological Data Tab of Edit Case Page + And I click on the CHOOSE SOURCE CASE button from CONTACT page + And I click yes on the DISCARD UNSAVED CHANGES popup if it appears + And I click on the CHOOSE CASE button in Create new contact form in Exposure for Epidemiological data tab in Cases + And I search for the last case uuid in the CHOOSE SOURCE popup of Create Contact window + And I open the first found result in the CHOOSE SOURCE popup of Create Contact window + And I click on SAVE new contact button in the CHOOSE SOURCE popup of Create Contact window + Then I check that Selected case is listed as Source Case in the CONTACTS WITH SOURCE CASE Box + + @issue=SORDEV-9124 @env_main + Scenario: Document Templates create quarantine order + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Cases button from navbar + And I open the last created Case via API + Then I click on Create button in Document Templates box in Edit Case directory + And I click on checkbox to upload generated document to entity in Create Quarantine Order form in Edit Case directory + And I select "ExampleDocumentTemplateCases.docx" Quarantine Order in Create Quarantine Order form in Edit Case directory + And I click on Create button in Create Quarantine Order form + Then I navigate to the last created case via the url + And I check if downloaded file is correct for "ExampleDocumentTemplateCases.docx" Quarantine Order in Edit Case directory + And I check if generated document based on "ExampleDocumentTemplateCases.docx" appeared in Documents tab for API created case in Edit Case directory + And I delete downloaded file created from "ExampleDocumentTemplateCases.docx" Document Template + + @issue=SORDEV-9124 @env_main + Scenario: Document Templates create quarantine order for Case bulk + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data + Then I check the created data is correctly displayed on Edit case page + And I click on the Cases button from navbar + And I click SHOW MORE FILTERS button on Case directory page + And I apply Date type filter to "Case report date" on Case directory page + And I fill Cases from input to 1 days before mocked Case created on Case directory page + And I click APPLY BUTTON in Case Directory Page + And I click SHOW MORE FILTERS button on Case directory page + And I click on the More button on Case directory page + And I click Enter Bulk Edit Mode on Case directory page + And I select last created UI result in grid in Case Directory for Bulk Action + And I select last created API result in grid in Case Directory for Bulk Action + And I click on Bulk Actions combobox on Case Directory Page + And I click on Create Quarantine Order from Bulk Actions combobox on Case Directory Page + And I click on checkbox to upload generated document to entities in Create Quarantine Order form in Case directory + And I select "ExampleDocumentTemplateCases.docx" Quarantine Order in Create Quarantine Order form in Case directory + And I click on Create button in Create Quarantine Order form + And I click on close button in Create Quarantine Order form + And I check if downloaded zip file for Quarantine Order is correct + Then I click Leave Bulk Edit Mode on Case directory page + And I open the last created Case via API + And I check if generated document based on "ExampleDocumentTemplateCases.docx" appeared in Documents tab for API created case in Edit Case directory + Then I click on the Cases button from navbar + And I filter by CaseID of last created UI Case on Case directory page + Then I open last created case + And I check if generated document based on "ExampleDocumentTemplateCases.docx" appeared in Documents tab for UI created case in Edit Case directory + And I delete downloaded file created from Quarantine order + + @issue=SORDEV-9477 @env_main + Scenario: Add a person search option on creation forms + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new person + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + And I fill new case form with chosen data without personal data on Case directory page + And I click on the person search button in new case form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + And I click on the clear button in new case form + And I click on the person search button in new case form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + Then I click on Save button in Case form + And I Pick an existing case in Pick or create person popup in Case entry + And I check the created data for existing person is correctly displayed on Edit case page + And I click on Save button in Case form + When I click on the Persons button from navbar + And I open the last created Person via API + And I check that SEE CASES FOR THIS PERSON button appears on Edit Person page + Then I click on the Cases button from navbar + And I open last created case + And I navigate to Contacts tab in Edit case page + Then I click on the NEW CONTACT button + And I fill a new contact form with chosen data without personal data + And I click on the person search button in create new contact form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + And I click on the clear button in new contact form + And I click on the person search button in create new contact form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + Then I click on SAVE new contact button + Then I check the created data for existing person is correctly displayed on Edit Contact page based on Case + When I click on the Persons button from navbar + And I click on the RESET FILTERS button for Person + And I open the last created Person via API + And I check that SEE CONTACTS FOR THIS PERSON button appears on Edit Person page \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseClasification.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseClasification.feature index 1e73d8a7fb4..bee25c6cae3 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseClasification.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseClasification.feature @@ -1,8 +1,8 @@ @UI @Sanity @Case @Classification Feature: Case Classification functionality - @env_main @ignore - Scenario: Case Classification change from Not Yet Classified to Suspect Case by confirming Sore Throat + @env_main + Scenario: Change Case classification from Not Yet Classified to Suspect Case by confirming Sore Throat Given API: I create a new person Then API: I check that POST call body is "OK" And API: I check that POST call status code is 200 @@ -16,13 +16,13 @@ Feature: Case Classification functionality When I check Yes Option for Soar Throat on Symptoms tab page And I select sore throat option And I click on save button from Edit Case page - Then From Symptoms Tab I click on Case tab + Then I click on Case tab from Symptoms tab directory And From Case page I click on Calculate Case Classification button And I click on save button from Edit Case page Then For the current Case the Case Classification value should be "Suspect case" @env_main - Scenario: Case Classification change from Suspect Case to Not Yet Classified + Scenario: Change Case classification from Suspect Case to Not Yet Classified Given API: I create a new person Then API: I check that POST call body is "OK" And API: I check that POST call status code is 200 @@ -33,9 +33,9 @@ Feature: Case Classification functionality Then I open last edited case by API via URL navigation And For the current Case the Case Classification value should be "Suspect case" And I navigate to symptoms tab - When From Symptoms Tab I click on Clear All button + When I click on Clear all button From Symptoms tab And I click on save button from Edit Case page - Then From Symptoms Tab I click on Case tab + Then I click on Case tab from Symptoms tab directory And From Case page I click on Calculate Case Classification button And I click on save button from Edit Case page Then For the current Case the Case Classification value should be "Not yet classified" \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseCommunity.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseCommunity.feature new file mode 100644 index 00000000000..6abf7cfb381 --- /dev/null +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseCommunity.feature @@ -0,0 +1,38 @@ +@UI @Sanity @Case @CaseCommunities +Feature: Case communities end to end tests + +@issue=SORDEV-8050 @env_main +Scenario: Test A user viewing a case containing e.g. an archived region has no indication about the fact the region was archived + Given I log in as a Admin User + Then I click on the Configuration button from navbar + Then I click on Communities button in Configuration tab + And I click on New Entry button in Communities tab in Configuration + Then I fill new community with specific data + And I click on the Cases button from navbar + And I click on the NEW CASE button + Then I create new case with created community + And I check if created case with specific community is created correctly + Then I click on the Configuration button from navbar + And I click on Communities button in Configuration tab + And I filter by last created community + Then I click on edit button for filtered community + Then I archive chosen community + And I click on the Cases button from navbar + Then I filter last created Case by external ID + Then I click on the first Case ID from Case Directory + And I check if community chosen in case is changed to inactive + Then I clear Community from Responsible Community in Case Edit Tab + When I click on save case button + Then I check if archived community is unavailable in Case Edit Tab + Then I click on the Configuration button from navbar + And I click on Communities button in Configuration tab + And I filter Communities by Archived communities + And I filter by last created community + Then I click on edit button for filtered community + Then I de-archive chosen community + And I click on the Cases button from navbar + Then I filter last created Case by external ID + Then I click on the first Case ID from Case Directory + And I set last created community in Responsible Community in Case Edit tab + When I click on save case button + And I check if created case with specific community is created correctly \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseFilters.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseFilters.feature index 4182ec15aeb..28349995ef3 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseFilters.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseFilters.feature @@ -218,8 +218,7 @@ Feature: Case filter functionality And I apply "Archived cases" to combobox on Case Directory Page And I check that number of displayed cases results is 0 - #todo requires more checks,the failure from jenkins cannot be reproduced - @issue=SORQA-30 @env_main @ignore + @issue=SORQA-30 @env_main Scenario: Check Case report date filters on Case directory page Given API: I create a new person Then API: I check that POST call body is "OK" @@ -241,7 +240,7 @@ Feature: Case filter functionality And I check that number of displayed cases results is 0 And I fill Cases from input to 1 days before mocked Case created on Case directory page - @issue=SORQA-30 @env_main @check + @issue=SORQA-30 @env_main Scenario: Check complex filters regarding responsibilities, vaccination, reinfection adn quarantine Given API: I create a new person Then API: I check that POST call body is "OK" @@ -390,7 +389,7 @@ Feature: Case filter functionality And I check that number of displayed cases results is 0 And I click "Nur Einreisefälle ohne zugewiesene Einrichtung" checkbox on Case directory page - @issue=SORQA-83 @env_de @ignore + @issue=SORQA-83 @env_de Scenario: Check Case report date filters on Case directory page for De specific Given I log in with National User And I click on the Cases button from navbar diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseHospitalization.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseHospitalization.feature index 90d295c579f..17aa3b2d147 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseHospitalization.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseHospitalization.feature @@ -15,4 +15,34 @@ Feature: Case hospitalization tab e2e test cases And I navigate to hospitalization tab for case created via api Then I check the edited and saved data is correctly displayed on Hospitalization tab page When I add a previous hospitalization and save - Then I check the edited and saved data is correctly displayed in previous hospitalization window \ No newline at end of file + Then I check the edited and saved data is correctly displayed in previous hospitalization window + + @issue=SORDEV-8414 @env_main + Scenario: Hospitalization refinements with changed place of stay from home to facility + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data + Then I check the created data is correctly displayed on Edit case page + Then I click on Facility as place of stay in Case Edit tab + And In Case Edit tab I set Facility as a Standard Einrichtung + And I click only on save button from Edit Case page + Then I check if Current Hospitalization popup is displayed + And I set Patient Admitted at the facility as an inpatient as YES + Then I click on Save and open hospitalization in current hospitalization popup + + @issue=SORDEV-8414 @env_main + Scenario: Hospitalization refinements + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data + Then I check the created data is correctly displayed on Edit case page + And I navigate to Hospitalization tab in Cases + When I set Patient Admitted at the facility as an inpatient as YES + Then I save data in Hospitalization + Then I check if Place of stay in hospital popup is displayed + And I choose Facility in Place of stay in hospital popup in Case Hospitalization as Standard Einrichtung + Then I save the data in Place of stay in hospital popup + Then From hospitalization tab I click on the Case tab button + And I check if place of stay data was updated in the Case edit tab with Standard Einrichtung \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseImportExport.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseImportExport.feature index 98679e9b0a0..7892559b7c1 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseImportExport.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseImportExport.feature @@ -19,4 +19,19 @@ Feature: Case import and export tests And I select specific data to export in Export Configuration When I download created custom case export file And I delete created custom case export file - Then I check if downloaded data generated by custom case option is correct \ No newline at end of file + Then I check if downloaded data generated by custom case option is correct + + @issue=SORDEV-10040 @env_main + Scenario: Case basic export test + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Cases button from navbar + Then I filter by CaseID on Case directory page + And I click on the Export case button + Then I click on the Basic Case Export button + Then I check if downloaded data generated by basic case option is correct \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseReinfection.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseReinfection.feature new file mode 100644 index 00000000000..bf5f61175f5 --- /dev/null +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/CaseReinfection.feature @@ -0,0 +1,76 @@ +@UI @Sanity @Case @Reinfection +Feature: Case reinfection end to end tests + +@issue=SORDEV-9153 @env_de +Scenario: Test Add reinfection details and status to cases + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data for DE version with saved person details + Then I check the created data is correctly displayed on Edit case page for DE version for reinfection + Then I choose JA option in reinfection + And I check if reinfection checkboxes for DE version are displayed correctly + Then I click on save case button + And I click on the Cases button from navbar + And I click on the NEW CASE button + Then I create a new case with specific data for DE version with saved person details with earlier report date + Then I choose select a matching person in pick or create popup for DE case version + Then I click on save button in the case popup + And I choose create a new case for the same person for DE version + Then I click on save button in the case popup + Then I check the created data is correctly displayed on Edit case page for DE version for reinfection + And I click on the Cases button from navbar + And I search first created case with reinfection + Then I click on the first Case ID from Case Directory + And I check data from the eye icon in reinfection section in Edit case for DE version + Then I check all checkboxes with genome sequence in reinfection section in Edit case for DE version + And I check if reinfection status is set to Sichere/Bestätigte Reinfektion for DE version + Then I click on save case button + Then I back to Case Directory using case list button + Then I reset filter from Case Directory + Then I filter by reinfection status as a Sichere/Bestätigte Reinfektion + And I check if created case with reinfection status is displayed in the Case table for DE version + Then I reset filter from Case Directory + And I search first created case with reinfection + Then I click on the first Case ID from Case Directory + Then I clear all checkboxes with genome sequence in reinfection section in Edit case for DE version + Then I set checkboxes from Combination1 from the test scenario for reinfection in Edit case for DE version + And I check if reinfection status is set to Wahrscheinliche Reinfektion for DE version + Then I click on save case button + Then I back to Case Directory using case list button + Then I reset filter from Case Directory + Then I filter by reinfection status as a Wahrscheinliche Reinfektion + And I check if created case with reinfection status is displayed in the Case table for DE version + Then I reset filter from Case Directory + And I search first created case with reinfection + Then I click on the first Case ID from Case Directory + Then I clear all checkboxes for Combination1 from the test scenario for reinfection in Edit case for DE version + Then I set checkboxes from Combination2 from the test scenario for reinfection in Edit case for DE version + And I check if reinfection status is set to Wahrscheinliche Reinfektion for DE version + Then I click on save case button + Then I back to Case Directory using case list button + Then I reset filter from Case Directory + Then I filter by reinfection status as a Wahrscheinliche Reinfektion + And I check if created case with reinfection status is displayed in the Case table for DE version + Then I reset filter from Case Directory + And I search first created case with reinfection + Then I click on the first Case ID from Case Directory + Then I clear all checkboxes for Combination2 from the test scenario for reinfection in Edit case for DE version + Then I set checkboxes from Combination3 from the test scenario for reinfection in Edit case for DE version + And I check if reinfection status is set to Mögliche Reinfektion for DE version + Then I click on save case button + Then I back to Case Directory using case list button + Then I reset filter from Case Directory + Then I filter by reinfection status as a Mögliche Reinfektion + And I check if created case with reinfection status is displayed in the Case table for DE version + Then I reset filter from Case Directory + And I search first created case with reinfection + Then I click on the first Case ID from Case Directory + Then I clear all checkboxes for Combination3 from the test scenario for reinfection in Edit case for DE version + Then I set checkboxes from Combination4 from the test scenario for reinfection in Edit case for DE version + And I check if reinfection status is set to Mögliche Reinfektion for DE version + Then I click on save case button + Then I back to Case Directory using case list button + Then I reset filter from Case Directory + Then I filter by reinfection status as a Mögliche Reinfektion + And I check if created case with reinfection status is displayed in the Case table for DE version \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/ContactImportExport.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/ContactImportExport.feature new file mode 100644 index 00000000000..0a9aeabad04 --- /dev/null +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/ContactImportExport.feature @@ -0,0 +1,37 @@ +@UI @Sanity @Contact @ContactImportExport +Feature: Contact import and export tests + + @issue=SORDEV-10043 @env_main + Scenario: Contact basic export test + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Contacts button from navbar + Then I filter by Contact uuid + And I click on the Export contact button + Then I click on the Basic Contact Export button + Then I check if downloaded data generated by basic contact option is correct + + @issue=SORDEV-10046 @env_main + Scenario: Contact custom export test + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Contacts button from navbar + Then I filter by Contact uuid + And I click on the Export contact button + Then I click on the Custom Contact Export button + And I click on the New Export Configuration button in Custom Contact Export popup + Then I fill Configuration Name field with "Test Configuration" in Custom Contact Export popup + And I select specific data to export in Export Configuration for Custom Contact Export + When I download created custom contact export file + And I delete created custom contact export file + Then I check if downloaded data generated by custom contact option is correct diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Contacts.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Contacts.feature index d3a5b7f0847..02909f0750c 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Contacts.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Contacts.feature @@ -43,15 +43,26 @@ Feature: Contacts end to end tests @issue=SORDEV-5476 @env_main Scenario: Add a task from contact and verify the fields - Given I log in with National User + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then I log in with National User And I click on the Contacts button from navbar And I click on the NEW CONTACT button And I fill a new contact form And I click on SAVE new contact button + And I click on the CHOOSE SOURCE CASE button from CONTACT page + And I click yes on the DISCARD UNSAVED CHANGES popup from CONTACT page + And I search for the last case uuid created via Api in the CHOOSE SOURCE Contact window + And I open the first found result in the CHOOSE SOURCE window + Then I click SAVE button on Edit Contact Page And I click on the Tasks button from navbar Then I search created task by Contact first and last name And I open the last created UI Contact - Then I check the created data is correctly displayed on Edit Contact page + Then I check the created data is correctly displayed on Edit Contact page related with CHOSEN SOURCE CASE @env_main Scenario: Source case selected for contact @@ -152,7 +163,7 @@ Feature: Contacts end to end tests And I open Follow up Visits tab from contact directory Then I am validating the From and To dates displayed - @issue=SORDEV-5490 @env_main @ignore + @issue=SORDEV-5490 @env_main Scenario: Create a contact and create a case for contact person Given I log in with National User When I click on the Contacts button from navbar @@ -354,4 +365,128 @@ Feature: Contacts end to end tests And I select Travel option in Type of activity from Combobox in Exposure form Then I fill Location form for Type of place by chosen "FACILITY" options in Exposure for Epidemiological data And I click on save button in Exposure for Epidemiological data tab in Contacts - And I click on save button from Epidemiological Data \ No newline at end of file + And I click on save button from Epidemiological Data + + @env_main @#7768 + Scenario: Create new contact using line listing and select source case + Given API: I create a new person + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then I log in with National User + When I click on the Contacts button from navbar + Then I click on Line Listing button + Then I click Choose Case button from Contact Directory Line Listing popup window + And I search for the last case uuid in the CHOOSE SOURCE popup of Create Contact window + And I open the first found result in the CHOOSE SOURCE popup of Create Contact window + And I create a new Contact with specific data through Line Listing when disease prefilled + And I save the new contact using line listing feature + Then I check that contact created from Line Listing is saved and displayed in results grid + + @env_main @#7769 + Scenario: Create a new Contact via Line Listing and validate that the selected Source Case data is correctly displayed + Given API: I create a new person + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then I log in with National User + When I click on the Contacts button from navbar + Then I click on Line Listing button + Then I click Choose Case button from Contact Directory Line Listing popup window + And I search for the last case uuid in the CHOOSE SOURCE popup of Create Contact window + And I open the first found result in the CHOOSE SOURCE popup of Create Contact window + Then I check the name and uuid of selected case information is correctly displayed in new Contact Line Listing popup window + Then I check disease dropdown is automatically filled with disease of selected Case in new Contact Line Listing popup window + + @issue=SORDEV-9124 @env_main + Scenario: Document Templates create quarantine order in Contacts + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + When I click on the Contacts button from navbar + Then I navigate to the last created contact via the url + Then I click on Create button in Document Templates box in Edit Contact directory + And I click on checkbox to upload generated document to entity in Create Quarantine Order form in Edit Contact directory + And I select "ExampleDocumentTemplateContacts.docx" Quarantine Order in Create Quarantine Order form in Edit Contact directory + And I click on Create button in Create Quarantine Order form + Then I navigate to the last created contact via the url + And I check if downloaded file is correct for "ExampleDocumentTemplateContacts.docx" Quarantine Order in Edit Contact directory + And I check if generated document based on "ExampleDocumentTemplateContacts.docx" appeared in Documents tab in Edit Contact directory + And I delete downloaded file created from "ExampleDocumentTemplateContacts.docx" Document Template for Contact + + @issue=SORDEV-9124 @env_main + Scenario: Document Templates create quarantine order for Contact bulk + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Contacts button from navbar + And I click on the NEW CONTACT button + When I fill a new contact form + And I click on SAVE new contact button + Then I check the created data is correctly displayed on Edit Contact page + And I click on the Contacts button from navbar + And I click on the More button on Contact directory page + And I click Enter Bulk Edit Mode on Contact directory page + And I select last created UI result in grid in Contact Directory for Bulk Action + And I select last created API result in grid in Contact Directory for Bulk Action + And I click on Bulk Actions combobox on Contact Directory Page + And I click on Create Quarantine Order from Bulk Actions combobox on Contact Directory Page + And I click on checkbox to upload generated document to entities in Create Quarantine Order form in Contact directory + And I select "ExampleDocumentTemplateContacts.docx" Quarantine Order in Create Quarantine Order form in Edit Contact directory + And I click on Create button in Create Quarantine Order form + And I click on close button in Create Quarantine Order form + And I check if downloaded zip file for Quarantine Order is correct + And I click on the More button on Contact directory page + Then I click Leave Bulk Edit Mode on Contact directory page + Then I navigate to the last created UI contact via the url + And I check if generated document based on "ExampleDocumentTemplateContacts.docx" appeared in Documents tab for UI created contact in Edit Contact directory + And I navigate to the last created contact via the url + And I check if generated document based on "ExampleDocumentTemplateContacts.docx" appeared in Documents tab in Edit Contact directory + And I delete downloaded file created from Quarantine order + + @issue=SORDEV-8048 @env_de + Scenario: Test Default value for disease if only one is used by the server for Contacts + Given I log in with National User + When I click on the Contacts button from navbar + Then I click on the NEW CONTACT button + And I check if default disease value is set for COVID-19 + Then I click on the Contacts button from navbar + Then I click on Line Listing button + And I check if default disease value for contacts in the Line listing is set for COVID-19 + + @issue=SORDEV-9477 @env_main + Scenario: Add a person search option on creation forms + Then API: I create a new person + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And I log in with National User + Then I click on the Contacts button from navbar + And I click on the NEW CONTACT button + And I fill a new contact form with chosen data without personal data on Contact directory page + And I click on the person search button in create new contact form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + And I click on the clear button in new contact form + And I click on the person search button in create new contact form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + And I click on SAVE new contact button + Then I check the created data for existing person is correctly displayed on Edit Contact page + When I click on the Persons button from navbar + And I open the last created Person via API + And I check that SEE CONTACTS FOR THIS PERSON button appears on Edit Person page \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Dashboard.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Dashboard.feature index 0d96ec48f09..7ce139e4b0d 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Dashboard.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Dashboard.feature @@ -31,3 +31,109 @@ Feature: Dashboard counters Then API: I check that POST call status code is 200 When I click on the Dashboard button from navbar and access Contacts Dashboard Then I check that previous saved Contacts Dashboard contact counter for COVID-19 has been incremented + + @env_main @#7440 + Scenario: Validate Surveillance Dashboard layout + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I validate contacts button is clickable on Surveillance Dashboard Page + Then I validate filter components presence on Surveillance Dashboard Page + Then I validate presence of diseases metrics on Surveillance Dashboard Page + Then I validate presence of diseases slider on Surveillance Dashboard Page + Then I validate presence of Epidemiological Curve on Surveillance Dashboard Page + Then I validate presence of maps on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Validate show all diseases functionality + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I validate show all diseases button is available and clickable on Surveillance Dashboard Page + When I validate only 6 disease categories are displayed on Surveillance Dashboard Page + Then I click on show all diseases on Surveillance Dashboard Page + Then I validate presence of all diseases on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check disease information layout + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I validate name of diseases is shown on Surveillance Dashboard Page + Then I validate total data of diseases is shown on Surveillance Dashboard Page + Then I validate compared data of diseases is shown on Surveillance Dashboard Page + Then I validate last report of diseases is shown on Surveillance Dashboard Page + Then I validate fatalities of diseases is shown on Surveillance Dashboard Page + Then I validate number of events of diseases is shown on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check disease burden information table + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I switch to burden information table on Surveillance Dashboard Page + Then I validate that all the headers are present in the burden information table on Surveillance Dashboard Page + Then I validate diseases presence in the data table on Surveillance Dashboard Page + Then I validate switching back to disease boxes is working on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check New Cases and Events layout on surveillance dashboard + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I validate all diseases are displayed in the carousel slider options on Surveillance Dashboard Page + Then I validate counter is present on Surveillance Dashboard Page + Then I validate presence of left statistics charts on Surveillance Dashboard Page + Then I validate presence of cases metrics on Surveillance Dashboard Page + Then I validate presence of fatalities counter on Surveillance Dashboard Page + Then I validate presence of events counter on Surveillance Dashboard Page + Then I validate presence of events metrics on Surveillance Dashboard Page + Then I validate presence of test results counter on Surveillance Dashboard Page + Then I validate presence of test results metrics on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check Epidemiological curve chart Alive or Dead option + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I click on legend case status on Surveillance Dashboard Page + Then I check case status chart on Surveillance Dashboard Page + Then I click on legend alive or dead on Surveillance Dashboard Page + Then I check alive or dead chart on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check Epidemiological curve layout + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I validate presence of legend data on Surveillance Dashboard Page + Then I validate presence of chart on Surveillance Dashboard Page + Then I validate presence of chart download button on Surveillance Dashboard Page + Then I validate chart download options on Surveillance Dashboard Page + Then I validate presence of chart buttons on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check Case status map + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I validate presence of maps on Surveillance Dashboard Page + Then I validate presence of map options on Surveillance Dashboard Page + Then I validate presence of Map key options on Surveillance Dashboard Page + Then I validate presence of Layers options on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Check components expand-collapse functionality + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I expand Epidemiological curve on Surveillance Dashboard Page + Then I verify that only epi curve chart is displayed on Surveillance Dashboard Page + Then I expand Case status map on Surveillance Dashboard Page + Then I verify only Case status map is displayed on Surveillance Dashboard Page + Then I select Difference in Number of Cases hide overview on Surveillance Dashboard Page + Then I verify that Overview data is hidden on Surveillance Dashboard Page + + @env_main @#7440 + Scenario: Overview data apply filters check + Given I log in with National User + When I click on the Dashboard button from navbar and access Surveillance Dashboard + Then I apply filter compare: today -> yesterday on Surveillance Dashboard Page + Then I verify filter works on Surveillance Dashboard Page + Then I apply date filter on Surveillance Dashboard Page + Then I verify filter works on Surveillance Dashboard Page + Then I apply region filter on Surveillance Dashboard Page + Then I verify filter works on Surveillance Dashboard Page + Then I click on reset filters on Surveillance Dashboard Page + Then I verify that filters were reset on Surveillance Dashboard Page \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/EpidemiologicalDataCase.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/EpidemiologicalDataCase.feature index d51dd8a4312..af8d2c9175d 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/EpidemiologicalDataCase.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/EpidemiologicalDataCase.feature @@ -22,7 +22,7 @@ Feature: Epidemiological data coverage Then I am checking all Activity data is saved and displayed #TODO to be investigated if is defect - @issue=SORDEV-5522 @env_main @ignore + @issue=SORDEV-5522 @env_main Scenario: Validate all fields are present and functional on Epidemiological page Given API: I create a new person Then API: I check that POST call body is "OK" @@ -57,6 +57,209 @@ Feature: Epidemiological data coverage And I open saved activity from Epidemiological Data Then I am checking all Activity data is saved and displayed + @issue=SORDEV-5523 @env_main + Scenario: Enter an exposure data in Case Directory + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in with National User + And I click on the Cases button from navbar + When I am accessing via URL the Epidemiological data tab of the created case + And I click on Exposure details known with NO option + And I click on Exposure details known with UNKNOWN option + Then I create a new Exposure for Epidemiological data tab and fill all the data + And I click on edit Exposure vision button + And I select from Combobox all options in Type of activity field in Exposure for Epidemiological data tab for Cases + Then I select a Type of activity Other option in Exposure for Epidemiological data tab in Cases + And I fill a Type of activity details field in Exposure for Epidemiological data tab in Cases + Then I select a Type of activity Gathering option in Exposure for Epidemiological data tab in Cases + And I select from Combobox all Type of gathering in Exposure for Epidemiological data tab in Cases + And I select a type of gathering Other option from Combobox in Exposure for Epidemiological data tab in Cases + And I fill a type of gathering details in Exposure for Epidemiological data tab in Cases + Then I fill Location form for Type of place by chosen "HOME" options in Exposure for Epidemiological data + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on edit Exposure vision button + And I select Work option in Type of activity from Combobox in Exposure form + Then I fill Location form for Type of place by chosen "OTHER" options in Exposure for Epidemiological data + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on save button from Epidemiological Data + And I click on edit Exposure vision button + And I select Travel option in Type of activity from Combobox in Exposure form + Then I fill Location form for Type of place by chosen "FACILITY" options in Exposure for Epidemiological data + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on save button from Epidemiological Data + Then I click on Contacts with source case known with UNKNOWN option + And I click on Contacts with source case known with NO option + And I click on Contacts with source case known with YES option + And I click on save button from Epidemiological Data + And I check if Contacts of Source filed is available + And I click on the NEW CONTACT button in in Exposure for Epidemiological data tab in Cases + And I click on the CHOOSE CASE button in Create new contact form in Exposure for Epidemiological data tab in Cases + And I search and chose the last case uuid created via API in the CHOOSE CASE Contact window + And I click on SAVE button in create contact form + @issue=SORDEV-5523 @env_de + Scenario: Enter an exposure data in Case Directory for DE version + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data for DE version + And I check case created from created contact is correctly displayed on Edit Case page for DE + And I navigate to case person tab + And I navigate to epidemiological data tab in Edit case page + And I click on Exposure details known with NEIN option + And I click on Exposure details known with UNBEKANNT option + And I click on Exposure details known with JA option + Then I click on New Entry in Exposure Details Known in Cases directory + And I tick a Probable infection environmental box in Exposure for Epidemiological data tab in Cases + And I select from Combobox all options in Type of activity field in Exposure for Epidemiological data tab for Cases for DE version + Then I select a Type of activity Sonstiges option in Exposure for Epidemiological data tab in Cases + And I fill a Type of activity details field in Exposure for Epidemiological data tab in Cases + Then I select a Type of activity Versammlung option in Exposure for Epidemiological data tab in Cases + And I select from Combobox all Type of gathering in Exposure for Epidemiological data tab in Cases for DE version + And I select a type of gathering Sonstiges option from Combobox in Exposure for Epidemiological data tab in Cases + And I fill a type of gathering details in Exposure for Epidemiological data tab in Cases + And I fill Location form for Type of place field by "Unbekannt" options in Case directory for DE version + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on edit Exposure vision button + And I select Arbeit option in Type of activity from Combobox in Exposure form + And I fill Location form for Type of place field by "Sonstiges" options in Case directory for DE version + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on edit Exposure vision button + And I select Arbeit option in Type of activity from Combobox in Exposure form + And I fill Location form for Type of place field by "Transportmittel" options in Case directory for DE version + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on edit Exposure vision button + And I select Arbeit option in Type of activity from Combobox in Exposure form + And I fill Location form for Type of place field by "Einrichtung" options in Case directory for DE version + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Exposure are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + Then I click on New Entry in Exposure Details Known in Cases directory + And I tick a Probable infection environmental box in Exposure for Epidemiological data tab in Cases + Then I select a Type of activity Arbeit option in Exposure for Epidemiological data tab in Cases + And I click on save button in Exposure for Epidemiological data tab in Cases + And I click on "NO" option to close Exposure as the probable infection environment case Popup + Then I click on Contacts with source case known with NEIN option for DE + And I click on Contacts with source case known with UNBEKANNT option for DE + And I click on Contacts with source case known with JA option for DE + And I click on save button from Epidemiological Data + And I check if Contacts of Source filed is available + And I click on the NEW CONTACT button in in Exposure for Epidemiological data tab in Cases + And I click on the CHOOSE CASE button in Create new contact form in Exposure for Epidemiological data tab in Cases + And I search and chose the last case uuid created via UI in the CHOOSE CASE Contact window + And I click on SAVE button in create contact form + @issue=SORDEV-5525 @env_de + Scenario: Enter an activity as case in Epidemiological data tab in Cases for DE version + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data for DE version + And I check case created from created contact is correctly displayed on Edit Case page for DE + And I navigate to case person tab + And I navigate to epidemiological data tab in Edit case page + Then I click on Activity details known with UNBEKANNT option + And I click on Activity details known with NEIN option + And I click on Activity details known with JA option + And I click on new entry button from Epidemiological Data tab + And I set Start and End of activity by current date in Activity as Case form for DE version + And I fill Description field in Activity as Case form + And I select Unbekannt option in Type of activity from Combobox in Activity as Case form + And I fill Location form for Type of place field by "Einrichtung (§ 23 IfSG)" options in Case as Activity directory for DE version + And I click on save button in Exposure for Epidemiological data tab in Cases + And I check if created Activity as Case appears in a grid for Epidemiological data tab in Cases + @issue=SORDEV-5839 @env_main + Scenario: Make facility selection on LocationForm more intuitive + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in with National User + And I click on the Cases button from navbar + When I am accessing via URL the Epidemiological data tab of the created case + Then I create a new Exposure for Epidemiological data + And I set Type of place as a Facility in a new Exposure for Epidemiological data + Then I set Facility Category as a Medical facility in a new Exposure for Epidemiological data + Then I set Facility Type as a Hospital in a new Exposure for Epidemiological data + And I check if Facility field has blue exclamation mark and displays correct message + + @issue=SORDEV-5977 @env_main + Scenario: Improve exposure table display + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in with National User + And I click on the Cases button from navbar + When I am accessing via URL the Epidemiological data tab of the created case + Then I create a new Exposure for Epidemiological data tab and fill all the data + And I click on save button from Epidemiological Data + When I am accessing via URL the Epidemiological data tab of the created case + And I am checking all Exposure data is saved and displayed + Then I check if data is correctly displayed in Exposures table in Epidemiological data tab + + + @issue=SORDEV-5524 @env_main + Scenario: Enter an activity as case in Epidemiological data tab in Cases + When API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in with National User + And I click on the Cases button from navbar + When I am accessing via URL the Epidemiological data tab of the created case + Then I click on Activity details known with UNKNOWN option + And I click on Activity details known with NO option + And I click on Activity details known with YES option + And I click on new entry button from Epidemiological Data tab + And I set Start and End of activity by current date in Activity as Case form + And I fill Description field in Activity as Case form + And I select from Combobox all options in Type of activity field in Activity as Case for Epidemiological data tab for Cases + And I fill Location form for Type of place field by "Facility (§ 23 IfSG)" options in Case as Activity directory + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Activity as Case are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + Then I click on edit Activity as Case vision button + And I fill Location form for Type of place field by "Community facility (§ 33 IfSG)" options in Case as Activity directory + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Activity as Case are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + Then I click on edit Activity as Case vision button + And I fill Location form for Type of place field by "Facility (§ 36 IfSG)" options in Case as Activity directory + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Activity as Case are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + Then I click on edit Activity as Case vision button + And I fill Location form for Type of place field by "Other" options in Case as Activity directory + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Activity as Case are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + Then I click on edit Activity as Case vision button + And I fill Location form for Type of place field by "Unknown" options in Case as Activity directory + And I click on save button in Exposure for Epidemiological data tab in Cases + And I am checking all Location data in Activity as Case are saved and displayed + And I click on save button in Exposure for Epidemiological data tab in Cases + And I check that edit Activity as Case vision button is visible and clickable \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Event.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Event.feature index c31d9243232..1cbd39974ae 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Event.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Event.feature @@ -129,7 +129,7 @@ Feature: Create events Then I open the last created event via api And I check that number of actions in Edit Event Tab is 1 - @env_main @ignore + @env_main Scenario: Add a New action for an Event and verify the Action in EventActions table Given API: I create a new event Then API: I check that POST call body is "OK" @@ -144,12 +144,12 @@ Feature: Create events And I collect the event actions from table view And I am checking if all the fields are correctly displayed in the Event directory Actions table - @issue=SORDEV-5476 @env_main @ignore + @issue=SORDEV-5476 @env_main Scenario: Add a Task from event and verify the fields Given API: I create a new event Then API: I check that POST call body is "OK" And API: I check that POST call status code is 200 - Given I log in with National User + Given I log in as a National User When I am accessing the event tab using the created event via api Then I click on New Task from event tab And I create a new task with specific data for an event @@ -179,7 +179,7 @@ Feature: Create events When I create and download an event document from template And I verify that the event document is downloaded and correctly named - @issue=SORDEV-5491 @env_main @ignore + @issue=SORDEV-5491 @env_main Scenario: Add a participant to an event and create case Given I log in with National User And I click on the Events button from navbar @@ -270,6 +270,8 @@ Feature: Create events And I click on Edit event group button from event groups box And I click on Edit event button for the first event in Events section And I click on the Navigate to event directory filtered on this event group + And I fill Event Group Id filter to one assigned to created event on Event Directory Page + And I apply on the APPLY FILTERS button from Event And I check the number of displayed Event results from All button is 1 @issue=SORDEV-5572 @env_main @@ -453,4 +455,130 @@ Feature: Create events Then I check if downloaded data generated by custom event option is correct Then I delete exported file from Event Participant Directory + @issue=SORDEV-10359 @env_main + Scenario: Test Access to the event directory filtered on the events of a group + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in with National User + When I am accessing the event tab using the created event via api + And I click on link event group + And I create a new event group + When I am accessing the event tab using the created event via api + Then I am checking event group name and id is correctly displayed + And I click on the Events button from navbar + And I click on GROUPS Radiobutton on Event Directory Page + Then I search last created groups Event by "GROUP_ID" option filter in Event Group Directory + And I apply on the APPLY FILTERS button from Event + And I open the first event group from events list group + Then I click on Edit event group button from event groups box + And I click on the Navigate to event directory filtered on this event group + And I check the if Event is displayed correctly in Events Directory table + @issue=SORDEV-7461 @env_main + Scenario: Testing bulk edit of Events + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Events button from navbar + And I click on the NEW EVENT button + When I create a new event with specific data + And I click on the Events button from navbar + And I search for specific event in event directory + And I click on the searched event + Then I check the created data is correctly displayed in event edit page + And I click on the Events button from navbar + Then I click on the RESET FILTERS button from Event + And I click on the More button on Event directory page + And I click Enter Bulk Edit Mode on Event directory page + And I select last created UI result in grid in Event Directory for Bulk Action + And I select last created API result in grid in Event Directory for Bulk Action + And I click on Bulk Actions combobox on Event Directory Page + And I click on Edit Events from Bulk Actions combobox on Event Directory Page + Then I click to bulk change event managements status for selected events + And I click on SAVE button in Link Event to group form + And I navigate to the last created through API Event page via URL + Then I check if Event Management Status is set to "PENDING" + And I navigate to the last created Event page via URL + Then I check if Event Management Status is set to "PENDING" + + @issue=SORDEV-5967 @env_de + Scenario: Add evidence fields for event clusters + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in with National User + And I click on the Events button from navbar + Then I open the last created event via api + And I check CLUSTER option on edit Event page + And I select "Hauptsächlich von Mensch zu Mensch" option from Primary Mode Of Transmission Combobox on edit Event page + And I click on Epidemiological evidence with UNBEKANNT option + And I click on Epidemiological evidence with NEIN option + And I click on Epidemiological evidence with JA option + And I tick the all options for Study on Epidemiological evidence for De version + Then I check that all options for Study on Epidemiological evidence appears and there are checked for De version + And I tick the all options for Explorative survey of affected people on Epidemiological evidence for De version + Then I check the all options for Explorative survey of affected people on Epidemiological evidence appears and there are checked for De version + And I tick the all options for Descriptive analysis of ascertained data on Epidemiological evidence for De version + Then I check the all options for Descriptive analysis of ascertained data on Epidemiological evidence appears and there are checked for De version + And I tick the all options for Suspicion on Epidemiological evidence for De version + Then I check the all options for Suspicion on Epidemiological evidence are visible and clickable for De version + Then I click on Laboratory diagnostic evidence with UNBEKANNT option + And I click on Laboratory diagnostic evidence with NEIN option + And I click on Laboratory diagnostic evidence with JA option + And I tick the all options for Verification of at least two infected or diseased persons on Laboratory diagnostic evidence for De version + Then I check the all options for Verification of at least two infected or diseased persons on Laboratory diagnostic evidence appears and there are checked for De version + And I tick the all options for Verification on materials on Laboratory diagnostic evidence for De version + Then I check the all options for Verification on materials on Laboratory diagnostic evidence appears and there are checked for De version + And I click on SAVE button in edit event form + + @issue=SORDEV-8048 @env_de + Scenario: Test Default value for disease if only one is used by the server for Events and Pathogen test + Given I log in with National User + Then I click on the Events button from navbar + When I click on the NEW EVENT button + Then I check if default disease value is set for COVID-19 + Then I click on the NEW EVENT button + When I create a new event with specific data for DE version + And I click on the Events button from navbar + And I search for specific event in event directory + And I click on the searched event + Then I check the created data for DE version is correctly displayed in event edit page + Then I click on the Sample button from navbar + When I open created Sample + Then I click on the new pathogen test from the Edit Sample page for DE version + And I check if default disease value for new Pathogen test is set for COVID-19 + + @issue=SORDEV-9477 @env_main + Scenario: Add a person search option on creation forms + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new person + And API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Then API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And I log in with National User + And I click on the Events button from navbar + Then I open the last created event via api + And I navigate to Event Participants tab in Edit case page + And I add participant responsible region and responsible district only + And I click on the person search button in add new event participant form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + And I click on the clear button in new add new event participant form + And I click on the person search button in add new event participant form + And I search for the last created person via Api by uuid in popup on Select Person window + And I open the first found result in the popup of Select Person window + And I save changes in participant window + And I confirm navigation popup + And I navigate to EVENT PARTICIPANT from edit event page + And I confirm navigation popup + Then I click on Apply filters button in event participant list + Then I check if filtered participant for existing person appears in the event participants list + When I click on the Persons button from navbar + And I open the last created Person via API + And I check that SEE EVENTS FOR THIS PERSON button appears on Edit Person page \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/EventFilters.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/EventFilters.feature index c87f5f5a3a8..fab0130eb08 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/EventFilters.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/EventFilters.feature @@ -43,6 +43,45 @@ Feature: Event Directory filters check And I check the number of displayed Event results from All button is 0 And I click on the RESET FILTERS button from Event + @issue=SORDEV-5917 @env_de + Scenario: Check all filters are working properly in Event directory for DE version + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + When I log in with National User + And I click on the Events button from navbar + Then I select a German Risk level filter based on the event created with API + And I fill EVENT ID filter by API + And I apply on the APPLY FILTERS button from Event + And I check that number of displayed Event results is 1 + Then I select random German risk level value different than risk level value of last created via API Event in Event Directory + And I apply on the APPLY FILTERS button from Event + And I check that number of displayed Event results is 0 + And I click on the RESET FILTERS button from Event + Then I select random Disease filter among the filter options from API + And I fill EVENT ID filter by API + And I apply on the APPLY FILTERS button from Event + And I check that number of displayed Event results is 1 + And I click on the RESET FILTERS button from Event + Then I click on Show more filters in Events + Then I select German Source Type based on the event created with API + And I fill EVENT ID filter by API + And I apply on the APPLY FILTERS button from Event + And I check that number of displayed Event results is 1 + Then I select German source Type filter value different than the source type value of the last created via API case in Event Directory + And I apply on the APPLY FILTERS button from Event + And I check the number of displayed Event results from All button is 0 + And I click on the RESET FILTERS button from Event + Then I click on Show more filters in Events + Then I select German Type of Place field based on the event created with API + And I fill EVENT ID filter by API + And I apply on the APPLY FILTERS button from Event + And I check that number of displayed Event results is 1 + Then I select German type of place filter value different than the type of place value of the last created via API case in Event Directory + And I apply on the APPLY FILTERS button from Event + And I check the number of displayed Event results from All button is 0 + And I click on the RESET FILTERS button from Event + @issue=SORQA-77 @env_main Scenario: Filters for Region, District, Community, Reporting user and Event statuses on Event Directory Page Given API: I create a new person @@ -96,7 +135,7 @@ Feature: Event Directory filters check And I apply on the APPLY FILTERS button from Event And I check the number of displayed Event results from All button is 0 - @issue=SORQA-77 @env_main @ignore + @issue=SORQA-77 @env_main Scenario: Date filters and aggregation buttons in Event Directory Given API: I create a new event Then API: I check that POST call body is "OK" diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/EventImportExport.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/EventImportExport.feature new file mode 100644 index 00000000000..c02d5500981 --- /dev/null +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/EventImportExport.feature @@ -0,0 +1,26 @@ +@UI @Sanity @Event @EventImportExport +Feature: Event import and export tests + +@issue=SORQA-131 @env_main +Scenario: Basic event export +Given I log in as a Admin User + Then I click on the Events button from navbar + And I click on the NEW EVENT button + Then I create a new event with specific data + And I click on the Events button from navbar + Then I search for specific event in event directory + When I click on the Export Event button + Then I click on the Basic Event Export button + And I check if downloaded data generated by basic event export option is correct + + @issue=SORQA-130 @env_main + Scenario: Detailed event export + Given I log in as a Admin User + Then I click on the Events button from navbar + And I click on the NEW EVENT button + Then I create a new event with specific data + And I click on the Events button from navbar + Then I search for specific event in event directory + When I click on the Export Event button + Then I click on the Detailed Event Export button + And I check if downloaded data generated by detailed event export option is correct \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Facility.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Facility.feature index 9ac02b69dd3..f590f5a8aaa 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Facility.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Facility.feature @@ -16,4 +16,45 @@ Feature: Facility end to end tests Then I check if csv file for facilities is imported successfully And I close import facilities popup window And I close facilities popup window - Then I check if data from csv is correctly displayed in facilities tab \ No newline at end of file + Then I check if data from csv is correctly displayed in facilities tab + And I delete downloaded csv file for facilities in facility tab + + @issue=SORDEV-9206 @env_main + Scenario: Checking availability of new categories and types of facility in Edit Case and Edit Case Person directories + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I fill new case form with specific data + And I set Place of stay to "FACILITY", Facility Category to "Accommodation" and Facility Type to "Hostel, dormitory" in Case creation + Then I click on save case button + And I check the created data is correctly displayed on Edit case person page + And I set Facility Category to "Accommodation" and Facility Type to "Hostel, dormitory" + And I click on save button to Save Person data in Case Person Tab + And I set Facility Category to "Educational facility" and Facility Type to "Kindergarten/After school care" + And I click on save button to Save Person data in Case Person Tab + + @issue=SORDEV-9206 @env_main + Scenario: Checking availability of new categories and types of facility in Edit Event directory + Given API: I create a new event + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + Then I open the last created event via api + And I set Place of stay to "Facility", Facility Category to "Accommodation" and Facility Type to "Hostel, dormitory" in Edit Event directory + And I click on Save Button in Edit Event directory + And I set Place of stay to "Facility", Facility Category to "Educational facility" and Facility Type to "Kindergarten/After school care" in Edit Event directory + And I click on Save Button in Edit Event directory + + @issue=SORDEV-9206 @env_main + Scenario: Creating new facilities with new data in Configuration directory + Given I log in as a Admin User + Then I click on the Configuration button from navbar + And I click on Facilities button in Configuration tab + And I click on New Entry button in Facilities tab in Configuration + Then I set name, region and district in Facilities tab in Configuration + And I set Facility Category to "Accommodation" and Facility Type to "Hostel, dormitory" in Facilities tab in Configuration + And I click on Save Button in new Facility form + And I click on New Entry button in Facilities tab in Configuration + Then I set name, region and district in Facilities tab in Configuration + And I set Facility Category to "Educational facility" and Facility Type to "Kindergarten/After school care" in Facilities tab in Configuration + And I click on Save Button in new Facility form \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Immunization.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Immunization.feature index 31b4d59790f..2c8f09067ef 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Immunization.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Immunization.feature @@ -1,7 +1,7 @@ @UI @Sanity @Immunization Feature: Immunization end to end tests - @issue=SORDEV-8705 @env_main @check + @issue=SORDEV-8705 @env_main Scenario:Check a new immunization data Given I log in as a Surveillance Officer And I click on the Immunizations button from navbar diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/LineListing.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/LineListing.feature index 5d6424b4181..526c86a6fca 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/LineListing.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/LineListing.feature @@ -1,9 +1,9 @@ @UI @Sanity @Case Feature: Cases using Line Listing feature - @env_main @check + @env_main Scenario: Create cases using Line Listing feature - Given I log in with National User + Given I log in as a National User And I click on the Cases button from navbar Then I click on Case Line Listing button And I create a new case in line listing feature popup @@ -11,15 +11,12 @@ Feature: Cases using Line Listing feature Then I click on the Cases button from navbar And I check that case created from Line Listing is saved and displayed in results grid - @env_main @check + @env_main @ignore Scenario: Create contact using Line Listing feature - Given I log in with National User + Given I log in as a National User When I click on the Contacts button from navbar Then I click on Line Listing button And I create a new Contact with specific data through Line Listing And I save the new contact using line listing feature Then I click on the Contacts button from navbar - And I check that contact created from Line Listing is saved and displayed in results grid - - - + And I check that contact created from Line Listing is saved and displayed in results grid \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Persons.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Persons.feature index c3ba9ca5c6b..7e81da93fbe 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Persons.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Persons.feature @@ -1,7 +1,7 @@ @UI @Sanity @Persons Feature: Edit Persons - @env_main + @env_main @issue=SORQA-110 Scenario: Edit existent person Given I log in with National User When I click on the Contacts button from navbar @@ -139,3 +139,32 @@ Feature: Edit Persons And I click on Edit Immunization button for Immunization created through API from Immunization card on Edit Person page Then I navigate to the last created via api Person page via URL + @issue=SORDEV-8467 @env_main + Scenario: Test for columns in Person directory + Given I log in with National User + And I click on the Persons button from navbar + Then I check that the Person table structure is correct + When I click the header of column 1 in Person directory + Then I check that column 1 is sorted in ascending order + And I check that an upwards arrow appears in the header of column 1 + When I click the header of column 1 in Person directory + And I check that column 1 is sorted in descending order + Then I check that a downwards arrow appears in the header of column 1 + When I click the header of column 2 in Person directory + Then I check that column 2 is sorted in ascending order + And I check that an upwards arrow appears in the header of column 2 + When I click the header of column 2 in Person directory + And I check that column 2 is sorted in descending order + Then I check that a downwards arrow appears in the header of column 2 + When I click the header of column 3 in Person directory + Then I check that column 3 is sorted in ascending order + And I check that an upwards arrow appears in the header of column 3 + When I click the header of column 3 in Person directory + And I check that column 3 is sorted in descending order + Then I check that a downwards arrow appears in the header of column 3 + When I click the header of column 5 in Person directory + Then I check that column 5 is sorted in ascending order + And I check that an upwards arrow appears in the header of column 5 + When I click the header of column 5 in Person directory + And I check that column 5 is sorted in descending order + Then I check that a downwards arrow appears in the header of column 5 diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Sample.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Sample.feature index 97a0e79d7cc..0f59bd1ea95 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Sample.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Sample.feature @@ -1,7 +1,7 @@ @UI @Sanity @Sample Feature: Sample Functionalities - @env_main @check + @env_main Scenario: Edit a new case Sample Given I log in with National User And I click on the Cases button from navbar @@ -110,4 +110,63 @@ Feature: Sample Functionalities Then I open the last created sample via API Then I delete the sample Then I search after the last created Sample via API - And I check that number of displayed sample results is 0 \ No newline at end of file + And I check that number of displayed sample results is 0 + + @issue=SORDEV-10052 @env_main + Scenario: Basic export sample + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new sample + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + When I click on the Sample button from navbar + Then I fill full name of last created via API Person into Sample Directory + And I click on apply filters button from Sample Directory + And I click Export button in Sample Directory + And I click on Basic Export button in Sample Directory + And I check if downloaded data generated by basic export option is correct + Then I delete exported file from Sample Directory + + @issue=SORDEV-10053 @env_main + Scenario: Detailed export sample + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new sample + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + When I click on the Sample button from navbar + Then I fill full name of last created via API Person into Sample Directory + And I click on apply filters button from Sample Directory + And I click Export button in Sample Directory + And I click on Detailed Export button in Sample Directory + And I check if downloaded data generated by detailed export option is correct + Then I delete exported file from Sample Directory + + + @env_main @issue=SORDEV-5493 + Scenario: Add a Additional test from Samples and verify the fields + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new case + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new sample + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + When I log in as a Admin User + And I click on the Sample button from navbar + And I am opening the last created via API Sample by url navigation + Then I click on the new additional test from the Edit Sample page + And I complete all fields from Additional test result popup and save + And I check that the created Additional test is correctly displayed \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/SampleFilters.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/SampleFilters.feature index 71b0661fa08..430b5c91659 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/SampleFilters.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/SampleFilters.feature @@ -15,7 +15,7 @@ Feature: Sample filter functionality When I search for samples created with the API Then I check the displayed Laboratory filter dropdown - @issue=SORDEV-5981 @env_main @check + @issue=SORDEV-5981 @env_main Scenario: Check all filters are work properly in Samples directory Given API: I create a new person Then API: I check that POST call body is "OK" diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/Task.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/Task.feature index e600f361068..27515a4262a 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/Task.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/Task.feature @@ -1,8 +1,7 @@ @UI @Sanity @Task Feature: Tasks functionalities - #please check this test once test-auto has latest development version - @env_main @ignore + @env_main Scenario: Create and check a new task data Given I log in with National User And I click on the Tasks button from navbar @@ -13,7 +12,7 @@ Feature: Tasks functionalities @issue=SORDEV-5476 @env_main Scenario: Check the edit of task from Case - Given I log in as a Surveillance Officer + Given I log in as a National User And I click on the Cases button from navbar And I click on the NEW CASE button When I create a new case with specific data @@ -44,4 +43,85 @@ Feature: Tasks functionalities And I click on the Tasks button from navbar And I search last created task by API using Contact UUID And I collect the task column objects - Then I am checking if all the fields are correctly displayed in the Task Management table \ No newline at end of file + Then I am checking if all the fields are correctly displayed in the Task Management table + + @issue=SORDEV-6080 @env_main + Scenario: Bulk deleting tasks in Task Directory + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Tasks button from navbar + And I search last created task by API using Contact UUID + And I check that number of displayed tasks results is 3 + And I click on Enter Bulk Edit Mode from Tasks Directory + And I select first 3 results in grid in Task Directory + And I click on Bulk Actions combobox in Task Directory + And I click on Delete button from Bulk Actions Combobox in Task Directory + And I click yes on the CONFIRM REMOVAL popup from Task Directory page + And I check if popup message is "All selected tasks have been deleted" + And I check that number of displayed tasks results is 0 + + @issue=SORDEV-6080 @env_main + Scenario: Bulk archiving tasks in Task Directory + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Tasks button from navbar + And I search last created task by API using Contact UUID + And I check that number of displayed tasks results is 3 + And I click on Enter Bulk Edit Mode from Tasks Directory + And I select first 3 results in grid in Task Directory + And I click on Bulk Actions combobox in Task Directory + And I click on Archive button from Bulk Actions Combobox in Task Directory + And I click yes on the CONFIRM REMOVAL popup from Task Directory page + And I check if popup message is "All selected tasks have been archived" + And I check that number of displayed tasks results is 0 + + @issue=SORDEV-6080 @env_main + Scenario: Bulk editing tasks in Task Directory + Given API: I create a new person + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given API: I create a new contact + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + And API: I create a new task + Then API: I check that POST call body is "OK" + And API: I check that POST call status code is 200 + Given I log in as a Admin User + And I click on the Tasks button from navbar + And I search last created task by API using Contact UUID + And I check that number of displayed tasks results is 3 + And I click on Enter Bulk Edit Mode from Tasks Directory + And I select first 3 results in grid in Task Directory + And I click on Bulk Actions combobox in Task Directory + And I click on Edit button from Bulk Actions Combobox in Task Directory + And I click to bulk change assignee for selected tasks + And I click to bulk change priority for selected tasks + And I click to bulk change status for selected tasks + And I click on Save button in New Task form + And I check if popup message after bulk edit is "All tasks have been edited" + And I check that number of displayed tasks results is 0 \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntry.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntry.feature index 0d05309cf7e..72d678ea5fd 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntry.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntry.feature @@ -60,4 +60,57 @@ Feature: Create travel entries Then I choose an existing case while creating case from travel entry And I click confirm button in popup from travel entry Then I navigate to epidemiological data tab in Edit case page - And I check if created travel entries are listed in the epidemiological data tab \ No newline at end of file + And I check if created travel entries are listed in the epidemiological data tab + + @issue=SORQA-199 @env_de + Scenario: Test Inactive Destrict Feauture for Travel Entries + Given I log in as a Admin User + Then I click on the Configuration button from navbar + And I click on Districts button in Configuration tab + And I click on New Entry button in Districts tab in Configuration + Then I fill new district with specific data for DE version + Then I click on the Entries button from navbar + And I click on the New Travel Entry button from Travel Entries directory + And I create new travel entry with created district for DE version + And I click on Save button from the new travel entry form + Then I check the created data is correctly displayed on Edit travel entry page with specific district for DE version + When I click on new case button for travel entry + Then I check if data from travel entry for new case is correct with specific district + And I save the new case for travel entry + Then I check if data with created district in case based on travel entry is correct + Then I click on the Configuration button from navbar + And I click on Districts button in Configuration tab + Then I filter by last created district + And I click on edit button for filtered district + And I archive chosen district + Then I click on the Entries button from navbar + And I filter by Person ID on Travel Entry directory page with specific district + Then I click on first filtered record in Travel Entry + And I check if archived district is marked as a inactive + Then I click on the Entries button from navbar + And I click on the New Travel Entry button from Travel Entries directory + Then I check if archived district is unavailable + + @issue=SORDEV-9477 @env_de + Scenario: Add a person search option on creation forms + Given I log in with National User + And I click on the Cases button from navbar + And I click on the NEW CASE button + When I create a new case with specific data for DE version + Then I check the created data is correctly displayed on Edit case page for DE version + And I click on the Entries button from navbar + And I click on the New Travel Entry button from Travel Entries directory + When I fill the required fields in a new travel entry form without personal data + Then I click on the person search button in create new travel entry form + And I search for the last created person by First Name and Last Name in popup on Select Person window + And I open the first found result in the popup of Select Person window for DE version + And I click on the clear button in new case form + And I click on the person search button in new case form + And I search for the last created person by First Name and Last Name in popup on Select Person window + And I open the first found result in the popup of Select Person window for DE version + And I click on Save button from the new travel entry form + And I collect travel UUID from travel entry + And I check the created data is correctly displayed on Edit travel entry page for DE version + When I click on the Persons button from navbar + And I open the last created person linked with Case + And I check that EDIT TRAVEL ENTRY button appears on Edit Person page \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntryFilters.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntryFilters.feature index df033bc78cc..f6eaf687376 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntryFilters.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/TravelEntryFilters.feature @@ -31,7 +31,7 @@ Scenario: Check Travel Entry filters And I click APPLY BUTTON in Travel Entry Directory Page And I check that number of displayed Travel Entry results is 0 And I click "Nur in Fälle konvertierte Einreisen" checkbox on Travel Entry directory page - And I apply "Archivierte Einreisen" to aggregation combobox on Travel Entry directory page + And I apply "Abgeschlossene Einreisen" to aggregation combobox on Travel Entry directory page And I check that number of displayed Travel Entry results is 0 And I apply "Alle Einreisen" to aggregation combobox on Travel Entry directory page And I check that number of displayed Travel Entry results is 1 @@ -44,4 +44,4 @@ Scenario: Check Travel Entry filters And I check that number of displayed Travel Entry results is 1 And I fill Travel Entry from input to 3 days after before UI Travel Entry created on Travel Entry directory page And I click APPLY BUTTON in Travel Entry Directory Page - And I check that number of displayed Travel Entry results is 0 + And I check that number of displayed Travel Entry results is 0 \ No newline at end of file diff --git a/sormas-e2e-tests/src/test/resources/features/sanity/web/User.feature b/sormas-e2e-tests/src/test/resources/features/sanity/web/User.feature index d68f0e047d2..7e6d9e20ff0 100644 --- a/sormas-e2e-tests/src/test/resources/features/sanity/web/User.feature +++ b/sormas-e2e-tests/src/test/resources/features/sanity/web/User.feature @@ -47,3 +47,20 @@ Feature: Create user Then I click on the Cases button from navbar And I check if user have limited disease view to Cholera only + @issue=SORDEV-5964 @env_main + Scenario: Bulk mode for Activate/deactivate user accounts + Given I log in as a Admin User + And I click on the Users from navbar + And I create 2 new users with National User via UI + And I pick and count amount a users that was created on the same period of time + And I click Enter Bulk Edit Mode on Users directory page + And I click checkbox to choose all User results + And I click on Bulk Actions combobox on User Directory Page + And I click on "Disable" from Bulk Actions combobox on User Directory Page + And I pick "Inactive" value for Active filter in User Directory + And I check that all Users are changed Active field value to opposite + And I click checkbox to choose all User results + And I click on Bulk Actions combobox on User Directory Page + And I click on "Enable" from Bulk Actions combobox on User Directory Page + And I pick "Active" value for Active filter in User Directory + And I check that all Users are changed Active field value to opposite \ No newline at end of file diff --git a/sormas-e2e-tests/uploads/Importvorlage_Einreise_21.11.04.csv b/sormas-e2e-tests/uploads/Importvorlage_Einreise_21.11.04.csv deleted file mode 100644 index 61e0d5e1fff..00000000000 --- a/sormas-e2e-tests/uploads/Importvorlage_Einreise_21.11.04.csv +++ /dev/null @@ -1,4 +0,0 @@ -externalId;disease;diseaseVariant;responsibleRegion;responsibleDistrict;responsibleCommunity;pointOfEntryRegion;pointOfEntryDistrict;pointOfEntry;pointOfEntryDetails;reportDate;Nachname;Vorname;Geschlecht;Geburtsdatum;Tel. persönlich;Tel. weitere;E-Mail Adresse;recovered;vaccinated;testedNegative;quarantine;quarantineHomePossible;quarantineTypeDetails;quarantineFrom;quarantineTo;quarantineHelpNeeded;quarantineOrderedVerbally;quarantineOrderedVerballyDate;quarantineOrderedOfficialDocument;quarantineOrderedOfficialDocumentDate;quarantineHomeSupplyEnsured -##Externe ID;Krankheit;Krankheitsvariante;Zuständiges Bundesland;Zuständige/r Landkreis/Kreisfreie Stadt;Zuständige Gemeinde;Einreiseort Bundesland;Einreiseort Landkreis/kreisfreie Stadt;Einreiseort;Einreiseort Details;Meldedatum;;;;;Primäre Telefonnummer;weitere Telefonnummer;Primäre E-Mail Adresse;Genesen;Geimpft;Negativ getestet;;Häusliche Quarantäne möglich?;Quarantäne Details;Quarantäne Beginn;Quarantäne Ende;Maßnahmen zur Gewährleistung der Versorgung?;Quarantäne mündlich verordnet?;Datum der mündlichen Anordnung;Quarantäne schriftlich verordnet?;Datum der schriftlichen Anordnung;Versorgung sichergestellt? -##ID;Coronavirus ;;;;;;;OTHER_AIRPORT,OTHER_SEAPORT,OTHER_GROUND_CROSSING,OTHER_POINT_OF_ENTRY;;Datum ;;;Male,Female,Other,Unknown;Datum;;;;TRUE,FALSE;TRUE,FALSE;TRUE,FALSE;Home,Institutional,None,Unknown,Other;Yes,No,Unknown;Text;Datum;Datum;Text;TRUE,FALSE;Datum;TRUE,FALSE;Datum;Yes,No,Unknown -1234-1234-123;CORONAVIRUS;B.1.427;Niedersachsen;LK Stade;Brest;Berlin;SK Berlin Mitte;OTHER_AIRPORT;Test;03.10.2021;Becker;Theresa;Female;23.04.1993;0123456789;06765434567;email@adresse.de;TRUE;TRUE;FALSE;Home;Yes;Details;03.10.2021;12.10.2021;Familie bringt Essen;TRUE;03.10.2021;FALSE;03.10.2021;Yes diff --git a/sormas-e2e-tests/uploads/Importvorlage_Einreise_22.04.01.csv b/sormas-e2e-tests/uploads/Importvorlage_Einreise_22.04.01.csv new file mode 100644 index 00000000000..bbc4d9a47f0 --- /dev/null +++ b/sormas-e2e-tests/uploads/Importvorlage_Einreise_22.04.01.csv @@ -0,0 +1,4 @@ +externalId;disease;diseaseVariant;responsibleRegion;responsibleDistrict;responsibleCommunity;pointOfEntryRegion;pointOfEntryDistrict;pointOfEntry;pointOfEntryDetails;reportDate;Einreisedatum;Nachname;Vorname;Geschlecht;Geburtsdatum;Tel. persönlich;Tel. weitere;E-Mail Adresse;recovered;vaccinated;testedNegative;quarantine;quarantineHomePossible;quarantineTypeDetails;quarantineFrom;quarantineTo;quarantineHelpNeeded;quarantineOrderedVerbally;quarantineOrderedVerballyDate;quarantineOrderedOfficialDocument;quarantineOrderedOfficialDocumentDate;quarantineHomeSupplyEnsured +##Externe ID;Krankheit;Krankheitsvariante;Zuständiges Bundesland;Zuständige/r Landkreis/Kreisfreie Stadt;Zuständige Gemeinde;Einreiseort Bundesland;Einreiseort Landkreis/kreisfreie Stadt;Einreiseort;Einreiseort Details;Meldedatum;;;;;;Primäre Telefonnummer;weitere Telefonnummer;Primäre E-Mail Adresse;Genesen;Geimpft;Negativ getestet;;Häusliche Quarantäne möglich?;Quarantäne Details;Quarantäne Beginn;Quarantäne Ende;Maßnahmen zur Gewährleistung der Versorgung?;Quarantäne mündlich verordnet?;Datum der mündlichen Anordnung;Quarantäne schriftlich verordnet?;Datum der schriftlichen Anordnung;Versorgung sichergestellt? +##ID;Coronavirus ;;;;;;;OTHER_AIRPORT,OTHER_SEAPORT,OTHER_GROUND_CROSSING,OTHER_POINT_OF_ENTRY;;Datum ;;;;Male,Female,Other,Unknown;Datum;;;;TRUE,FALSE;TRUE,FALSE;TRUE,FALSE;Home,Institutional,None,Unknown,Other;Yes,No,Unknown;Text;Datum;Datum;Text;TRUE,FALSE;Datum;TRUE,FALSE;Datum;Yes,No,Unknown +1234-1234-123;CORONAVIRUS;B.1.427;Niedersachsen;LK Stade;Brest;Berlin;SK Berlin Mitte;OTHER_AIRPORT;Test;03.10.2021;02.10.2021;Becker;Theresa;Female;23.04.1993;123456789;6765434567;email@adresse.de;TRUE;TRUE;FALSE;Home;Yes;Details;03.10.2021;12.10.2021;Familie bringt Essen;TRUE;03.10.2021;FALSE;03.10.2021;Yes diff --git a/sormas-ear/pom.xml b/sormas-ear/pom.xml index fa2e2a19b20..8ef71652f9c 100644 --- a/sormas-ear/pom.xml +++ b/sormas-ear/pom.xml @@ -3,7 +3,7 @@ de.symeda.sormas sormas-base - 1.70.4 + 1.71.0 ../sormas-base diff --git a/sormas-keycloak-service-provider/pom.xml b/sormas-keycloak-service-provider/pom.xml index e355bcdf7ee..1fc40ca3c16 100644 --- a/sormas-keycloak-service-provider/pom.xml +++ b/sormas-keycloak-service-provider/pom.xml @@ -3,7 +3,7 @@ sormas-base de.symeda.sormas - 1.70.4 + 1.71.0 ../sormas-base 4.0.0 diff --git a/sormas-rest/pom.xml b/sormas-rest/pom.xml index ba7152f5300..b56006a688b 100644 --- a/sormas-rest/pom.xml +++ b/sormas-rest/pom.xml @@ -3,7 +3,7 @@ de.symeda.sormas sormas-base - 1.70.4 + 1.71.0 ../sormas-base diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/DashboardResource.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/DashboardResource.java index a106e8317cf..721e3b4f807 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/DashboardResource.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/DashboardResource.java @@ -13,8 +13,11 @@ import de.symeda.sormas.api.FacadeProvider; import de.symeda.sormas.api.caze.CaseClassification; import de.symeda.sormas.api.caze.MapCaseDto; +import de.symeda.sormas.api.contact.ContactClassification; import de.symeda.sormas.api.contact.MapContactDto; +import de.symeda.sormas.api.dashboard.DashboardCaseMeasureDto; import de.symeda.sormas.api.dashboard.DashboardCaseStatisticDto; +import de.symeda.sormas.api.dashboard.DashboardContactStatisticDto; import de.symeda.sormas.api.dashboard.DashboardCriteria; import de.symeda.sormas.api.dashboard.DashboardEventDto; import de.symeda.sormas.api.dashboard.SurveillanceDashboardCriteria; @@ -75,6 +78,31 @@ public Map> getEpidemiologicalCurveDataPerP return FacadeProvider.getDashboardFacade().getEpiCurveSeriesElementsPerPresentCondition(dashboardCriteria); } + @POST + @Path("/epiCurveElementsContactClassification") + public Map> getEpiCurveSeriesElementsPerContactClassification( + @RequestBody DashboardCriteria dashboardCriteria) { + return FacadeProvider.getDashboardFacade().getEpiCurveSeriesElementsPerContactClassification(dashboardCriteria); + } + + @POST + @Path("/epiCurveElementsContactFollowUpStatus") + public Map> getEpiCurveSeriesElementsPerContactFollowUpStatus(@RequestBody DashboardCriteria dashboardCriteria) { + return FacadeProvider.getDashboardFacade().getEpiCurveSeriesElementsPerContactFollowUpStatus(dashboardCriteria); + } + + @POST + @Path("/epiCurveElementsContactFollowUpUntil") + public Map getEpiCurveSeriesElementsPerContactFollowUpUntil(@RequestBody DashboardCriteria dashboardCriteria) { + return FacadeProvider.getDashboardFacade().getEpiCurveSeriesElementsPerContactFollowUpUntil(dashboardCriteria); + } + + @POST + @Path("/caseMeasurePerDistrict") + public DashboardCaseMeasureDto getCaseMeasurePerDistrict(@RequestBody DashboardCriteria dashboardCriteria) { + return FacadeProvider.getDashboardFacade().getCaseMeasurePerDistrict(dashboardCriteria); + } + @POST @Path("/loadMapCaseData") public List getMapCaseData(@RequestBody SurveillanceDashboardCriteria dashboardCriteria) { @@ -106,4 +134,10 @@ public List getMapEventData(@RequestBody DashboardCriteria da return FacadeProvider.getDashboardFacade().getNewEvents(dashboardCriteria); } + @POST + @Path("/contacts") + public DashboardContactStatisticDto getDashboardContactStatistic(@RequestBody DashboardCriteria dashboardCriteria) { + return FacadeProvider.getDashboardFacade().getDashboardContactStatistic(dashboardCriteria); + } + } diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/EventParticipantResource.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/EventParticipantResource.java index 0f2e12f79ff..fc0c07484ce 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/EventParticipantResource.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/EventParticipantResource.java @@ -99,7 +99,7 @@ public List getByPersonUuids(List uuids) { @Path("/push") public List postEventParticipants(@Valid List dtos) { - List result = savePushedDto(dtos, FacadeProvider.getEventParticipantFacade()::saveEventParticipant); + List result = savePushedDto(dtos, FacadeProvider.getEventParticipantFacade()::save); return result; } diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/LabMessageResource.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/LabMessageResource.java new file mode 100644 index 00000000000..2d8580d0f31 --- /dev/null +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/LabMessageResource.java @@ -0,0 +1,39 @@ +package de.symeda.sormas.rest; + +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; + +import de.symeda.sormas.api.FacadeProvider; +import de.symeda.sormas.api.caze.CriteriaWithSorting; +import de.symeda.sormas.api.common.Page; +import de.symeda.sormas.api.labmessage.LabMessageCriteria; +import de.symeda.sormas.api.labmessage.LabMessageDto; +import de.symeda.sormas.api.labmessage.LabMessageIndexDto; +import io.swagger.v3.oas.annotations.parameters.RequestBody; + +@Path("/labmessages") +@Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8") +public class LabMessageResource extends EntityDtoResource { + + @GET + @Path("/{uuid}") + public LabMessageDto getByUuid(@PathParam("uuid") String uuid) { + return FacadeProvider.getLabMessageFacade().getByUuid(uuid); + } + + @POST + @Path("/indexList") + public Page getIndexList( + @RequestBody CriteriaWithSorting criteriaWithSorting, + @QueryParam("offset") int offset, + @QueryParam("size") int size) { + return FacadeProvider.getLabMessageFacade() + .getIndexPage(criteriaWithSorting.getCriteria(), offset, size, criteriaWithSorting.getSortProperties()); + } + +} diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/SormasToSormasResource.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/SormasToSormasResource.java index 93e8a8ab97c..09fb4e6db79 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/SormasToSormasResource.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/SormasToSormasResource.java @@ -42,7 +42,7 @@ import de.symeda.sormas.api.sormastosormas.SormasToSormasException; import de.symeda.sormas.api.sormastosormas.validation.SormasToSormasValidationException; import de.symeda.sormas.api.user.UserRight; -import de.symeda.sormas.rest.security.oidc.ClientCredentials; +import de.symeda.sormas.rest.security.s2s.oidc.ClientCredentials; @Path(SormasToSormasApiConstants.RESOURCE_PATH) @Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8") diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/audit/RequestAuditFilter.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/audit/RequestAuditFilter.java new file mode 100644 index 00000000000..14850b75d27 --- /dev/null +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/audit/RequestAuditFilter.java @@ -0,0 +1,27 @@ +package de.symeda.sormas.rest.audit; + +import de.symeda.sormas.api.FacadeProvider; +import org.glassfish.jersey.server.ContainerRequest; + +import javax.annotation.Priority; +import javax.annotation.Resource; +import javax.ejb.EJB; +import javax.ejb.SessionContext; +import javax.ws.rs.Priorities; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerRequestFilter; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.ext.Provider; +import java.io.IOException; + +@Provider +@Priority(Priorities.USER) +public class RequestAuditFilter implements ContainerRequestFilter { + + @Override + public void filter(ContainerRequestContext requestContext) throws IOException { + String actionMethod = requestContext.getMethod(); + + FacadeProvider.getAuditLoggerFacade().logRestCall(((ContainerRequest) requestContext).getPath(true), actionMethod); + } +} diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/KeycloakHttpAuthenticationMechanism.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/KeycloakHttpAuthenticationMechanism.java index a447e07c705..618446e2d5e 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/KeycloakHttpAuthenticationMechanism.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/KeycloakHttpAuthenticationMechanism.java @@ -56,9 +56,10 @@ public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServ if (result.getStatus() == CredentialValidationResult.Status.VALID) { KeycloakAccount keycloakAccount = (KeycloakAccount) request.getAttribute(KeycloakAccount.class.getName()); keycloakAccount.getRoles().addAll(result.getCallerGroups()); + + httpMessageContext.setRegisterSession(result.getCallerPrincipal().getName(), result.getCallerGroups()); } - httpMessageContext.setRegisterSession(result.getCallerPrincipal().getName(), result.getCallerGroups()); return httpMessageContext.notifyContainerAboutLogin(result); } diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/MultiAuthenticationMechanism.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/MultiAuthenticationMechanism.java index 7b874006bfa..58b4e9a9349 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/MultiAuthenticationMechanism.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/MultiAuthenticationMechanism.java @@ -35,10 +35,19 @@ import javax.security.enterprise.authentication.mechanism.http.BasicAuthenticationMechanismDefinition; import javax.security.enterprise.authentication.mechanism.http.HttpAuthenticationMechanism; import javax.security.enterprise.authentication.mechanism.http.HttpMessageContext; +import javax.security.enterprise.credential.CallerOnlyCredential; +import javax.security.enterprise.credential.Credential; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.xml.bind.DatatypeConverter; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpHeaders; +import org.glassfish.soteria.Utils; import org.glassfish.soteria.cdi.BasicAuthenticationMechanismDefinitionAnnotationLiteral; import org.glassfish.soteria.mechanisms.BasicAuthenticationMechanism; +import org.keycloak.KeycloakSecurityContext; /** * Mechanism which allows configuration of multiple providers trough a system property. @@ -62,14 +71,21 @@ * @see KeycloakConfigResolver * @see KeycloakHttpAuthenticationMechanism */ + +interface extractCallerFromRequest { + + String extract(HttpServletRequest request); +} + @OpenAPIDefinition(security = { - @SecurityRequirement(name = "basicAuth"), - @SecurityRequirement(name = "bearerAuth") }) + @SecurityRequirement(name = "basicAuth"), + @SecurityRequirement(name = "bearerAuth") }) @SecurityScheme(name = "basicAuth", type = SecuritySchemeType.HTTP, scheme = "basic") @SecurityScheme(name = "bearerAuth", type = SecuritySchemeType.HTTP, scheme = "bearer", bearerFormat = "JWT") @ApplicationScoped public class MultiAuthenticationMechanism implements HttpAuthenticationMechanism { + private final extractCallerFromRequest extractor; private final HttpAuthenticationMechanism authenticationMechanism; @Inject @@ -77,25 +93,69 @@ public MultiAuthenticationMechanism(KeycloakHttpAuthenticationMechanism keycloak String authenticationProvider = FacadeProvider.getConfigFacade().getAuthenticationProvider(); if (authenticationProvider.equals(AuthProvider.KEYCLOAK)) { authenticationMechanism = keycloakHttpAuthenticationMechanism; + + extractor = (request) -> { + String authorization = request.getHeader("Authorization"); + boolean valid = StringUtils.isNotBlank(authorization) && StringUtils.startsWithAny(authorization, "Basic", "Bearer"); + if (!valid) { + return String.format("Invalid Authorization header provided! Was: %s", authorization); + } + + KeycloakSecurityContext keycloakContext = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName()); + + String caller = null; + if (keycloakContext != null) { + caller = keycloakContext.getToken().getPreferredUsername(); + } + if (StringUtils.isEmpty(caller)) { + return "Username could not be determined. Try to check Keycloak logs?"; + } else { + return caller; + } + }; + } else { BasicAuthenticationMechanismDefinition definition = new BasicAuthenticationMechanismDefinitionAnnotationLiteral("sormas-rest-realm"); authenticationMechanism = new BasicAuthenticationMechanism(definition); + + extractor = (request) -> { + String authorization = request.getHeader("Authorization"); + boolean valid = StringUtils.isNotBlank(authorization) && StringUtils.startsWithAny(authorization, "Basic"); + if (!valid) { + return String.format("Invalid Authorization header provided! Was: %s", authorization); + } + String authorizationHeader = request.getHeader(HttpHeaders.AUTHORIZATION); + if (authorizationHeader != null && authorizationHeader.toLowerCase().startsWith("basic")) { + String encodedCredentials = authorizationHeader.substring("Basic".length()).trim(); + String credentials = new String(Base64.decodeBase64(encodedCredentials)); + return credentials.split(":", 2)[0]; + } else { + return "Username could not be determined."; + } + }; } + } @Override public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext context) - throws AuthenticationException { + throws AuthenticationException { if (request.getPathInfo().startsWith(SormasToSormasApiConstants.RESOURCE_PATH)) { // S2S auth will be handled by S2SAuthFilter return validateRequestS2S(context); } - return authenticationMechanism.validateRequest(request, response, context); + AuthenticationStatus authenticationStatus = authenticationMechanism.validateRequest(request, response, context); + if (authenticationStatus.equals(AuthenticationStatus.SEND_FAILURE)) { + + FacadeProvider.getAuditLoggerFacade().logFailedRestLogin(extractor.extract(request), request.getMethod(), request.getRequestURI()); + } + + return authenticationStatus; } @Override public AuthenticationStatus secureResponse(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) - throws AuthenticationException { + throws AuthenticationException { return authenticationMechanism.secureResponse(request, response, httpMessageContext); } @@ -110,7 +170,7 @@ private AuthenticationStatus validateRequestS2S(HttpMessageContext context) { Set userRights = FacadeProvider.getUserRoleConfigFacade().getEffectiveUserRights(s2sUser.getUserRoles()); return context.notifyContainerAboutLogin( - () -> DefaultEntityHelper.SORMAS_TO_SORMAS_USER_NAME, - userRights.stream().map(Enum::name).collect(Collectors.toSet())); + () -> DefaultEntityHelper.SORMAS_TO_SORMAS_USER_NAME, + userRights.stream().map(Enum::name).collect(Collectors.toSet())); } } diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/oidc/ClientCredentials.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/s2s/oidc/ClientCredentials.java similarity index 88% rename from sormas-rest/src/main/java/de/symeda/sormas/rest/security/oidc/ClientCredentials.java rename to sormas-rest/src/main/java/de/symeda/sormas/rest/security/s2s/oidc/ClientCredentials.java index 2a4c305c12f..1f5c262f811 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/oidc/ClientCredentials.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/s2s/oidc/ClientCredentials.java @@ -1,4 +1,4 @@ -package de.symeda.sormas.rest.security.oidc; +package de.symeda.sormas.rest.security.s2s.oidc; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.TYPE; diff --git a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/oidc/S2SAuthFilter.java b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/s2s/oidc/S2SAuthFilter.java similarity index 98% rename from sormas-rest/src/main/java/de/symeda/sormas/rest/security/oidc/S2SAuthFilter.java rename to sormas-rest/src/main/java/de/symeda/sormas/rest/security/s2s/oidc/S2SAuthFilter.java index 4876dd26047..704e547c6e7 100644 --- a/sormas-rest/src/main/java/de/symeda/sormas/rest/security/oidc/S2SAuthFilter.java +++ b/sormas-rest/src/main/java/de/symeda/sormas/rest/security/s2s/oidc/S2SAuthFilter.java @@ -1,4 +1,4 @@ -package de.symeda.sormas.rest.security.oidc; +package de.symeda.sormas.rest.security.s2s.oidc; import java.io.IOException; import java.net.URL; diff --git a/sormas-ui/pom.xml b/sormas-ui/pom.xml index df340404eb4..a4476e878d0 100644 --- a/sormas-ui/pom.xml +++ b/sormas-ui/pom.xml @@ -3,7 +3,7 @@ sormas-base de.symeda.sormas - 1.70.4 + 1.71.0 ../sormas-base 4.0.0 diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/AboutView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/AboutView.java index 2b8057ea356..6e8caf40451 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/AboutView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/AboutView.java @@ -135,11 +135,7 @@ private VerticalLayout createInfoSection() { if (InfoProvider.get().isSnapshotVersion()) { Link commitLink = new Link( - String.format( - "%s (%s)", - versionLabel.getValue(), - InfoProvider.get() - .getLastCommitShortId()), + String.format("%s (%s)", versionLabel.getValue(), InfoProvider.get().getLastCommitShortId()), new ExternalResource(InfoProvider.get().getLastCommitHistoryUrl())); commitLink.setTargetName("_blank"); CssStyles.style(commitLink, CssStyles.VSPACE_3); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseController.java index 8896ca45c33..42b672085d6 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseController.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -66,7 +67,6 @@ import de.symeda.sormas.api.caze.classification.DiseaseClassificationCriteriaDto; import de.symeda.sormas.api.contact.ContactClassification; import de.symeda.sormas.api.contact.ContactDto; -import de.symeda.sormas.api.contact.ContactLogic; import de.symeda.sormas.api.contact.ContactSimilarityCriteria; import de.symeda.sormas.api.contact.ContactStatus; import de.symeda.sormas.api.contact.SimilarContactDto; @@ -201,10 +201,7 @@ public void createFromEventParticipant(EventParticipantDto eventParticipant) { if (updatedEventparticipant.getResultingCase() != null) { String caseUuid = updatedEventparticipant.getResultingCase().getUuid(); CaseDataDto caze = FacadeProvider.getCaseFacade().getCaseDataByUuid(caseUuid); - Date relevantDate = event.getStartDate() != null - ? event.getStartDate() - : (event.getEndDate() != null ? event.getEndDate() : event.getReportDateTime()); - convertSamePersonContactsAndEventparticipants(caze, relevantDate); + convertSamePersonContactsAndEventparticipants(caze); } }); VaadinUiUtil.showModalPopupWindow(caseCreateComponent, I18nProperties.getString(Strings.headingCreateNewCase)); @@ -243,9 +240,7 @@ public void createFromContact(ContactDto contact) { if (contactDto.getResultingCase() != null) { String caseUuid = contactDto.getResultingCase().getUuid(); CaseDataDto caze = FacadeProvider.getCaseFacade().getCaseDataByUuid(caseUuid); - convertSamePersonContactsAndEventparticipants( - caze, - ContactLogic.getStartDate(contactDto.getLastContactDate(), contactDto.getReportDateTime())); + convertSamePersonContactsAndEventparticipants(caze); } }); VaadinUiUtil.showModalPopupWindow(caseCreateComponent, I18nProperties.getString(Strings.headingCreateNewCase)); @@ -262,9 +257,7 @@ public void createFromContact(ContactDto contact) { FacadeProvider.getCaseFacade().setSampleAssociations(updatedContact.toReference(), selectedCase.toReference()); - convertSamePersonContactsAndEventparticipants( - selectedCase, - ContactLogic.getStartDate(updatedContact.getLastContactDate(), updatedContact.getReportDateTime())); + convertSamePersonContactsAndEventparticipants(selectedCase); navigateToView(CaseDataView.VIEW_NAME, selectedCase.getUuid(), null); } @@ -295,21 +288,31 @@ public void createFromTravelEntry(TravelEntryDto travelEntryDto) { }); } - private void convertSamePersonContactsAndEventparticipants(CaseDataDto caze, Date relevantDate) { + private void convertSamePersonContactsAndEventparticipants(CaseDataDto caze) { - ContactSimilarityCriteria contactCriteria = new ContactSimilarityCriteria().withPerson(caze.getPerson()) - .withDisease(caze.getDisease()) - .withContactClassification(ContactClassification.CONFIRMED) - .withExcludePseudonymized(true) - .withNoResultingCase(true); - List matchingContacts = FacadeProvider.getContactFacade().getMatchingContacts(contactCriteria); + List matchingContacts; + if (UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_EDIT)) { + ContactSimilarityCriteria contactCriteria = new ContactSimilarityCriteria().withPerson(caze.getPerson()) + .withDisease(caze.getDisease()) + .withContactClassification(ContactClassification.CONFIRMED) + .withExcludePseudonymized(true) + .withNoResultingCase(true); + matchingContacts = FacadeProvider.getContactFacade().getMatchingContacts(contactCriteria); + } else { + matchingContacts = Collections.emptyList(); + } + + List matchingEventParticipants ; + if (UserProvider.getCurrent().hasUserRight(UserRight.EVENTPARTICIPANT_EDIT)) { + EventParticipantCriteria eventParticipantCriteria = new EventParticipantCriteria().withPerson(caze.getPerson()) + .withDisease(caze.getDisease()) + .withExcludePseudonymized(true) + .withNoResultingCase(true); - EventParticipantCriteria eventParticipantCriteria = new EventParticipantCriteria().withPerson(caze.getPerson()) - .withDisease(caze.getDisease()) - .withExcludePseudonymized(true) - .withNoResultingCase(true); - List matchingEventParticipants = - FacadeProvider.getEventParticipantFacade().getMatchingEventParticipants(eventParticipantCriteria); + matchingEventParticipants = FacadeProvider.getEventParticipantFacade().getMatchingEventParticipants(eventParticipantCriteria); + } else { + matchingEventParticipants = Collections.emptyList(); + } if (matchingContacts.size() > 0 || matchingEventParticipants.size() > 0) { String infoText = matchingEventParticipants.isEmpty() @@ -404,7 +407,7 @@ private void setResultingCase( List eventParticipants = FacadeProvider.getEventParticipantFacade().getByUuids(eventParticipantUuids); for (EventParticipantDto eventParticipant : eventParticipants) { eventParticipant.setResultingCase(caze.toReference()); - FacadeProvider.getEventParticipantFacade().saveEventParticipant(eventParticipant); + FacadeProvider.getEventParticipantFacade().save(eventParticipant); } } @@ -685,8 +688,6 @@ public CommitDiscardWrapperComponent getCaseCreateComponent( } FacadeProvider.getContactFacade().save(updatedContact); FacadeProvider.getCaseFacade().setSampleAssociations(updatedContact.toReference(), dto.toReference()); - CaseDataDto caseDataByUuid = FacadeProvider.getCaseFacade().getCaseDataByUuid(dto.getUuid()); - FacadeProvider.getCaseFacade().save(caseDataByUuid); Notification.show(I18nProperties.getString(Strings.messageCaseCreated), Type.ASSISTIVE_NOTIFICATION); if (!createdFromLabMessage) { navigateToView(CaseDataView.VIEW_NAME, dto.getUuid(), null); @@ -703,8 +704,7 @@ public CommitDiscardWrapperComponent getCaseCreateComponent( FacadeProvider.getEventParticipantFacade().getEventParticipantByUuid(convertedEventParticipant.getUuid()); if (unrelatedDisease == null) { // set resulting case on event participant and save it - updatedEventParticipant.setResultingCase(dto.toReference()); - FacadeProvider.getEventParticipantFacade().saveEventParticipant(updatedEventParticipant); + FacadeProvider.getCaseFacade().setResultingCase(updatedEventParticipant.toReference(), dto.toReference()); FacadeProvider.getCaseFacade().setSampleAssociations(updatedEventParticipant.toReference(), dto.toReference()); } else { FacadeProvider.getCaseFacade() @@ -717,7 +717,7 @@ public CommitDiscardWrapperComponent getCaseCreateComponent( if (unrelatedDisease == null && convertedEventParticipant.getResultingCase() == null) { convertedEventParticipant.setResultingCase(FacadeProvider.getCaseFacade().getReferenceByUuid(uuid)); } - FacadeProvider.getEventParticipantFacade().saveEventParticipant(convertedEventParticipant); + FacadeProvider.getEventParticipantFacade().save(convertedEventParticipant); if (!createdFromLabMessage) { navigateToView(CaseDataView.VIEW_NAME, uuid, null); } @@ -893,7 +893,7 @@ public void showBulkCaseDataEditComponent(Collection sel districtUuid = currentDistrictUuid; first = false; } else { - if (!DataHelper.equal(regionUuid, currentDistrictUuid)) { + if (!DataHelper.equal(regionUuid, currentRegionUuid)) { regionUuid = null; } if (!DataHelper.equal(districtUuid, currentDistrictUuid)) { @@ -1101,14 +1101,14 @@ private void appendSpecialCommands(CaseDataDto caze, CommitDiscardWrapperCompone } if (UserProvider.getCurrent().hasUserRight(UserRight.CASE_REFER_FROM_POE) && caze.checkIsUnreferredPortHealthCase()) { - Button btnReferToFacility = ButtonHelper.createButton(Captions.caseReferToFacility, e -> { + Button btnReferFromPointOfEntry = ButtonHelper.createButton(Captions.caseReferFromPointOfEntry, e -> { editView.commit(); CaseDataDto caseDto = findCase(caze.getUuid()); referFromPointOfEntry(caseDto); }); - editView.getButtonsPanel().addComponentAsFirst(btnReferToFacility); - editView.getButtonsPanel().setComponentAlignment(btnReferToFacility, Alignment.BOTTOM_LEFT); + editView.getButtonsPanel().addComponentAsFirst(btnReferFromPointOfEntry); + editView.getButtonsPanel().setComponentAlignment(btnReferFromPointOfEntry, Alignment.BOTTOM_LEFT); } } @@ -1421,7 +1421,7 @@ public void referFromPointOfEntry(CaseDataDto caze) { form, UserProvider.getCurrent().hasUserRight(UserRight.CASE_REFER_FROM_POE), form.getFieldGroup()); - view.getCommitButton().setCaption(I18nProperties.getCaption(Captions.caseReferToFacility)); + view.getCommitButton().setCaption(I18nProperties.getCaption(Captions.caseReferFromPointOfEntry)); Window window = VaadinUiUtil.showPopupWindow(view); window.setCaption(I18nProperties.getString(Strings.headingReferCaseFromPointOfEntry)); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java index f557b5e985c..7f7d4e4ee1f 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java @@ -1,20 +1,17 @@ -/******************************************************************************* +/* * SORMAS® - Surveillance Outbreak Response Management & Analysis System * Copyright © 2016-2018 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.ui.caze; import static de.symeda.sormas.ui.utils.CssStyles.ERROR_COLOR_PRIMARY; @@ -44,7 +41,6 @@ import java.util.Map; import java.util.stream.Collectors; -import de.symeda.sormas.api.ConfigFacade; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -118,6 +114,7 @@ import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.person.PersonDto; +import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.symptoms.SymptomsDto; import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRight; @@ -129,6 +126,7 @@ import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers; import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers; import de.symeda.sormas.api.utils.fieldvisibility.checkers.CountryFieldVisibilityChecker; +import de.symeda.sormas.api.utils.fieldvisibility.checkers.UserRightFieldVisibilityChecker; import de.symeda.sormas.ui.ControllerProvider; import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.caze.surveillancereport.CaseReinfectionCheckBoxTree; @@ -320,7 +318,8 @@ public CaseDataForm(String caseUuid, PersonDto person, Disease disease, Symptoms false, FieldVisibilityCheckers.withDisease(disease) .add(new OutbreakFieldVisibilityChecker(viewMode)) - .add(new CountryFieldVisibilityChecker(FacadeProvider.getConfigFacade().getCountryLocale())), + .add(new CountryFieldVisibilityChecker(FacadeProvider.getConfigFacade().getCountryLocale())) + .add(new UserRightFieldVisibilityChecker(UserProvider.getCurrent()::hasUserRight)), UiFieldAccessCheckers.getDefault(isPseudonymized)); this.caseUuid = caseUuid; @@ -402,7 +401,7 @@ protected void addFields() { // Button to automatically assign a new epid number Button assignNewEpidNumberButton = ButtonHelper.createButton( Captions.actionAssignNewEpidNumber, - e -> epidField.setValue(FacadeProvider.getCaseFacade().generateEpidNumber(getValue())), + e -> epidField.setValue(FacadeProvider.getCaseFacade().getGenerateEpidNumber(getValue())), ValoTheme.BUTTON_DANGER, FORCE_CAPTION); @@ -867,7 +866,7 @@ protected void addFields() { setReadOnly(!UserProvider.getCurrent().hasUserRight(UserRight.CASE_SHARE), CaseDataDto.SHARED_TO_COUNTRY); } - addInfrastructureField(CaseDataDto.POINT_OF_ENTRY); + ComboBox pointOfEntry = addInfrastructureField(CaseDataDto.POINT_OF_ENTRY); addField(CaseDataDto.POINT_OF_ENTRY_DETAILS, TextField.class); addField(CaseDataDto.PROHIBITION_TO_WORK, NullableOptionGroup.class).addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL); @@ -1010,6 +1009,7 @@ protected void addFields() { responsibleCommunity.addStyleName(SOFT_REQUIRED); InfrastructureFieldsHelper.initInfrastructureFields(responsibleRegion, responsibleDistrict, responsibleCommunity); + InfrastructureFieldsHelper.initPointOfEntry(responsibleDistrict, pointOfEntry); responsibleDistrict.addValueChangeListener(e -> { Boolean differentPlaceOfStay = differentPlaceOfStayJurisdiction.getValue(); @@ -1190,33 +1190,13 @@ protected void addFields() { null); /// CLINICIAN FIELDS - if (UserProvider.getCurrent().hasUserRight(UserRight.CASE_CLINICIAN_VIEW)) { - if (isVisibleAllowed(CaseDataDto.CLINICIAN_NAME)) { - FieldHelper.setVisibleWhen( - getFieldGroup(), - CaseDataDto.CLINICIAN_NAME, - CaseDataDto.FACILITY_TYPE, - Arrays.asList(FacilityType.HOSPITAL, FacilityType.OTHER_MEDICAL_FACILITY), - true); - } - if (isVisibleAllowed(CaseDataDto.CLINICIAN_PHONE)) { - FieldHelper.setVisibleWhen( - getFieldGroup(), - CaseDataDto.CLINICIAN_PHONE, - CaseDataDto.FACILITY_TYPE, - Arrays.asList(FacilityType.HOSPITAL, FacilityType.OTHER_MEDICAL_FACILITY), - true); - } - if (isVisibleAllowed(CaseDataDto.CLINICIAN_EMAIL)) { - FieldHelper.setVisibleWhen( - getFieldGroup(), - CaseDataDto.CLINICIAN_EMAIL, - CaseDataDto.FACILITY_TYPE, - Arrays.asList(FacilityType.HOSPITAL, FacilityType.OTHER_MEDICAL_FACILITY), - true); - } - } else { - setVisible(false, CaseDataDto.CLINICIAN_NAME, CaseDataDto.CLINICIAN_PHONE, CaseDataDto.CLINICIAN_EMAIL); + if (isVisibleAllowed(CaseDataDto.CLINICIAN_NAME)) { + FieldHelper.setVisibleWhen( + getFieldGroup(), + Arrays.asList(CaseDataDto.CLINICIAN_NAME, CaseDataDto.CLINICIAN_PHONE, CaseDataDto.CLINICIAN_EMAIL), + CaseDataDto.FACILITY_TYPE, + Arrays.asList(FacilityType.HOSPITAL, FacilityType.OTHER_MEDICAL_FACILITY), + true); } // Other initializations @@ -1249,7 +1229,7 @@ protected void addFields() { } } - if (shouldShowPaperFormDates()) { + if (!shouldHidePaperFormDates()) { Label paperFormDatesLabel = new Label(I18nProperties.getString(Strings.headingPaperFormDates)); paperFormDatesLabel.addStyleName(H3); getContent().addComponent(paperFormDatesLabel, PAPER_FORM_DATES_LOC); @@ -1336,10 +1316,11 @@ protected void addFields() { if (caseFollowUpEnabled) { // Add follow-up until validator - FollowUpPeriodDto followUpPeriod = CaseLogic.getFollowUpStartDate( - symptoms.getOnsetDate(), - reportDate.getValue(), - FacadeProvider.getSampleFacade().getByCaseUuids(Collections.singletonList(caseUuid))); + List samples = Collections.emptyList(); + if (UserProvider.getCurrent().hasAllUserRights(UserRight.SAMPLE_VIEW)) { + samples = FacadeProvider.getSampleFacade().getByCaseUuids(Collections.singletonList(caseUuid)); + } + FollowUpPeriodDto followUpPeriod = CaseLogic.getFollowUpStartDate(symptoms.getOnsetDate(), reportDate.getValue(), samples); Date minimumFollowUpUntilDate = FollowUpLogic .calculateFollowUpUntilDate( @@ -1667,7 +1648,7 @@ public void setValue(CaseDataDto newFieldValue) throws ReadOnlyException, Conver } } - if (caseFollowUpEnabled) { + if (caseFollowUpEnabled && UserProvider.getCurrent().hasUserRight(UserRight.CASE_EDIT)) { FollowUpPeriodDto followUpPeriodDto = FacadeProvider.getCaseFacade().calculateFollowUpUntilDate(newFieldValue, true); tfExpectedFollowUpUntilDate .setValue(DateHelper.formatLocalDate(followUpPeriodDto.getFollowUpEndDate(), I18nProperties.getUserLanguage())); @@ -1779,10 +1760,10 @@ private void setEpidNumberError(TextField epidField, Button assignNewEpidNumberB } } - private boolean shouldShowPaperFormDates() { + private boolean shouldHidePaperFormDates() { return FacadeProvider.getConfigFacade().isConfiguredCountry(CountryHelper.COUNTRY_CODE_FRANCE) - && FacadeProvider.getConfigFacade().isConfiguredCountry(CountryHelper.COUNTRY_CODE_GERMANY) - && FacadeProvider.getConfigFacade().isConfiguredCountry(CountryHelper.COUNTRY_CODE_SWITZERLAND); + || FacadeProvider.getConfigFacade().isConfiguredCountry(CountryHelper.COUNTRY_CODE_GERMANY) + || FacadeProvider.getConfigFacade().isConfiguredCountry(CountryHelper.COUNTRY_CODE_SWITZERLAND); } private static class DiseaseChangeListener implements ValueChangeListener { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java index 220590a3e16..7fbf1a7e121 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java @@ -29,9 +29,9 @@ import de.symeda.sormas.api.sample.SampleCriteria; import de.symeda.sormas.api.task.TaskContext; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.vaccination.VaccinationAssociationType; import de.symeda.sormas.api.vaccination.VaccinationListCriteria; import de.symeda.sormas.ui.ControllerProvider; -import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.caze.messaging.SmsListComponent; import de.symeda.sormas.ui.caze.surveillancereport.SurveillanceReportListComponent; @@ -125,26 +125,21 @@ protected void initView(String params) { if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.SAMPLES_LAB) && UserProvider.getCurrent().hasUserRight(UserRight.SAMPLE_VIEW) && !caze.checkIsUnreferredPortHealthCase()) { - SampleListComponent sampleList = - new SampleListComponent(new SampleCriteria().caze(getCaseRef()).sampleAssociationType(SampleAssociationType.CASE)); - sampleList.addSideComponentCreateEventListener( - e -> showNavigationConfirmPopupIfDirty(() -> ControllerProvider.getSampleController().create(getCaseRef(), caze.getDisease(), () -> { - final CaseDataDto caseDataByUuid = FacadeProvider.getCaseFacade().getCaseDataByUuid(getCaseRef().getUuid()); - FacadeProvider.getCaseFacade().save(caseDataByUuid); - SormasUI.refreshView(); - }))); - + SampleListComponent sampleList = new SampleListComponent( + new SampleCriteria().caze(getCaseRef()).sampleAssociationType(SampleAssociationType.CASE).disease(caze.getDisease()), + this::showUnsavedChangesPopup); SampleListComponentLayout sampleListComponentLayout = new SampleListComponentLayout(sampleList, I18nProperties.getString(Strings.infoCreateNewSampleDiscardsChangesCase)); layout.addSidePanelComponent(sampleListComponentLayout, SAMPLES_LOC); } - if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EVENT_SURVEILLANCE)) { + if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EVENT_SURVEILLANCE) + && UserProvider.getCurrent().hasUserRight(UserRight.EVENT_VIEW)) { VerticalLayout eventLayout = new VerticalLayout(); eventLayout.setMargin(false); eventLayout.setSpacing(false); - EventListComponent eventList = new EventListComponent(getCaseRef()); + EventListComponent eventList = new EventListComponent(getCaseRef(), this::showUnsavedChangesPopup); eventList.addStyleName(CssStyles.SIDE_COMPONENT); eventLayout.addComponent(eventList); layout.addSidePanelComponent(eventLayout, EVENTS_LOC); @@ -156,12 +151,18 @@ protected void initView(String params) { .isPropertyValueTrue(FeatureType.IMMUNIZATION_MANAGEMENT, FeatureTypeProperty.REDUCED)) { final ImmunizationListCriteria immunizationListCriteria = new ImmunizationListCriteria.Builder(caze.getPerson()).wihDisease(caze.getDisease()).build(); - layout.addSidePanelComponent(new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria)), IMMUNIZATION_LOC); + layout.addSidePanelComponent( + new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria, this::showUnsavedChangesPopup)), + IMMUNIZATION_LOC); } else { - VaccinationListCriteria criteria = new VaccinationListCriteria.Builder(caze.getPerson()).withDisease(caze.getDisease()).build(); + VaccinationListCriteria criteria = new VaccinationListCriteria.Builder(caze.getPerson()).withDisease(caze.getDisease()) + .build() + .vaccinationAssociationType(VaccinationAssociationType.CASE) + .caseReference(getCaseRef()) + .region(caze.getResponsibleRegion()) + .district(caze.getResponsibleDistrict()); layout.addSidePanelComponent( - new SideComponentLayout( - new VaccinationListComponent(getCaseRef(), criteria, caze.getResponsibleRegion(), caze.getResponsibleDistrict(), this)), + new SideComponentLayout(new VaccinationListComponent(criteria, this::showUnsavedChangesPopup)), VACCINATIONS_LOC); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseFacilityChangeForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseFacilityChangeForm.java index ba9cbc90b04..039b17e9408 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseFacilityChangeForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseFacilityChangeForm.java @@ -219,10 +219,9 @@ private void updateFacilityFields(ComboBox cbFacility, TextField tfFacilityDetai if (cbFacility.getValue() != null) { boolean otherHealthFacility = ((FacilityReferenceDto) cbFacility.getValue()).getUuid().equals(FacilityDto.OTHER_FACILITY_UUID); boolean noneHealthFacility = ((FacilityReferenceDto) cbFacility.getValue()).getUuid().equals(FacilityDto.NONE_FACILITY_UUID); - boolean visibleAndRequired = otherHealthFacility || noneHealthFacility; + boolean visible = otherHealthFacility || noneHealthFacility; - tfFacilityDetails.setVisible(visibleAndRequired); - tfFacilityDetails.setRequired(visibleAndRequired); + tfFacilityDetails.setVisible(visible); if (otherHealthFacility) { tfFacilityDetails.setCaption(I18nProperties.getPrefixCaption(CaseDataDto.I18N_PREFIX, CaseDataDto.HEALTH_FACILITY_DETAILS)); @@ -230,12 +229,11 @@ private void updateFacilityFields(ComboBox cbFacility, TextField tfFacilityDetai if (noneHealthFacility) { tfFacilityDetails.setCaption(I18nProperties.getCaption(Captions.CaseData_noneHealthFacilityDetails)); } - if (!visibleAndRequired) { + if (!visible) { tfFacilityDetails.clear(); } - } else { + } else if (!TypeOfPlace.HOME.equals(facilityOrHome.getValue())) { tfFacilityDetails.setVisible(false); - tfFacilityDetails.setRequired(false); tfFacilityDetails.clear(); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/MergeCasesGrid.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/MergeCasesGrid.java index 37ae4a877d9..cc49fa8d62c 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/MergeCasesGrid.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/MergeCasesGrid.java @@ -58,6 +58,8 @@ protected void buildColumns() { COLUMN_COMPLETENESS, COLUMN_ACTIONS); + getColumn(COLUMN_ACTIONS).setMinimumWidth(280); + Language userLanguage = I18nProperties.getUserLanguage(); ((Column) getColumn(CaseIndexDto.REPORT_DATE)) .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat(userLanguage))); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/DevModeView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/DevModeView.java index 7749820ffc8..cb5005e1fcb 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/DevModeView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/DevModeView.java @@ -1375,7 +1375,7 @@ private void generateEvents() { } } - FacadeProvider.getEventParticipantFacade().saveEventParticipant(eventParticipant); + FacadeProvider.getEventParticipantFacade().save(eventParticipant); generatedParticipants++; } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/CommunitiesView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/CommunitiesView.java index 3d223d3535f..91a47bcd91c 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/CommunitiesView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/CommunitiesView.java @@ -39,6 +39,7 @@ import de.symeda.sormas.api.infrastructure.InfrastructureType; import de.symeda.sormas.api.infrastructure.community.CommunityCriteria; import de.symeda.sormas.api.infrastructure.community.CommunityDto; +import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto; import de.symeda.sormas.api.infrastructure.district.DistrictDto; import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; @@ -61,13 +62,12 @@ public class CommunitiesView extends AbstractConfigurationView { - private static final long serialVersionUID = -3487830069266335042L; - public static final String VIEW_NAME = ROOT_VIEW_NAME + "/communities"; - + private static final long serialVersionUID = -3487830069266335042L; + protected Button importButton; + protected Button createButton; private CommunityCriteria criteria; private ViewConfiguration viewConfiguration; - // Filter private SearchField searchField; private ComboBox countryFilter; @@ -75,12 +75,9 @@ public class CommunitiesView extends AbstractConfigurationView { private ComboBox districtFilter; private ComboBox relevanceStatusFilter; private Button resetButton; - private HorizontalLayout filterLayout; private VerticalLayout gridLayout; private CommunitiesGrid grid; - protected Button importButton; - protected Button createButton; private MenuBar bulkOperationsDropdown; public CommunitiesView() { @@ -106,7 +103,7 @@ public CommunitiesView() { gridLayout.setStyleName("crud-main-layout"); boolean infrastructureDataEditable = FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EDIT_INFRASTRUCTURE_DATA); - + if (infrastructureDataEditable && UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_IMPORT)) { importButton = ButtonHelper.createIconButton(Captions.actionImport, VaadinIcons.UPLOAD, e -> { Window window = VaadinUiUtil.showPopupWindow(new InfrastructureImportLayout(InfrastructureType.COMMUNITY)); @@ -123,7 +120,6 @@ public CommunitiesView() { addHeaderComponent(infrastructureDataLocked); } - if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_EXPORT)) { Button exportButton = ButtonHelper.createIconButton(Captions.export, VaadinIcons.TABLE, null, ValoTheme.BUTTON_PRIMARY); exportButton.setDescription(I18nProperties.getDescription(Descriptions.descExportButton)); @@ -195,6 +191,15 @@ private HorizontalLayout createFilterBar() { criteria.country(country); grid.reload(); }, regionFilter); + countryFilter.addValueChangeListener(country -> { + CountryReferenceDto countryReferenceDto = (CountryReferenceDto) country.getProperty().getValue(); + criteria.country(countryReferenceDto); + navigateTo(criteria); + FieldHelper.updateItems( + regionFilter, + countryReferenceDto != null ? FacadeProvider.getRegionFacade().getAllActiveByCountry(countryReferenceDto.getUuid()) : null); + + }); regionFilter = ComboBoxHelper.createComboBoxV7(); regionFilter.setId(DistrictDto.REGION); @@ -253,32 +258,40 @@ private HorizontalLayout createFilterBar() { if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) { bulkOperationsDropdown = MenuBarHelper.createDropDown( Captions.bulkActions, - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionArchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - true, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.COMMUNITY, - new Runnable() { - - public void run() { - navigateTo(criteria); - } - }); - }, EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - false, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.COMMUNITY, - new Runnable() { - - public void run() { - navigateTo(criteria); - } - }); - }, EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionArchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + true, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.COMMUNITY, + new Runnable() { + + public void run() { + navigateTo(criteria); + } + }); + }, + EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + false, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.COMMUNITY, + new Runnable() { + + public void run() { + navigateTo(criteria); + } + }); + }, + EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); bulkOperationsDropdown.setVisible(isBulkOperationsDropdownVisible()); actionButtonsLayout.addComponent(bulkOperationsDropdown); @@ -327,7 +340,7 @@ private boolean isBulkOperationsDropdownVisible() { boolean infrastructureDataEditable = FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EDIT_INFRASTRUCTURE_DATA); return viewConfiguration.isInEagerMode() - && (EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus()) + && (EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus()) || (infrastructureDataEditable && EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/DistrictsView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/DistrictsView.java index fb1a3dca08a..dc6584a1660 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/DistrictsView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/DistrictsView.java @@ -37,6 +37,7 @@ import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.infrastructure.InfrastructureType; +import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto; import de.symeda.sormas.api.infrastructure.district.DistrictCriteria; import de.symeda.sormas.api.infrastructure.district.DistrictDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; @@ -50,6 +51,7 @@ import de.symeda.sormas.ui.utils.ComboBoxHelper; import de.symeda.sormas.ui.utils.CssStyles; import de.symeda.sormas.ui.utils.ExportEntityName; +import de.symeda.sormas.ui.utils.FieldHelper; import de.symeda.sormas.ui.utils.GridExportStreamResource; import de.symeda.sormas.ui.utils.MenuBarHelper; import de.symeda.sormas.ui.utils.RowCount; @@ -58,25 +60,21 @@ public class DistrictsView extends AbstractConfigurationView { - private static final long serialVersionUID = -3487830069266335042L; - public static final String VIEW_NAME = ROOT_VIEW_NAME + "/districts"; - + private static final long serialVersionUID = -3487830069266335042L; + protected Button createButton; + protected Button importButton; private DistrictCriteria criteria; private ViewConfiguration viewConfiguration; - // Filter private SearchField searchField; private ComboBox countryFilter; private ComboBox regionFilter; private ComboBox relevanceStatusFilter; private Button resetButton; - private HorizontalLayout filterLayout; private VerticalLayout gridLayout; private DistrictsGrid grid; - protected Button createButton; - protected Button importButton; private MenuBar bulkOperationsDropdown; public DistrictsView() { @@ -102,7 +100,7 @@ public DistrictsView() { gridLayout.setStyleName("crud-main-layout"); boolean infrastructureDataEditable = FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EDIT_INFRASTRUCTURE_DATA); - + if (infrastructureDataEditable && UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_IMPORT)) { importButton = ButtonHelper.createIconButton(Captions.actionImport, VaadinIcons.UPLOAD, e -> { Window window = VaadinUiUtil.showPopupWindow(new InfrastructureImportLayout(InfrastructureType.DISTRICT)); @@ -193,6 +191,15 @@ private HorizontalLayout createFilterBar() { criteria.country(country); grid.reload(); }, regionFilter); + countryFilter.addValueChangeListener(country -> { + CountryReferenceDto countryReferenceDto = (CountryReferenceDto) country.getProperty().getValue(); + criteria.country(countryReferenceDto); + navigateTo(criteria); + FieldHelper.updateItems( + regionFilter, + countryReferenceDto != null ? FacadeProvider.getRegionFacade().getAllActiveByCountry(countryReferenceDto.getUuid()) : null); + + }); regionFilter = ComboBoxHelper.createComboBoxV7(); regionFilter.setId(DistrictDto.REGION); @@ -236,32 +243,40 @@ private HorizontalLayout createFilterBar() { if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) { bulkOperationsDropdown = MenuBarHelper.createDropDown( Captions.bulkActions, - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionArchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - true, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.DISTRICT, - new Runnable() { - - public void run() { - navigateTo(criteria); - } - }); - }, EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - false, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.DISTRICT, - new Runnable() { - - public void run() { - navigateTo(criteria); - } - }); - }, EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionArchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + true, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.DISTRICT, + new Runnable() { + + public void run() { + navigateTo(criteria); + } + }); + }, + EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + false, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.DISTRICT, + new Runnable() { + + public void run() { + navigateTo(criteria); + } + }); + }, + EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); bulkOperationsDropdown.setVisible(isBulkOperationsDropdownVisible()); actionButtonsLayout.addComponent(bulkOperationsDropdown); @@ -309,7 +324,7 @@ private boolean isBulkOperationsDropdownVisible() { boolean infrastructureDataEditable = FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EDIT_INFRASTRUCTURE_DATA); return viewConfiguration.isInEagerMode() - && (EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus()) + && (EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus()) || (infrastructureDataEditable && EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/FacilitiesView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/FacilitiesView.java index e0e5dd18728..f677e800b70 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/FacilitiesView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/FacilitiesView.java @@ -33,17 +33,18 @@ import de.symeda.sormas.api.EntityRelevanceStatus; import de.symeda.sormas.api.FacadeProvider; -import de.symeda.sormas.api.infrastructure.facility.FacilityCriteria; -import de.symeda.sormas.api.infrastructure.facility.FacilityDto; -import de.symeda.sormas.api.infrastructure.facility.FacilityExportDto; -import de.symeda.sormas.api.infrastructure.facility.FacilityType; -import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.infrastructure.InfrastructureType; import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto; +import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto; import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; +import de.symeda.sormas.api.infrastructure.facility.FacilityCriteria; +import de.symeda.sormas.api.infrastructure.facility.FacilityDto; +import de.symeda.sormas.api.infrastructure.facility.FacilityExportDto; +import de.symeda.sormas.api.infrastructure.facility.FacilityType; +import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.ui.ControllerProvider; @@ -66,13 +67,14 @@ public class FacilitiesView extends AbstractConfigurationView { - private static final long serialVersionUID = -2015225571046243640L; - public static final String VIEW_NAME = ROOT_VIEW_NAME + "/facilities"; - + private static final long serialVersionUID = -2015225571046243640L; + protected FacilitiesGrid grid; + protected Button importButton; + protected Button createButton; + protected PopupButton exportPopupButton; private FacilityCriteria criteria; private ViewConfiguration viewConfiguration; - // Filter private SearchField searchField; private ComboBox typeGroupFilter; @@ -83,14 +85,9 @@ public class FacilitiesView extends AbstractConfigurationView { private ComboBox communityFilter; private ComboBox relevanceStatusFilter; private Button resetButton; - // private HorizontalLayout headerLayout; private HorizontalLayout filterLayout; private VerticalLayout gridLayout; - protected FacilitiesGrid grid; - protected Button importButton; - protected Button createButton; - protected PopupButton exportPopupButton; private MenuBar bulkOperationsDropdown; private RowCount rowCount; @@ -270,6 +267,15 @@ private HorizontalLayout createFilterBar() { grid.reload(); rowCount.update(grid.getItemCount()); }, regionFilter); + countryFilter.addValueChangeListener(country -> { + CountryReferenceDto countryReferenceDto = (CountryReferenceDto) country.getProperty().getValue(); + criteria.country(countryReferenceDto); + navigateTo(criteria); + FieldHelper.updateItems( + regionFilter, + countryReferenceDto != null ? FacadeProvider.getRegionFacade().getAllActiveByCountry(countryReferenceDto.getUuid()) : null); + + }); regionFilter = ComboBoxHelper.createComboBoxV7(); regionFilter.setId(FacilityDto.REGION); @@ -343,32 +349,40 @@ private HorizontalLayout createFilterBar() { if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) { bulkOperationsDropdown = MenuBarHelper.createDropDown( Captions.bulkActions, - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionArchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - true, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.FACILITY, - new Runnable() { - - public void run() { - navigateTo(criteria); - } - }); - }, EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - false, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.FACILITY, - new Runnable() { - - public void run() { - navigateTo(criteria); - } - }); - }, EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionArchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + true, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.FACILITY, + new Runnable() { + + public void run() { + navigateTo(criteria); + } + }); + }, + EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + false, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.FACILITY, + new Runnable() { + + public void run() { + navigateTo(criteria); + } + }); + }, + EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); bulkOperationsDropdown .setVisible(viewConfiguration.isInEagerMode() && !EntityRelevanceStatus.ALL.equals(criteria.getRelevanceStatus())); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/PointsOfEntryView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/PointsOfEntryView.java index 026e36c8bf6..bb23aaa72a4 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/PointsOfEntryView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/infrastructure/PointsOfEntryView.java @@ -35,10 +35,11 @@ import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.infrastructure.InfrastructureType; +import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto; +import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.pointofentry.PointOfEntryCriteria; import de.symeda.sormas.api.infrastructure.pointofentry.PointOfEntryDto; import de.symeda.sormas.api.infrastructure.pointofentry.PointOfEntryType; -import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.DataHelper; @@ -60,13 +61,13 @@ public class PointsOfEntryView extends AbstractConfigurationView { - private static final long serialVersionUID = 169878675780777319L; - public static final String VIEW_NAME = ROOT_VIEW_NAME + "/pointsofentry"; - + private static final long serialVersionUID = 169878675780777319L; + protected PointsOfEntryGrid grid; + protected Button createButton; + protected Button exportButton; private PointOfEntryCriteria criteria; private ViewConfiguration viewConfiguration; - // Filters private SearchField searchField; private ComboBox countryFilter; @@ -76,12 +77,8 @@ public class PointsOfEntryView extends AbstractConfigurationView { private ComboBox activeFilter; private ComboBox relevanceStatusFilter; private Button resetButton; - private HorizontalLayout filterLayout; private VerticalLayout gridLayout; - protected PointsOfEntryGrid grid; - protected Button createButton; - protected Button exportButton; private MenuBar bulkOperationsDropdown; public PointsOfEntryView() { @@ -190,6 +187,15 @@ private HorizontalLayout createFilterBar() { criteria.country(country); grid.reload(); }, regionFilter); + countryFilter.addValueChangeListener(country -> { + CountryReferenceDto countryReferenceDto = (CountryReferenceDto) country.getProperty().getValue(); + criteria.country(countryReferenceDto); + navigateTo(criteria); + FieldHelper.updateItems( + regionFilter, + countryReferenceDto != null ? FacadeProvider.getRegionFacade().getAllActiveByCountry(countryReferenceDto.getUuid()) : null); + + }); regionFilter = ComboBoxHelper.createComboBoxV7(); regionFilter.setId(PointOfEntryDto.REGION); @@ -273,22 +279,30 @@ private HorizontalLayout createFilterBar() { if (UserProvider.getCurrent().hasUserRight(UserRight.PERFORM_BULK_OPERATIONS)) { bulkOperationsDropdown = MenuBarHelper.createDropDown( Captions.bulkActions, - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionArchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - true, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.POINT_OF_ENTRY, - () -> navigateTo(criteria)); - }, EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), - new MenuBarHelper.MenuBarItem(I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), VaadinIcons.ARCHIVE, selectedItem -> { - ControllerProvider.getInfrastructureController() - .archiveOrDearchiveAllSelectedItems( - false, - grid.asMultiSelect().getSelectedItems(), - InfrastructureType.POINT_OF_ENTRY, - () -> navigateTo(criteria)); - }, EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionArchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + true, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.POINT_OF_ENTRY, + () -> navigateTo(criteria)); + }, + EntityRelevanceStatus.ACTIVE.equals(criteria.getRelevanceStatus())), + new MenuBarHelper.MenuBarItem( + I18nProperties.getCaption(Captions.actionDearchiveInfrastructure), + VaadinIcons.ARCHIVE, + selectedItem -> { + ControllerProvider.getInfrastructureController() + .archiveOrDearchiveAllSelectedItems( + false, + grid.asMultiSelect().getSelectedItems(), + InfrastructureType.POINT_OF_ENTRY, + () -> navigateTo(criteria)); + }, + EntityRelevanceStatus.ARCHIVED.equals(criteria.getRelevanceStatus()))); bulkOperationsDropdown .setVisible(viewConfiguration.isInEagerMode() && !EntityRelevanceStatus.ALL.equals(criteria.getRelevanceStatus())); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java index 2f4e88c3443..ca6d6de1ba4 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java @@ -20,12 +20,15 @@ import java.util.Arrays; import java.util.Collections; +import java.util.Date; +import java.util.List; import com.google.common.collect.Sets; import com.vaadin.shared.ui.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.Label; import com.vaadin.ui.themes.ValoTheme; +import com.vaadin.v7.ui.AbstractField; import com.vaadin.v7.ui.CheckBox; import com.vaadin.v7.ui.ComboBox; import com.vaadin.v7.ui.DateField; @@ -150,6 +153,13 @@ protected void addFields() { firstContactDate.addValueChangeListener(event -> lastContactDate.setRequired(event.getProperty().getValue() != null)); multiDayContact.addValueChangeListener(event -> updateDateComparison()); + List> validatedFields = Arrays.asList(firstContactDate, lastContactDate, reportDate); + validatedFields.forEach(field -> field.addValueChangeListener(r -> { + validatedFields.forEach(otherField -> { + otherField.setValidationVisible(!otherField.isValid()); + }); + })); + FieldHelper .setVisibleWhen(getFieldGroup(), ContactDto.FIRST_CONTACT_DATE, ContactDto.MULTI_DAY_CONTACT, Collections.singletonList(true), true); updateDateComparison(); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java index e384914569b..9d79986e3eb 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java @@ -43,6 +43,7 @@ import com.vaadin.v7.data.util.converter.Converter; import com.vaadin.v7.data.validator.DateRangeValidator; import com.vaadin.v7.shared.ui.datefield.Resolution; +import com.vaadin.v7.ui.AbstractField; import com.vaadin.v7.ui.CheckBox; import com.vaadin.v7.ui.ComboBox; import com.vaadin.v7.ui.DateField; @@ -105,7 +106,7 @@ public class ContactDataForm extends AbstractEditForm { private static final String CONTACT_DATA_HEADING_LOC = "contactDataHeadingLoc"; private static final String FOLLOW_UP_STATUS_HEADING_LOC = "followUpStatusHeadingLoc"; - private static final String TO_CASE_BTN_LOC = "toCaseBtnLoc"; + protected static final String TO_CASE_BTN_LOC = "toCaseBtnLoc"; private static final String CANCEL_OR_RESUME_FOLLOW_UP_BTN_LOC = "cancelOrResumeFollowUpBtnLoc"; private static final String LOST_FOLLOW_UP_BTN_LOC = "lostFollowUpBtnLoc"; private static final String GENERAL_COMMENT_LOC = "generalCommentLoc"; @@ -187,6 +188,7 @@ public class ContactDataForm extends AbstractEditForm { private DateField firstContactDate; private DateField lastContactDate; private DateField reportDate; + private Button toCaseButton; public ContactDataForm(Disease disease, ViewMode viewMode, boolean isPseudonymized) { super( @@ -201,6 +203,10 @@ public ContactDataForm(Disease disease, ViewMode viewMode, boolean isPseudonymiz addFields(); } + public Button getToCaseButton() { + return toCaseButton; + } + @SuppressWarnings("deprecation") @Override protected void addFields() { @@ -234,6 +240,13 @@ protected void addFields() { lastContactDate = addField(ContactDto.LAST_CONTACT_DATE, DateField.class); reportDate = addField(ContactDto.REPORT_DATE_TIME, DateField.class); + List> validatedFields = Arrays.asList(firstContactDate, lastContactDate, reportDate); + validatedFields.forEach(field -> field.addValueChangeListener(r -> { + validatedFields.forEach(otherField -> { + otherField.setValidationVisible(!otherField.isValid()); + }); + })); + FieldHelper .setVisibleWhen(getFieldGroup(), ContactDto.FIRST_CONTACT_DATE, ContactDto.MULTI_DAY_CONTACT, Collections.singletonList(true), true); initContactDateValidation(); @@ -610,16 +623,8 @@ protected void addFields() { getContent().addComponent(linkToData, TO_CASE_BTN_LOC); } else if (!ContactClassification.NO_CONTACT.equals(getValue().getContactClassification())) { if (UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_CONVERT)) { - Button toCaseButton = ButtonHelper.createButton(Captions.contactCreateContactCase, event -> { - if (!ContactClassification.CONFIRMED.equals(getValue().getContactClassification())) { - VaadinUiUtil.showSimplePopupWindow( - I18nProperties.getString(Strings.headingContactConfirmationRequired), - I18nProperties.getString(Strings.messageContactToCaseConfirmationRequired)); - } else { - ControllerProvider.getCaseController().createFromContact(getValue()); - } - }, ValoTheme.BUTTON_LINK); - + toCaseButton = ButtonHelper.createButton(Captions.contactCreateContactCase); + toCaseButton.addStyleName(ValoTheme.BUTTON_LINK); getContent().addComponent(toCaseButton, TO_CASE_BTN_LOC); } } @@ -1017,7 +1022,7 @@ private void updateDateComparison() { public void setValue(ContactDto newFieldValue) throws ReadOnlyException, Converter.ConversionException { super.setValue(newFieldValue); - FollowUpPeriodDto followUpPeriodDto = FacadeProvider.getContactFacade().calculateFollowUpUntilDate(newFieldValue, true); + FollowUpPeriodDto followUpPeriodDto = FacadeProvider.getContactFacade().getCalculatedFollowUpUntilDate(newFieldValue, true); tfExpectedFollowUpUntilDate.setValue(DateHelper.formatLocalDate(followUpPeriodDto.getFollowUpEndDate(), I18nProperties.getUserLanguage())); tfExpectedFollowUpUntilDate.setReadOnly(true); tfExpectedFollowUpUntilDate.setDescription( diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java index d457540f292..20129890c35 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java @@ -15,6 +15,7 @@ package de.symeda.sormas.ui.contact; import com.vaadin.server.Page; +import com.vaadin.shared.ui.ContentMode; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; @@ -27,7 +28,9 @@ import de.symeda.sormas.api.EditPermissionType; import de.symeda.sormas.api.FacadeProvider; import de.symeda.sormas.api.caze.CaseDataDto; +import de.symeda.sormas.api.contact.ContactClassification; import de.symeda.sormas.api.contact.ContactDto; +import de.symeda.sormas.api.contact.ContactLogic; import de.symeda.sormas.api.document.DocumentRelatedEntityType; import de.symeda.sormas.api.feature.FeatureType; import de.symeda.sormas.api.feature.FeatureTypeProperty; @@ -39,9 +42,10 @@ import de.symeda.sormas.api.sample.SampleCriteria; import de.symeda.sormas.api.task.TaskContext; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.utils.FieldConstraints; +import de.symeda.sormas.api.vaccination.VaccinationAssociationType; import de.symeda.sormas.api.vaccination.VaccinationListCriteria; import de.symeda.sormas.ui.ControllerProvider; -import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.caze.CaseInfoLayout; import de.symeda.sormas.ui.docgeneration.QuarantineOrderDocumentsComponent; @@ -96,6 +100,8 @@ protected void initView(String params) { editComponent = ControllerProvider.getContactController() .getContactDataEditComponent(getContactRef().getUuid(), ViewMode.NORMAL, contactDto.isPseudonymized()); + addCreateFromCaseButtonLogic(); + DetailSubComponentWrapper container = new DetailSubComponentWrapper(() -> editComponent); container.setWidth(100, Unit.PERCENTAGE); container.setMargin(true); @@ -207,18 +213,9 @@ protected void initView(String params) { } if (UserProvider.getCurrent().hasUserRight(UserRight.SAMPLE_VIEW)) { - SampleListComponent sampleList = - new SampleListComponent(new SampleCriteria().contact(getContactRef()).sampleAssociationType(SampleAssociationType.CONTACT)); - sampleList.addSideComponentCreateEventListener( - e -> showNavigationConfirmPopupIfDirty( - () -> ControllerProvider.getSampleController().create(getContactRef(), contactDto.getDisease(), () -> { - if (UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_EDIT)) { - final ContactDto contactByUuid = FacadeProvider.getContactFacade().getByUuid(getContactRef().getUuid()); - FacadeProvider.getContactFacade().save(contactByUuid); - } - SormasUI.refreshView(); - }))); - + SampleListComponent sampleList = new SampleListComponent( + new SampleCriteria().contact(getContactRef()).disease(contactDto.getDisease()).sampleAssociationType(SampleAssociationType.CONTACT), + this::showUnsavedChangesPopup); SampleListComponentLayout sampleListComponentLayout = new SampleListComponentLayout(sampleList, I18nProperties.getString(Strings.infoCreateNewSampleDiscardsChangesContact)); layout.addSidePanelComponent(sampleListComponentLayout, SAMPLES_LOC); @@ -230,7 +227,7 @@ protected void initView(String params) { eventsLayout.setMargin(false); eventsLayout.setSpacing(false); - EventListComponent eventList = new EventListComponent(getContactRef()); + EventListComponent eventList = new EventListComponent(getContactRef(), this::showUnsavedChangesPopup); eventList.addStyleName(CssStyles.SIDE_COMPONENT); eventsLayout.addComponent(eventList); @@ -243,18 +240,18 @@ protected void initView(String params) { .isPropertyValueTrue(FeatureType.IMMUNIZATION_MANAGEMENT, FeatureTypeProperty.REDUCED)) { final ImmunizationListCriteria immunizationListCriteria = new ImmunizationListCriteria.Builder(contactDto.getPerson()).wihDisease(contactDto.getDisease()).build(); - layout.addSidePanelComponent(new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria)), IMMUNIZATION_LOC); + layout.addSidePanelComponent( + new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria, this::showUnsavedChangesPopup)), + IMMUNIZATION_LOC); } else { - VaccinationListCriteria criteria = - new VaccinationListCriteria.Builder(contactDto.getPerson()).withDisease(contactDto.getDisease()).build(); + VaccinationListCriteria criteria = new VaccinationListCriteria.Builder(contactDto.getPerson()).withDisease(contactDto.getDisease()) + .build() + .vaccinationAssociationType(VaccinationAssociationType.CONTACT) + .contactReference(getContactRef()) + .region(contactDto.getRegion() != null ? contactDto.getRegion() : caseDto.getResponsibleRegion()) + .district(contactDto.getDistrict() != null ? contactDto.getDistrict() : caseDto.getResponsibleDistrict()); layout.addSidePanelComponent( - new SideComponentLayout( - new VaccinationListComponent( - getContactRef(), - criteria, - contactDto.getRegion() != null ? contactDto.getRegion() : caseDto.getResponsibleRegion(), - contactDto.getDistrict() != null ? contactDto.getDistrict() : caseDto.getResponsibleDistrict(), - this)), + new SideComponentLayout(new VaccinationListComponent(criteria, this::showUnsavedChangesPopup)), VACCINATIONS_LOC); } } @@ -290,6 +287,67 @@ protected void initView(String params) { } } + private void addCreateFromCaseButtonLogic() { + ContactDataForm contactDataForm = editComponent.getWrappedComponent(); + + if (contactDataForm.getValue().getResultingCase() == null) { + if (!ContactClassification.NO_CONTACT.equals(contactDataForm.getValue().getContactClassification())) { + if (UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_CONVERT)) { + contactDataForm.getToCaseButton().addClickListener(event -> { + if (!ContactClassification.CONFIRMED.equals(contactDataForm.getValue().getContactClassification())) { + VaadinUiUtil.showSimplePopupWindow( + I18nProperties.getString(Strings.headingContactConfirmationRequired), + I18nProperties.getString(Strings.messageContactToCaseConfirmationRequired)); + } else { + if (contactDataForm.getValue().getFollowUpComment() != null) { + int finalFollowUpCommentLenght = + ContactLogic + .extendFollowUpStatusComment( + contactDataForm.getValue().getFollowUpComment(), + I18nProperties.getString(Strings.messageSystemFollowUpCanceled)) + .length(); + if (finalFollowUpCommentLenght > FieldConstraints.CHARACTER_LIMIT_BIG) { + VerticalLayout verticalLayout = new VerticalLayout(); + Label contentLabel = new Label( + String.format( + I18nProperties.getString(Strings.messageContactConversionFollowUpCommentLarge), + I18nProperties.getString(Strings.messageSystemFollowUpCanceled)), + ContentMode.HTML); + contentLabel.setWidth(100, Unit.PERCENTAGE); + verticalLayout.addComponent(contentLabel); + verticalLayout.setMargin(false); + + VaadinUiUtil.showConfirmationPopup( + I18nProperties.getString(Strings.headingContactConversionFollowUpCommentLarge), + verticalLayout, + I18nProperties.getString(Strings.messageContactConversionFollowUpCommentLargeOmitMessage), + I18nProperties.getString(Strings.messageContactConversionFollowUpCommentLargeAdjustComment), + confirm -> { + if (Boolean.TRUE.equals(confirm)) { + createFromContactWithCheckChanges(contactDataForm); + } + }); + } else { + createFromContactWithCheckChanges(contactDataForm); + } + } else { + createFromContactWithCheckChanges(contactDataForm); + } + } + }); + } + } + } + } + + private void createFromContactWithCheckChanges(ContactDataForm contactDataForm) { + if (editComponent.isModified()) { + showUnsavedChangesPopup(() -> ControllerProvider.getCaseController().createFromContact(contactDataForm.getValue())); + } else { + ControllerProvider.getCaseController().createFromContact(contactDataForm.getValue()); + } + } + private CaseInfoLayout createCaseInfoLayout(String caseUuid) { return createCaseInfoLayout(FacadeProvider.getCaseFacade().getByUuid(caseUuid)); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactListComponent.java index df6f6a4860b..e4d0dadca43 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactListComponent.java @@ -17,6 +17,8 @@ *******************************************************************************/ package de.symeda.sormas.ui.contact; +import java.util.function.Consumer; + import com.vaadin.icons.VaadinIcons; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; @@ -43,7 +45,7 @@ public class ContactListComponent extends VerticalLayout { private final ContactList list; - public ContactListComponent(EventParticipantReferenceDto eventParticipantRef) { + public ContactListComponent(EventParticipantReferenceDto eventParticipantRef, Consumer actionCallback) { HorizontalLayout componentHeader = new HorizontalLayout(); componentHeader.setMargin(false); componentHeader.setSpacing(false); @@ -80,7 +82,7 @@ public ContactListComponent(EventParticipantReferenceDto eventParticipantRef) { Button createButton = ButtonHelper.createButton(I18nProperties.getCaption(Captions.contactNewContact)); createButton.addStyleName(ValoTheme.BUTTON_PRIMARY); createButton.setIcon(VaadinIcons.PLUS_CIRCLE); - createButton.addClickListener(e -> ControllerProvider.getContactController().create(eventParticipantRef)); + createButton.addClickListener(e -> actionCallback.accept(() -> ControllerProvider.getContactController().create(eventParticipantRef))); componentHeader.addComponent(createButton); componentHeader.setComponentAlignment(createButton, Alignment.MIDDLE_RIGHT); } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/MergeContactsGrid.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/MergeContactsGrid.java index 375cce40218..b844c72adf7 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/MergeContactsGrid.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/MergeContactsGrid.java @@ -57,6 +57,8 @@ protected void buildColumns() { COLUMN_COMPLETENESS, COLUMN_ACTIONS); + getColumn(COLUMN_ACTIONS).setMinimumWidth(280); + Language userLanguage = I18nProperties.getUserLanguage(); ((Column) getColumn(MergeContactIndexDto.REPORT_DATE_TIME)) .setRenderer(new DateRenderer(DateHelper.getLocalDateTimeFormat(userLanguage))); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/SourceContactListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/SourceContactListComponent.java index 50f6f4a8703..d0999625ffd 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/SourceContactListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/SourceContactListComponent.java @@ -76,8 +76,7 @@ private void createSourceContactListComponent(SourceContactList sourceContactLis Button createButton = ButtonHelper.createIconButton( Captions.contactNewContact, VaadinIcons.PLUS_CIRCLE, - e -> view.showNavigationConfirmPopupIfDirty( - () -> ControllerProvider.getContactController().create(caseReference, true, SormasUI::refreshView)), + e -> view.showUnsavedChangesPopup(() -> ControllerProvider.getContactController().create(caseReference, true, SormasUI::refreshView)), ValoTheme.BUTTON_PRIMARY); componentHeader.addComponent(createButton); componentHeader.setComponentAlignment(createButton, Alignment.MIDDLE_RIGHT); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/DashboardDataProvider.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/DashboardDataProvider.java index ed0226e3c49..f451f188320 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/DashboardDataProvider.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/DashboardDataProvider.java @@ -204,7 +204,7 @@ private void refreshDataForSelectedDisease() { setPreviousCases(FacadeProvider.getDashboardFacade().getCases(dashboardCriteria)); if (getDashboardType() != DashboardType.CONTACTS) { - setTestResultCountByResultType(FacadeProvider.getDashboardFacade().getTestResultCountByResultType(getCases())); + setTestResultCountByResultType(FacadeProvider.getDashboardFacade().getTestResultCountByResultType(dashboardCriteria)); } dashboardCriteria.dateBetween(fromDate, toDate).includeNotACaseClassification(true); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/contacts/ContactsDashboardStatisticsComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/contacts/ContactsDashboardStatisticsComponent.java index 7c8184025f1..8f19a2a8232 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/contacts/ContactsDashboardStatisticsComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/contacts/ContactsDashboardStatisticsComponent.java @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.EnumMap; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/CaseEpiDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/CaseEpiDataView.java index a2793f67096..8fb35a4a196 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/CaseEpiDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/CaseEpiDataView.java @@ -122,7 +122,9 @@ protected void initView(String params) { && currentUser != null && currentUser.hasUserRight(UserRight.TRAVEL_ENTRY_VIEW)) { TravelEntryListCriteria travelEntryListCriteria = new TravelEntryListCriteria.Builder().withCase(getCaseRef()).build(); - layout.addComponent(new SideComponentLayout(new TravelEntryListComponent(travelEntryListCriteria)), TRAVEL_ENTRIES_LOC); + layout.addComponent( + new SideComponentLayout(new TravelEntryListComponent(travelEntryListCriteria, this::showUnsavedChangesPopup)), + TRAVEL_ENTRIES_LOC); } setCaseEditPermission(container); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventController.java index 01edcb8fd45..3cfd4ce851b 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventController.java @@ -290,7 +290,7 @@ private void linkCasesToEvent(EventReferenceDto eventReferenceDto, List editComponent.discard()); + SuperordinateEventComponent superordinateEventComponent = new SuperordinateEventComponent(event, this::showUnsavedChangesPopup); superordinateEventComponent.addStyleName(CssStyles.SIDE_COMPONENT); layout.addSidePanelComponent(superordinateEventComponent, SUPERORDINATE_EVENT_LOC); - EventListComponent subordinateEventList = new EventListComponent(event.toReference()); + EventListComponent subordinateEventList = new EventListComponent(event.toReference(), this::showUnsavedChangesPopup); subordinateEventList.addStyleName(CssStyles.SIDE_COMPONENT); layout.addSidePanelComponent(subordinateEventList, SUBORDINATE_EVENTS_LOC); } boolean eventGroupsFeatureEnabled = FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.EVENT_GROUPS); if (eventGroupsFeatureEnabled) { - EventReferenceDto eventReference = event.toReference(); - EventGroupListComponent eventGroupsList = new EventGroupListComponent(eventReference); - eventGroupsList.addSideComponentCreateEventListener(e -> showNavigationConfirmPopupIfDirty(() -> { - EventDto eventByUuid = FacadeProvider.getEventFacade().getEventByUuid(eventReference.getUuid(), false); - UserProvider user = UserProvider.getCurrent(); - if (!user.hasNationJurisdictionLevel() && !user.hasRegion(eventByUuid.getEventLocation().getRegion())) { - new Notification( - I18nProperties.getString(Strings.headingEventGroupLinkEventIssue), - I18nProperties.getString(Strings.errorEventFromAnotherJurisdiction), - Notification.Type.ERROR_MESSAGE, - false).show(Page.getCurrent()); - return; - } - - EventGroupCriteria eventGroupCriteria = new EventGroupCriteria(); - Set eventGroupUuids = FacadeProvider.getEventGroupFacade() - .getCommonEventGroupsByEvents(Collections.singletonList(eventByUuid.toReference())) - .stream() - .map(EventGroupReferenceDto::getUuid) - .collect(Collectors.toSet()); - eventGroupCriteria.setExcludedUuids(eventGroupUuids); - if (user.hasUserRight(UserRight.EVENTGROUP_CREATE) && user.hasUserRight(UserRight.EVENTGROUP_LINK)) { - long events = FacadeProvider.getEventGroupFacade().count(eventGroupCriteria); - if (events > 0) { - ControllerProvider.getEventGroupController().selectOrCreate(eventReference); - } else { - ControllerProvider.getEventGroupController().create(eventReference); - } - } else if (user.hasUserRight(UserRight.EVENTGROUP_CREATE)) { - ControllerProvider.getEventGroupController().create(eventReference); - } else { - long events = FacadeProvider.getEventGroupFacade().count(eventGroupCriteria); - if (events > 0) { - ControllerProvider.getEventGroupController().select(eventReference); - } else { - new Notification( - I18nProperties.getString(Strings.headingEventGroupLinkEventIssue), - I18nProperties.getString(Strings.errorNotRequiredRights), - Notification.Type.ERROR_MESSAGE, - false).show(Page.getCurrent()); - } - } - })); - layout.addSidePanelComponent(new SideComponentLayout(eventGroupsList), EVENT_GROUPS_LOC); + layout.addSidePanelComponent( + new SideComponentLayout(new EventGroupListComponent(event.toReference(), this::showUnsavedChangesPopup)), + EVENT_GROUPS_LOC); } boolean sormasToSormasEnabled = FacadeProvider.getSormasToSormasFacade().isSharingEventsEnabledForUser(); @@ -254,6 +203,10 @@ protected void initView(String params) { layout.addSidePanelComponent(shortcutLinksLayout, SHORTCUT_LINKS_LOC); + if (!UserProvider.getCurrent().hasUserRight(UserRight.EVENT_EDIT)) { + layout.setEnabled(false); + } + EditPermissionType eventEditAllowed = FacadeProvider.getEventFacade().isEventEditAllowed(event.getUuid()); if (eventEditAllowed == EditPermissionType.ARCHIVING_STATUS_ONLY) { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupController.java index de16ab55357..ec03847e4b7 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupController.java @@ -29,9 +29,11 @@ import com.vaadin.ui.Label; import com.vaadin.ui.Notification; import com.vaadin.ui.Notification.Type; +import com.vaadin.ui.UI; import com.vaadin.ui.themes.ValoTheme; import de.symeda.sormas.api.FacadeProvider; +import de.symeda.sormas.api.event.EventDto; import de.symeda.sormas.api.event.EventGroupCriteria; import de.symeda.sormas.api.event.EventGroupDto; import de.symeda.sormas.api.event.EventGroupFacade; @@ -45,6 +47,7 @@ import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.DataHelper; +import de.symeda.sormas.ui.ControllerProvider; import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.events.groups.EventGroupSelectionField; @@ -55,8 +58,47 @@ public class EventGroupController { - public EventGroupDto create(EventReferenceDto event) { - return create(Collections.singletonList(event), null); + public void create(EventReferenceDto eventReference) { + + EventDto eventByUuid = FacadeProvider.getEventFacade().getEventByUuid(eventReference.getUuid(), false); + UserProvider user = UserProvider.getCurrent(); + if (!user.hasNationJurisdictionLevel() && !user.hasRegion(eventByUuid.getEventLocation().getRegion())) { + new Notification( + I18nProperties.getString(Strings.headingEventGroupLinkEventIssue), + I18nProperties.getString(Strings.errorEventFromAnotherJurisdiction), + Notification.Type.ERROR_MESSAGE, + false).show(Page.getCurrent()); + return; + } + + EventGroupCriteria eventGroupCriteria = new EventGroupCriteria(); + Set eventGroupUuids = FacadeProvider.getEventGroupFacade() + .getCommonEventGroupsByEvents(Collections.singletonList(eventByUuid.toReference())) + .stream() + .map(EventGroupReferenceDto::getUuid) + .collect(Collectors.toSet()); + eventGroupCriteria.setExcludedUuids(eventGroupUuids); + if (user.hasUserRight(UserRight.EVENTGROUP_CREATE) && user.hasUserRight(UserRight.EVENTGROUP_LINK)) { + long events = FacadeProvider.getEventGroupFacade().count(eventGroupCriteria); + if (events > 0) { + ControllerProvider.getEventGroupController().selectOrCreate(eventReference); + } else { + ControllerProvider.getEventGroupController().create(Collections.singletonList(eventReference), null); + } + } else if (user.hasUserRight(UserRight.EVENTGROUP_CREATE)) { + ControllerProvider.getEventGroupController().create(Collections.singletonList(eventReference), null); + } else { + long events = FacadeProvider.getEventGroupFacade().count(eventGroupCriteria); + if (events > 0) { + ControllerProvider.getEventGroupController().select(eventReference); + } else { + new Notification( + I18nProperties.getString(Strings.headingEventGroupLinkEventIssue), + I18nProperties.getString(Strings.errorNotRequiredRights), + Notification.Type.ERROR_MESSAGE, + false).show(Page.getCurrent()); + } + } } public EventGroupDto create(List events, Runnable callback) { @@ -202,13 +244,12 @@ public CommitDiscardWrapperComponent getEventGroupEditComponent(String uuid) }); } - // TODO #8851: Enable temporarily removed button when EventGroup deletion works -// if (user.hasUserRight(UserRight.EVENTGROUP_DELETE) && hasRegion) { -// editView.addDeleteListener(() -> { -// deleteEventGroup(eventGroup); -// UI.getCurrent().getNavigator().navigateTo(EventsView.VIEW_NAME); -// }, I18nProperties.getString(Strings.entityEventGroup)); -// } + if (user.hasUserRight(UserRight.EVENTGROUP_DELETE) && hasRegion) { + editView.addDeleteListener(() -> { + deleteEventGroup(eventGroup); + UI.getCurrent().getNavigator().navigateTo(EventsView.VIEW_NAME); + }, I18nProperties.getString(Strings.entityEventGroup)); + } // Initialize 'Archive' button if (user.hasUserRight(UserRight.EVENTGROUP_ARCHIVE) && hasRegion) { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupDataView.java index a1840246a72..331f6c9ef60 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventGroupDataView.java @@ -23,8 +23,10 @@ import de.symeda.sormas.api.event.EventGroupReferenceDto; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.ui.ControllerProvider; import de.symeda.sormas.ui.SubMenu; +import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.events.groups.EventGroupMemberList; import de.symeda.sormas.ui.events.groups.EventGroupMemberListComponent; import de.symeda.sormas.ui.utils.AbstractDetailView; @@ -89,6 +91,10 @@ protected void initView(String params) { EventGroupMemberListComponent eventGroupMemberListComponent = new EventGroupMemberListComponent(getReference()); layout.addComponent(eventGroupMemberListComponent, EVENTS_LOC); CssStyles.style(eventGroupMemberListComponent, CssStyles.VSPACE_TOP_2); + + if(!UserProvider.getCurrent().hasUserRight(UserRight.EVENTGROUP_EDIT)){ + layout.setEnabled(false); + } } @Override diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantDataView.java index 3cce5606abe..1cf19cd8da2 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantDataView.java @@ -34,9 +34,9 @@ import de.symeda.sormas.api.sample.SampleAssociationType; import de.symeda.sormas.api.sample.SampleCriteria; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.api.vaccination.VaccinationAssociationType; import de.symeda.sormas.api.vaccination.VaccinationListCriteria; import de.symeda.sormas.ui.ControllerProvider; -import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.SubMenu; import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.contact.ContactListComponent; @@ -119,8 +119,14 @@ protected void initView(String params) { container.setMargin(true); setSubComponent(container); - LayoutWithSidePanel layout = - new LayoutWithSidePanel(editComponent, SAMPLES_LOC, CONTACTS_LOC, IMMUNIZATION_LOC, VACCINATIONS_LOC, QUARANTINE_LOC, SORMAS_TO_SORMAS_LOC); + LayoutWithSidePanel layout = new LayoutWithSidePanel( + editComponent, + SAMPLES_LOC, + CONTACTS_LOC, + IMMUNIZATION_LOC, + VACCINATIONS_LOC, + QUARANTINE_LOC, + SORMAS_TO_SORMAS_LOC); container.addComponent(layout); @@ -128,11 +134,11 @@ protected void initView(String params) { SampleCriteria sampleCriteria = new SampleCriteria().eventParticipant(eventParticipantRef); if (UserProvider.getCurrent().hasUserRight(UserRight.SAMPLE_VIEW)) { - SampleListComponent sampleList = new SampleListComponent(sampleCriteria.sampleAssociationType(SampleAssociationType.EVENT_PARTICIPANT)); - sampleList.addSideComponentCreateEventListener( - e -> showNavigationConfirmPopupIfDirty( - () -> ControllerProvider.getSampleController().create(eventParticipantRef, event.getDisease(), SormasUI::refreshView))); - + SampleListComponent sampleList = new SampleListComponent( + sampleCriteria.eventParticipant(eventParticipantRef) + .disease(event.getDisease()) + .sampleAssociationType(SampleAssociationType.EVENT_PARTICIPANT), + this::showUnsavedChangesPopup); SampleListComponentLayout sampleListComponentLayout = new SampleListComponentLayout(sampleList, I18nProperties.getString(Strings.infoCreateNewSampleDiscardsChangesEventParticipant)); layout.addSidePanelComponent(sampleListComponentLayout, SAMPLES_LOC); @@ -143,7 +149,7 @@ protected void initView(String params) { contactsLayout.setMargin(false); contactsLayout.setSpacing(false); - ContactListComponent contactList = new ContactListComponent(eventParticipantRef); + ContactListComponent contactList = new ContactListComponent(eventParticipantRef, this::showUnsavedChangesPopup); contactList.addStyleName(CssStyles.SIDE_COMPONENT); contactsLayout.addComponent(contactList); @@ -179,17 +185,16 @@ protected void initView(String params) { .isPropertyValueTrue(FeatureType.IMMUNIZATION_MANAGEMENT, FeatureTypeProperty.REDUCED)) { final ImmunizationListCriteria immunizationListCriteria = new ImmunizationListCriteria.Builder(eventParticipant.getPerson().toReference()).wihDisease(event.getDisease()).build(); - layout.addSidePanelComponent(new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria)), IMMUNIZATION_LOC); + layout.addSidePanelComponent( + new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria, this::showUnsavedChangesPopup)), + IMMUNIZATION_LOC); } else { - VaccinationListCriteria criteria = vaccinationCriteria; + VaccinationListCriteria criteria = vaccinationCriteria.vaccinationAssociationType(VaccinationAssociationType.EVENT_PARTICIPANT) + .eventParticipantReference(getReference()) + .region(eventParticipant.getRegion() != null ? eventParticipant.getRegion() : event.getEventLocation().getRegion()) + .district(eventParticipant.getDistrict() != null ? eventParticipant.getDistrict() : event.getEventLocation().getDistrict()); layout.addSidePanelComponent( - new SideComponentLayout( - new VaccinationListComponent( - getReference(), - criteria, - eventParticipant.getRegion() != null ? eventParticipant.getRegion() : event.getEventLocation().getRegion(), - eventParticipant.getDistrict() != null ? eventParticipant.getDistrict() : event.getEventLocation().getDistrict(), - this)), + new SideComponentLayout(new VaccinationListComponent(criteria, this::showUnsavedChangesPopup)), VACCINATIONS_LOC); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantsController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantsController.java index 4bfa41ec71f..6c219aa0b6a 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantsController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventParticipantsController.java @@ -114,7 +114,7 @@ public EventParticipantDto createEventParticipant( throw new Validator.InvalidValueException(I18nProperties.getString(Strings.messageAlreadyEventParticipant)); } else { dto.setPerson(FacadeProvider.getPersonFacade().getPersonByUuid(selectedPerson.getUuid())); - EventParticipantDto savedDto = eventParticipantFacade.saveEventParticipant(dto); + EventParticipantDto savedDto = eventParticipantFacade.save(dto); Notification notification = new Notification( I18nProperties.getString(Strings.messagePersonAddedAsEventParticipant), @@ -137,7 +137,7 @@ public EventParticipantDto createEventParticipant( if (FacadeProvider.getEventParticipantFacade().exists(dto.getPerson().getUuid(), eventRef.getUuid())) { throw new Validator.InvalidValueException(I18nProperties.getString(Strings.messageAlreadyEventParticipant)); } - EventParticipantDto savedDto = eventParticipantFacade.saveEventParticipant(dto); + EventParticipantDto savedDto = eventParticipantFacade.save(dto); Notification.show(I18nProperties.getString(Strings.messageEventParticipantCreated), Type.ASSISTIVE_NOTIFICATION); if (navigateOnCommit) { navigateToData(savedDto.getUuid()); @@ -308,7 +308,7 @@ private CommitDiscardWrapperComponent createEventParti private void savePersonAndEventParticipant(Consumer doneConsumer, EventParticipantDto dto) { personFacade.savePerson(dto.getPerson()); - eventParticipantFacade.saveEventParticipant(dto); + eventParticipantFacade.save(dto); Notification.show(I18nProperties.getString(Strings.messageEventParticipantSaved), Type.WARNING_MESSAGE); if (doneConsumer != null) doneConsumer.accept(null); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventList.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventList.java index b33e8364869..6df8e1fd736 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventList.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventList.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.function.BiConsumer; +import java.util.function.Consumer; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Label; @@ -48,9 +49,12 @@ public class EventList extends PaginationList { private final EventCriteria eventCriteria = new EventCriteria(); private final Label noEventLabel; private BiConsumer addUnlinkEventListener; + private final Consumer actionCallback; + + public EventList(CaseReferenceDto caseReferenceDto, Consumer actionCallback) { - public EventList(CaseReferenceDto caseReferenceDto) { super(5); + this.actionCallback = actionCallback; eventCriteria.caze(caseReferenceDto); eventCriteria.setUserFilterIncluded(false); noEventLabel = new Label(I18nProperties.getCaption(Captions.eventNoEventLinkedToCase)); @@ -81,8 +85,10 @@ public EventList(CaseReferenceDto caseReferenceDto) { }; } - public EventList(PersonReferenceDto personRef) { + public EventList(PersonReferenceDto personRef, Consumer actionCallback) { + super(5); + this.actionCallback = actionCallback; eventCriteria.setPerson(personRef); eventCriteria.setUserFilterIncluded(false); noEventLabel = new Label(I18nProperties.getCaption(Captions.eventNoEventLinkedToCase)); @@ -97,8 +103,10 @@ public EventList(PersonReferenceDto personRef) { }; } - public EventList(EventReferenceDto superordinateEvent) { + public EventList(EventReferenceDto superordinateEvent, Consumer actionCallback) { + super(5); + this.actionCallback = actionCallback; eventCriteria.superordinateEvent(superordinateEvent); eventCriteria.setUserFilterIncluded(false); noEventLabel = new Label(I18nProperties.getString(Strings.infoNoSubordinateEvents)); @@ -116,6 +124,7 @@ public EventList(EventReferenceDto superordinateEvent) { @Override public void reload() { + List events = FacadeProvider.getEventFacade().getIndexList(eventCriteria, 0, maxDisplayedEntries * 20, null); setEntries(events); @@ -130,6 +139,7 @@ public void reload() { @Override protected void drawDisplayedEntries() { + List displayedEntries = getDisplayedEntries(); for (int i = 0, displayedEntriesSize = displayedEntries.size(); i < displayedEntriesSize; i++) { EventIndexDto event = displayedEntries.get(i); @@ -142,7 +152,8 @@ protected void drawDisplayedEntries() { } listEntry.addEditListener( i, - (ClickListener) clickEvent -> ControllerProvider.getEventController().navigateToData(listEntry.getEvent().getUuid())); + (ClickListener) clickEvent -> actionCallback + .accept(() -> ControllerProvider.getEventController().navigateToData(listEntry.getEvent().getUuid()))); } listLayout.addComponent(listEntry); } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventListComponent.java index 3fe5c3e7376..39c6060ec7c 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/EventListComponent.java @@ -20,6 +20,8 @@ package de.symeda.sormas.ui.events.eventLink; +import java.util.function.Consumer; + import com.vaadin.icons.VaadinIcons; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; @@ -48,11 +50,12 @@ public class EventListComponent extends VerticalLayout { private EventList list; private Button createButton; + private final Consumer actionCallback; - public EventListComponent(CaseReferenceDto caseRef) { - - createEventListComponent(new EventList(caseRef), I18nProperties.getString(Strings.entityEvents), false, e -> { + public EventListComponent(CaseReferenceDto caseRef, Consumer actionCallback) { + this.actionCallback = actionCallback; + createEventListComponent(new EventList(caseRef, actionCallback), I18nProperties.getString(Strings.entityEvents), false, () -> { EventCriteria eventCriteria = new EventCriteria(); //check if there are active events in the database @@ -66,14 +69,13 @@ public EventListComponent(CaseReferenceDto caseRef) { } - public EventListComponent(ContactReferenceDto contactRef) { + public EventListComponent(ContactReferenceDto contactRef, Consumer actionCallback) { + this.actionCallback = actionCallback; ContactDto contact = FacadeProvider.getContactFacade().getByUuid(contactRef.getUuid()); + EventList eventList = new EventList(contact.getPerson(), actionCallback); - EventList eventList = new EventList(contact.getPerson()); - - createEventListComponent(eventList, I18nProperties.getString(Strings.entityEvents), false, e -> { - + createEventListComponent(eventList, I18nProperties.getString(Strings.entityEvents), false, () -> { EventCriteria eventCriteria = new EventCriteria(); //check if there are active events in the database @@ -101,10 +103,11 @@ public EventListComponent(ContactReferenceDto contactRef) { } } - public EventListComponent(EventReferenceDto superordinateEvent) { + public EventListComponent(EventReferenceDto superordinateEvent, Consumer actionCallback) { - EventList eventList = new EventList(superordinateEvent); - createEventListComponent(eventList, I18nProperties.getCaption(Captions.eventSubordinateEvents), true, e -> { + this.actionCallback = actionCallback; + EventList eventList = new EventList(superordinateEvent, actionCallback); + createEventListComponent(eventList, I18nProperties.getCaption(Captions.eventSubordinateEvents), true, () -> { EventCriteria eventCriteria = new EventCriteria(); long events = FacadeProvider.getEventFacade().count(eventCriteria); if (events > 0) { @@ -115,7 +118,8 @@ public EventListComponent(EventReferenceDto superordinateEvent) { }); } - private void createEventListComponent(EventList eventList, String heading, boolean bottomCreateButton, Button.ClickListener clickListener) { + private void createEventListComponent(EventList eventList, String heading, boolean bottomCreateButton, Runnable linkEventCallback) { + setWidth(100, Unit.PERCENTAGE); setMargin(false); setSpacing(false); @@ -138,7 +142,7 @@ private void createEventListComponent(EventList eventList, String heading, boole createButton = ButtonHelper.createButton(I18nProperties.getCaption(Captions.linkEvent)); createButton.addStyleName(ValoTheme.BUTTON_PRIMARY); createButton.setIcon(VaadinIcons.PLUS_CIRCLE); - createButton.addClickListener(clickListener); + createButton.addClickListener(e -> actionCallback.accept(linkEventCallback)); if (bottomCreateButton) { HorizontalLayout buttonLayout = new HorizontalLayout(); buttonLayout.setMargin(false); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/SuperordinateEventComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/SuperordinateEventComponent.java index b5abfd3405f..403753f6944 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/SuperordinateEventComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventLink/SuperordinateEventComponent.java @@ -15,6 +15,8 @@ package de.symeda.sormas.ui.events.eventLink; +import java.util.function.Consumer; + import com.vaadin.icons.VaadinIcons; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; @@ -38,16 +40,15 @@ import de.symeda.sormas.ui.utils.ButtonHelper; import de.symeda.sormas.ui.utils.CssStyles; import de.symeda.sormas.ui.utils.DateFormatHelper; -import de.symeda.sormas.ui.utils.VaadinUiUtil; public class SuperordinateEventComponent extends VerticalLayout { private final EventDto subordinateEvent; - private final Runnable discardChangesCallback; + private final Consumer actionCallback; - public SuperordinateEventComponent(EventDto subordinateEvent, Runnable discardChangesCallback) { + public SuperordinateEventComponent(EventDto subordinateEvent, Consumer actionCallback) { this.subordinateEvent = subordinateEvent; - this.discardChangesCallback = discardChangesCallback; + this.actionCallback = actionCallback; initialize(); } @@ -76,7 +77,7 @@ private void initialize() { "unlinkSuperordinateEvent", I18nProperties.getCaption(Captions.eventUnlinkEvent), VaadinIcons.UNLINK, - e -> createEventWithConfirmationWindow( + e -> actionCallback.accept( () -> ControllerProvider.getEventController() .removeSuperordinateEvent( subordinateEvent, @@ -106,11 +107,11 @@ private void initialize() { thisEvent -> { long events = FacadeProvider.getEventFacade().count(new EventCriteria()); if (events > 0) { - createEventWithConfirmationWindow( + actionCallback.accept( () -> ControllerProvider.getEventController().selectOrCreateSuperordinateEvent(subordinateEvent.toReference())); } else { - createEventWithConfirmationWindow( - () -> ControllerProvider.getEventController().createSuperordinateEvent(subordinateEvent.toReference())); + actionCallback + .accept(() -> ControllerProvider.getEventController().createSuperordinateEvent(subordinateEvent.toReference())); } }, ValoTheme.BUTTON_PRIMARY); @@ -121,21 +122,6 @@ private void initialize() { addComponent(buttonLayout); } - private void createEventWithConfirmationWindow(Runnable callback) { - VaadinUiUtil.showConfirmationPopup( - I18nProperties.getString(Strings.unsavedChanges_discard), - new Label(I18nProperties.getString(Strings.confirmationSuperordinateEventDiscardUnsavedChanges)), - I18nProperties.getString(Strings.yes), - I18nProperties.getString(Strings.no), - 480, - confirmed -> { - if (confirmed) { - discardChangesCallback.run(); - callback.run(); - } - }); - } - private class SuperordinateEventInfoLayout extends AbstractInfoLayout { private static final long serialVersionUID = 695237049227590809L; diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventparticipantimporter/EventParticipantImporter.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventparticipantimporter/EventParticipantImporter.java index f7b464989c8..879e610e66f 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventparticipantimporter/EventParticipantImporter.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/eventparticipantimporter/EventParticipantImporter.java @@ -256,7 +256,7 @@ protected ImportLineResult importDataFromCsvLine( final PersonDto savedPerson = personFacade.savePerson(newPerson, skipPersonValidation); newEventParticipant.setPerson(savedPerson); newEventParticipant.setChangeDate(new Date()); - eventParticipantFacade.saveEventParticipant(newEventParticipant); + eventParticipantFacade.save(newEventParticipant); for (VaccinationDto vaccination : vaccinations) { FacadeProvider.getVaccinationFacade() diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/groups/EventGroupListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/groups/EventGroupListComponent.java index 68d8e57c292..997225a9aca 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/groups/EventGroupListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/groups/EventGroupListComponent.java @@ -20,19 +20,26 @@ package de.symeda.sormas.ui.events.groups; +import java.util.function.Consumer; + import de.symeda.sormas.api.event.EventReferenceDto; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.ui.ControllerProvider; import de.symeda.sormas.ui.utils.components.sidecomponent.SideComponent; public class EventGroupListComponent extends SideComponent { - public EventGroupListComponent(EventReferenceDto eventReference) { + public EventGroupListComponent(EventReferenceDto eventReference, Consumer actionCallback) { - super(I18nProperties.getCaption(Captions.eventGroups)); + super(I18nProperties.getCaption(Captions.eventGroups), actionCallback); - addCreateButton(I18nProperties.getCaption(Captions.linkEventGroup), UserRight.EVENTGROUP_CREATE, UserRight.EVENTGROUP_LINK); + addCreateButton( + I18nProperties.getCaption(Captions.linkEventGroup), + () -> ControllerProvider.getEventGroupController().create(eventReference), + UserRight.EVENTGROUP_CREATE, + UserRight.EVENTGROUP_LINK); EventGroupList eventList = new EventGroupList(eventReference); addComponent(eventList); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/immunizationlink/ImmunizationListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/immunizationlink/ImmunizationListComponent.java index 58e926bf794..4ac7078af82 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/immunizationlink/ImmunizationListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/immunizationlink/ImmunizationListComponent.java @@ -1,5 +1,7 @@ package de.symeda.sormas.ui.immunization.immunizationlink; +import java.util.function.Consumer; + import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; @@ -10,13 +12,13 @@ public class ImmunizationListComponent extends SideComponent { - public ImmunizationListComponent(ImmunizationListCriteria immunizationListCriteria) { - super(I18nProperties.getString(Strings.entityImmunization)); + public ImmunizationListComponent(ImmunizationListCriteria immunizationListCriteria, Consumer actionCallback) { + super(I18nProperties.getString(Strings.entityImmunization), actionCallback); addCreateButton( I18nProperties.getCaption(Captions.immunizationNewImmunization), - UserRight.IMMUNIZATION_CREATE, - e -> ControllerProvider.getImmunizationController().create(immunizationListCriteria.getPerson(), immunizationListCriteria.getDisease())); + () -> ControllerProvider.getImmunizationController().create(immunizationListCriteria.getPerson(), immunizationListCriteria.getDisease()), + UserRight.IMMUNIZATION_CREATE); ImmunizationList immunizationList = new ImmunizationList(immunizationListCriteria); addComponent(immunizationList); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageController.java index 9c3daaf2797..bf75cb65b03 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageController.java @@ -526,7 +526,7 @@ private CommitDiscardWrapperComponent getEventParticip final EventParticipantDto dto = createForm.getValue(); FacadeProvider.getPersonFacade().savePerson(dto.getPerson()); - EventParticipantDto savedDto = FacadeProvider.getEventParticipantFacade().saveEventParticipant(dto); + EventParticipantDto savedDto = FacadeProvider.getEventParticipantFacade().save(dto); Notification.show(I18nProperties.getString(Strings.messageEventParticipantCreated), Notification.Type.ASSISTIVE_NOTIFICATION); createSample( SampleDto.build(UserProvider.getCurrent().getUserReference(), savedDto.toReference()), @@ -822,8 +822,7 @@ private CommitDiscardWrapperComponent getSampleCreateComponent Disease disease, Window window) { SampleController sampleController = ControllerProvider.getSampleController(); - CommitDiscardWrapperComponent sampleCreateComponent = sampleController.getSampleCreateComponent(sample, disease, () -> { - }); + CommitDiscardWrapperComponent sampleCreateComponent = sampleController.getSampleCreateComponent(sample, disease, null); // add pathogen test create components addAllTestReportsOf(labMessageDto, sampleCreateComponent); @@ -1256,8 +1255,7 @@ private void showCreatePathogenTestWindow( int caseSampleCount = ControllerProvider.getSampleController().caseSampleCountOf(sample); CommitDiscardWrapperComponent pathogenTestCreateComponent = - ControllerProvider.getPathogenTestController().getPathogenTestCreateComponent(sample, caseSampleCount, () -> { - }, (savedPathogenTest, callback) -> { + ControllerProvider.getPathogenTestController().getPathogenTestCreateComponent(sample, caseSampleCount, (savedPathogenTest, callback) -> { chain.next(true); window.close(); }, true); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGrid.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGrid.java index b94b53b8ad1..37ae2be0c81 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGrid.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGrid.java @@ -42,6 +42,7 @@ import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; +import de.symeda.sormas.api.labmessage.ExternalMessageType; import de.symeda.sormas.api.labmessage.LabMessageCriteria; import de.symeda.sormas.api.labmessage.LabMessageDto; import de.symeda.sormas.api.labmessage.LabMessageIndexDto; @@ -100,6 +101,7 @@ public LabMessageGrid(LabMessageCriteria criteria) { setColumns( SHOW_MESSAGE, LabMessageIndexDto.UUID, + LabMessageIndexDto.TYPE, LabMessageIndexDto.MESSAGE_DATE_TIME, LabMessageIndexDto.LAB_NAME, LabMessageIndexDto.LAB_POSTAL_CODE, @@ -207,7 +209,7 @@ private HorizontalLayout buildAssigneeLayout(LabMessageIndexDto labMessage) { } private Component buildProcessComponent(LabMessageIndexDto indexDto) { - if (indexDto.getStatus().isProcessable()) { + if (indexDto.getStatus().isProcessable() && ExternalMessageType.LAB_MESSAGE.equals(indexDto.getType())) { // build process button return ButtonHelper.createButton( Captions.labMessageProcess, diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGridFilterForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGridFilterForm.java index a319fa53e22..c0d5b1b05fa 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGridFilterForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageGridFilterForm.java @@ -18,6 +18,7 @@ import java.util.Date; import com.vaadin.v7.data.Validator; +import com.vaadin.v7.ui.ComboBox; import com.vaadin.v7.ui.DateField; import com.vaadin.v7.ui.Field; import com.vaadin.v7.ui.TextField; @@ -27,6 +28,7 @@ import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; +import de.symeda.sormas.api.labmessage.ExternalMessageType; import de.symeda.sormas.api.labmessage.LabMessageCriteria; import de.symeda.sormas.api.labmessage.LabMessageIndexDto; import de.symeda.sormas.api.user.UserDto; @@ -52,6 +54,7 @@ protected String[] getMainFilterLocators() { return new String[] { LabMessageCriteria.SEARCH_FIELD_LIKE, LabMessageCriteria.ASSIGNEE, + LabMessageCriteria.TYPE, LabMessageCriteria.MESSAGE_DATE_FROM, LabMessageCriteria.MESSAGE_DATE_TO, LabMessageCriteria.BIRTH_DATE_FROM, @@ -72,6 +75,9 @@ protected void addFields() { assignee.addItems(FacadeProvider.getUserFacade().getUsersByRegionAndRights(user.getRegion(), null, UserRight.LAB_MESSAGES)); assignee.setNullSelectionAllowed(true); + ComboBox type = addField(LabMessageCriteria.TYPE, ComboBox.class); + type.addItems((Object) ExternalMessageType.values()); + DateTimeField messageDateFrom = addField(LabMessageCriteria.MESSAGE_DATE_FROM, DateTimeField.class); messageDateFrom.setCaption(I18nProperties.getPrefixCaption(LabMessageCriteria.I18N_PREFIX, LabMessageCriteria.MESSAGE_DATE_FROM)); messageDateFrom.setInputPrompt(I18nProperties.getString(Strings.promptLabMessagesDateFrom)); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessagesView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessagesView.java index 85ba17b898b..685313a840d 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessagesView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessagesView.java @@ -157,6 +157,7 @@ public HorizontalLayout createFilterBar() { this.navigateTo(null, true); }); filterForm.addApplyHandler(e -> { + SormasUI.get().getNavigator().navigateTo(LabMessagesView.VIEW_NAME); grid.reload(); }); filterLayout.addComponent(filterForm); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonDataView.java index 4518c67b458..4606fbe21bd 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonDataView.java @@ -120,7 +120,9 @@ protected void initView(String params) { && currentUser != null && currentUser.hasUserRight(UserRight.TRAVEL_ENTRY_VIEW)) { TravelEntryListCriteria travelEntryListCriteria = new TravelEntryListCriteria.Builder().withPerson(getReference()).build(); - layout.addComponent(new SideComponentLayout(new TravelEntryListComponent(travelEntryListCriteria)), TRAVEL_ENTRIES_LOC); + layout.addComponent( + new SideComponentLayout(new TravelEntryListComponent(travelEntryListCriteria, this::showUnsavedChangesPopup)), + TRAVEL_ENTRIES_LOC); } if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.IMMUNIZATION_MANAGEMENT) @@ -129,10 +131,12 @@ protected void initView(String params) { if (!FacadeProvider.getFeatureConfigurationFacade() .isPropertyValueTrue(FeatureType.IMMUNIZATION_MANAGEMENT, FeatureTypeProperty.REDUCED)) { final ImmunizationListCriteria immunizationListCriteria = new ImmunizationListCriteria.Builder(getReference()).build(); - layout.addComponent(new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria)), IMMUNIZATION_LOC); + layout.addComponent( + new SideComponentLayout(new ImmunizationListComponent(immunizationListCriteria, this::showUnsavedChangesPopup)), + IMMUNIZATION_LOC); } else { VaccinationListCriteria criteria = new VaccinationListCriteria.Builder(getReference()).build(); - layout.addComponent(new SideComponentLayout(new VaccinationListComponent(criteria, this)), VACCINATIONS_LOC); + layout.addComponent(new SideComponentLayout(new VaccinationListComponent(criteria)), VACCINATIONS_LOC); } } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/AbstractSampleForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/AbstractSampleForm.java index 54bbfe94a48..59f64b57fb6 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/AbstractSampleForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/AbstractSampleForm.java @@ -171,11 +171,11 @@ protected void defaultValueChangeListener() { Disease disease = null; final CaseReferenceDto associatedCase = getValue().getAssociatedCase(); - if (associatedCase != null) { + if (associatedCase != null && UserProvider.getCurrent().hasAllUserRights(UserRight.CASE_VIEW)) { disease = FacadeProvider.getCaseFacade().getCaseDataByUuid(associatedCase.getUuid()).getDisease(); } else { final ContactReferenceDto associatedContact = getValue().getAssociatedContact(); - if (associatedContact != null) { + if (associatedContact != null && UserProvider.getCurrent().hasAllUserRights(UserRight.CONTACT_VIEW)) { disease = FacadeProvider.getContactFacade().getByUuid(associatedContact.getUuid()).getDisease(); } } @@ -192,7 +192,6 @@ protected void defaultValueChangeListener() { Arrays.asList(true), Arrays.asList(SampleDto.RECEIVED_DATE, SampleDto.LAB_SAMPLE_ID, SampleDto.SPECIMEN_CONDITION), true); - FieldHelper.setRequiredWhen(getFieldGroup(), receivedField, Arrays.asList(SampleDto.SPECIMEN_CONDITION), Arrays.asList(true)); if (disease != Disease.NEW_INFLUENZA) { getField(SampleDto.SAMPLE_SOURCE).setVisible(false); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestController.java index 1ac134432d4..e9a96483def 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestController.java @@ -69,14 +69,10 @@ public List getPathogenTestsBySample(SampleReferenceDto sampleR return facade.getAllBySample(sampleRef); } - public void create( - SampleReferenceDto sampleRef, - int caseSampleCount, - Runnable callback, - BiConsumer onSavedPathogenTest) { + public void create(SampleReferenceDto sampleRef, int caseSampleCount, BiConsumer onSavedPathogenTest) { SampleDto sampleDto = FacadeProvider.getSampleFacade().getSampleByUuid(sampleRef.getUuid()); final CommitDiscardWrapperComponent editView = - getPathogenTestCreateComponent(sampleDto, caseSampleCount, callback, onSavedPathogenTest, false); + getPathogenTestCreateComponent(sampleDto, caseSampleCount, onSavedPathogenTest, false); VaadinUiUtil.showModalPopupWindow(editView, I18nProperties.getString(Strings.headingCreatePathogenTestResult)); } @@ -84,7 +80,6 @@ public void create( public CommitDiscardWrapperComponent getPathogenTestCreateComponent( SampleDto sampleDto, int caseSampleCount, - Runnable callback, BiConsumer onSavedPathogenTest, boolean suppressNavigateToCase) { PathogenTestForm createForm = new PathogenTestForm(sampleDto, true, caseSampleCount, false); @@ -97,7 +92,6 @@ public CommitDiscardWrapperComponent getPathogenTestCreateComp editView.addCommitListener(() -> { if (!createForm.getFieldGroup().isModified()) { savePathogenTest(createForm.getValue(), onSavedPathogenTest, false, suppressNavigateToCase); - callback.run(); SormasUI.refreshView(); } }); @@ -276,6 +270,10 @@ private void handleAssociatedContact( final boolean equalDisease = dto.getTestedDisease() == contact.getDisease(); Runnable callback = () -> { + if (!UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_EDIT)) { + return; + } + if (equalDisease && PathogenTestResultType.NEGATIVE.equals(dto.getTestResult()) && dto.getTestResultVerified() @@ -283,9 +281,7 @@ private void handleAssociatedContact( showChangeAssociatedSampleResultDialog(dto, null); } else if (PathogenTestResultType.POSITIVE.equals(dto.getTestResult()) && dto.getTestResultVerified()) { if (equalDisease) { - if (contact.getResultingCase() == null - && !ContactStatus.CONVERTED.equals(contact.getContactStatus()) - && UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_EDIT)) { + if (contact.getResultingCase() == null && !ContactStatus.CONVERTED.equals(contact.getContactStatus())) { showConvertContactToCaseDialog(contact, converted -> handleCaseCreationFromContactOrEventParticipant(converted, dto)); } else if (!suppressSampleResultUpdatePopup) { showChangeAssociatedSampleResultDialog(dto, null); @@ -471,16 +467,15 @@ public static void showCaseCloningWithNewDiseaseDialog( 800, confirmed -> { if (confirmed) { + existingCaseDto.setCaseClassification(CaseClassification.NOT_CLASSIFIED); + existingCaseDto.setClassificationUser(null); + existingCaseDto.setDisease(disease); + existingCaseDto.setDiseaseDetails(diseaseDetails); + existingCaseDto.setDiseaseVariant(diseaseVariant); + existingCaseDto.setDiseaseVariantDetails(diseaseVariantDetails); + existingCaseDto.setEpidNumber(null); + existingCaseDto.setReportDate(new Date()); CaseDataDto clonedCase = FacadeProvider.getCaseFacade().cloneCase(existingCaseDto); - clonedCase.setCaseClassification(CaseClassification.NOT_CLASSIFIED); - clonedCase.setClassificationUser(null); - clonedCase.setDisease(disease); - clonedCase.setDiseaseDetails(diseaseDetails); - clonedCase.setDiseaseVariant(diseaseVariant); - clonedCase.setDiseaseVariantDetails(diseaseVariantDetails); - clonedCase.setEpidNumber(null); - clonedCase.setReportDate(new Date()); - FacadeProvider.getCaseFacade().save(clonedCase); ControllerProvider.getCaseController().navigateToCase(clonedCase.getUuid()); } }); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleController.java index 373729a216e..c6645f957ca 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleController.java @@ -249,7 +249,9 @@ public CommitDiscardWrapperComponent getSampleCreateComponent( editView.addCommitListener(() -> { if (!createForm.getFieldGroup().isModified()) { FacadeProvider.getSampleFacade().saveSample(sampleDto); - callback.run(); + if (callback != null) { + callback.run(); + } } }); @@ -283,8 +285,7 @@ public void createReferral(SampleDto existingSample, Disease disease) { public CommitDiscardWrapperComponent getSampleReferralCreateComponent(SampleDto existingSample, Disease disease) { final SampleDto referralSample = SampleDto.buildReferralDto(UserProvider.getCurrent().getUserReference(), existingSample); - final CommitDiscardWrapperComponent createView = getSampleCreateComponent(referralSample, disease, () -> { - }); + final CommitDiscardWrapperComponent createView = getSampleCreateComponent(referralSample, disease, null); createView.addCommitListener(() -> { if (!createView.getWrappedComponent().getFieldGroup().isModified()) { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleDataView.java index d23c300e477..78dce66dba1 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleDataView.java @@ -14,13 +14,10 @@ */ package de.symeda.sormas.ui.samples; -import java.util.function.BiConsumer; import java.util.function.Consumer; -import java.util.function.Supplier; import com.vaadin.shared.ui.MarginInfo; import com.vaadin.ui.CustomLayout; -import com.vaadin.ui.Notification; import com.vaadin.ui.VerticalLayout; import de.symeda.sormas.api.Disease; @@ -33,9 +30,6 @@ import de.symeda.sormas.api.event.EventParticipantDto; import de.symeda.sormas.api.event.EventParticipantReferenceDto; import de.symeda.sormas.api.feature.FeatureType; -import de.symeda.sormas.api.i18n.I18nProperties; -import de.symeda.sormas.api.i18n.Strings; -import de.symeda.sormas.api.sample.PathogenTestDto; import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.sample.SampleReferenceDto; import de.symeda.sormas.api.user.UserRight; @@ -102,7 +96,7 @@ protected void initView(String params) { Disease disease = null; final CaseReferenceDto associatedCase = sampleDto.getAssociatedCase(); - if (associatedCase != null) { + if (associatedCase != null && UserProvider.getCurrent().hasAllUserRights(UserRight.CASE_VIEW)) { final CaseDataDto caseDto = FacadeProvider.getCaseFacade().getCaseDataByUuid(associatedCase.getUuid()); disease = caseDto.getDisease(); @@ -111,7 +105,7 @@ protected void initView(String params) { layout.addComponent(caseInfoLayout, CASE_LOC); } final ContactReferenceDto associatedContact = sampleDto.getAssociatedContact(); - if (associatedContact != null) { + if (associatedContact != null && UserProvider.getCurrent().hasAllUserRights(UserRight.CONTACT_VIEW)) { final ContactDto contactDto = FacadeProvider.getContactFacade().getByUuid(associatedContact.getUuid()); disease = contactDto.getDisease(); @@ -123,7 +117,7 @@ protected void initView(String params) { } final EventParticipantReferenceDto associatedEventParticipant = sampleDto.getAssociatedEventParticipant(); - if (associatedEventParticipant != null) { + if (associatedEventParticipant != null && UserProvider.getCurrent().hasAllUserRights(UserRight.EVENTPARTICIPANT_VIEW)) { final EventParticipantDto eventParticipantDto = FacadeProvider.getEventParticipantFacade().getEventParticipantByUuid(associatedEventParticipant.getUuid()); final EventDto eventDto = FacadeProvider.getEventFacade().getEventByUuid(eventParticipantDto.getEvent().getUuid(), false); @@ -160,27 +154,8 @@ protected void initView(String params) { editComponent.addStyleName(CssStyles.MAIN_COMPONENT); layout.addComponent(editComponent, EDIT_LOC); - BiConsumer onSavedPathogenTest = (pathogenTestDto, callback) -> callback.run(); - - // why? if(sampleDto.getSamplePurpose() !=null && sampleDto.getSamplePurpose().equals(SamplePurpose.EXTERNAL)) { - Supplier createOrEditAllowedCallback = () -> editComponent.getWrappedComponent().getFieldGroup().isValid(); SampleReferenceDto sampleReferenceDto = getSampleRef(); - PathogenTestListComponent pathogenTestListComponent = new PathogenTestListComponent(sampleReferenceDto); - pathogenTestListComponent.addSideComponentCreateEventListener(e -> showNavigationConfirmPopupIfDirty(() -> { - if (createOrEditAllowedCallback.get()) { - ControllerProvider.getPathogenTestController().create(sampleReferenceDto, 0, pathogenTestListComponent::reload, onSavedPathogenTest); - } else { - Notification.show(null, I18nProperties.getString(Strings.messageFormHasErrorsPathogenTest), Notification.Type.ERROR_MESSAGE); - } - })); - pathogenTestListComponent.addSideComponentEditEventListener(e -> showNavigationConfirmPopupIfDirty(() -> { - String uuid = e.getUuid(); - if (createOrEditAllowedCallback.get()) { - ControllerProvider.getPathogenTestController().edit(uuid, pathogenTestListComponent::reload, onSavedPathogenTest); - } else { - Notification.show(null, I18nProperties.getString(Strings.messageFormHasErrorsPathogenTest), Notification.Type.ERROR_MESSAGE); - } - })); + PathogenTestListComponent pathogenTestListComponent = new PathogenTestListComponent(sampleReferenceDto, this::showUnsavedChangesPopup); layout.addComponent(new SideComponentLayout(pathogenTestListComponent), PATHOGEN_TESTS_LOC); if (UserProvider.getCurrent() != null @@ -205,8 +180,6 @@ protected void initView(String params) { layout.addComponent(sormasToSormasLocLayout, SORMAS_TO_SORMAS_LOC); } - //} - setSampleEditPermission(container); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestList.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestList.java index 4acaea92381..6e602017bf6 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestList.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestList.java @@ -18,6 +18,7 @@ package de.symeda.sormas.ui.samples.pathogentestlink; import java.util.List; +import java.util.function.Consumer; import com.vaadin.ui.Label; @@ -27,9 +28,9 @@ import de.symeda.sormas.api.sample.SampleReferenceDto; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.ui.ControllerProvider; +import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.utils.PaginationList; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentFieldEditEvent; @SuppressWarnings("serial") public class PathogenTestList extends PaginationList { @@ -37,11 +38,13 @@ public class PathogenTestList extends PaginationList { private static final int MAX_DISPLAYED_ENTRIES = 5; private final SampleReferenceDto sampleRef; + private final Consumer actionCallback; - public PathogenTestList(SampleReferenceDto sampleRef) { + public PathogenTestList(SampleReferenceDto sampleRef, Consumer actionCallback) { super(MAX_DISPLAYED_ENTRIES); this.sampleRef = sampleRef; + this.actionCallback = actionCallback; } @Override @@ -66,7 +69,11 @@ protected void drawDisplayedEntries() { PathogenTestListEntry listEntry = new PathogenTestListEntry(pathogenTest); if (UserProvider.getCurrent().hasUserRight(UserRight.PATHOGEN_TEST_EDIT)) { String pathogenTestUuid = pathogenTest.getUuid(); - listEntry.addEditButton("edit-test-" + pathogenTestUuid, e -> fireEvent(new SideComponentFieldEditEvent(listEntry))); + listEntry.addEditButton( + "edit-test-" + pathogenTestUuid, + e -> actionCallback.accept( + () -> ControllerProvider.getPathogenTestController() + .edit(pathogenTestUuid, SormasUI::refreshView, (pathogenTestDto, callback) -> callback.run()))); } listLayout.addComponent(listEntry); } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestListComponent.java index c4e53a99bf1..7a1ed67095b 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestListComponent.java @@ -17,34 +17,31 @@ *******************************************************************************/ package de.symeda.sormas.ui.samples.pathogentestlink; +import java.util.function.Consumer; + import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.sample.SampleReferenceDto; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.ui.ControllerProvider; import de.symeda.sormas.ui.utils.components.sidecomponent.SideComponent; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentEditEvent; @SuppressWarnings("serial") public class PathogenTestListComponent extends SideComponent { - private final PathogenTestList pathogenTestList; + public PathogenTestListComponent(SampleReferenceDto sampleRef, Consumer actionCallback) { - public PathogenTestListComponent(SampleReferenceDto sampleRef) { - super(I18nProperties.getString(Strings.headingTests)); + super(I18nProperties.getString(Strings.headingTests), actionCallback); - addCreateButton(I18nProperties.getCaption(Captions.pathogenTestNewTest), UserRight.PATHOGEN_TEST_CREATE); + addCreateButton( + I18nProperties.getCaption(Captions.pathogenTestNewTest), + () -> ControllerProvider.getPathogenTestController().create(sampleRef, 0, (pathogenTest, callback) -> callback.run()), + UserRight.PATHOGEN_TEST_CREATE); - pathogenTestList = new PathogenTestList(sampleRef); - pathogenTestList.addSideComponentFieldEditEventListener(e -> { - PathogenTestListEntry listEntry = (PathogenTestListEntry) e.getComponent(); - fireEvent(new SideComponentEditEvent(this, listEntry.getPathogenTest().getUuid())); - }); + PathogenTestList pathogenTestList = new PathogenTestList(sampleRef, actionCallback); addComponent(pathogenTestList); pathogenTestList.reload(); } - public void reload() { - this.pathogenTestList.reload(); - } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleList.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleList.java index 537d5c4e4e6..54273e9e12b 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleList.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleList.java @@ -72,15 +72,19 @@ protected void drawDisplayedEntries() { "edit-sample-" + sampleUuid, (ClickListener) event -> ControllerProvider.getSampleController().navigateToData(sampleUuid)); } - addViewLabMessageButton(listEntry); + if(UserProvider.getCurrent().getUserRights().contains(UserRight.LAB_MESSAGES)){ + addViewLabMessageButton(listEntry); + } listLayout.addComponent(listEntry); } } private void addViewLabMessageButton(SampleListEntry listEntry) { - List labMessages = FacadeProvider.getLabMessageFacade().getForSample(listEntry.getSampleListEntryDto().toReference()); - if (!labMessages.isEmpty()) { - listEntry.addAssociatedLabMessagesListener(clickEvent -> ControllerProvider.getLabMessageController().showLabMessagesSlider(labMessages)); + if (UserProvider.getCurrent().hasUserRight(UserRight.LAB_MESSAGES)) { + List labMessages = FacadeProvider.getLabMessageFacade().getForSample(listEntry.getSampleListEntryDto().toReference()); + if (!labMessages.isEmpty()) { + listEntry.addAssociatedLabMessagesListener(clickEvent -> ControllerProvider.getLabMessageController().showLabMessagesSlider(labMessages)); + } } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleListComponent.java index 2dd97b3eddd..e462d905fd9 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/sampleLink/SampleListComponent.java @@ -15,22 +15,41 @@ package de.symeda.sormas.ui.samples.sampleLink; +import java.util.function.Consumer; + import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; import de.symeda.sormas.api.sample.SampleCriteria; import de.symeda.sormas.api.user.UserRight; +import de.symeda.sormas.ui.ControllerProvider; +import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.utils.components.sidecomponent.SideComponent; -@SuppressWarnings("serial") public class SampleListComponent extends SideComponent { - public SampleListComponent(SampleCriteria sampleCriteria) { - super(I18nProperties.getString(Strings.entitySamples)); - - addCreateButton(I18nProperties.getCaption(Captions.sampleNewSample), UserRight.SAMPLE_CREATE); + public SampleListComponent(SampleCriteria sampleCriteria, Consumer actionCallback) { + super(I18nProperties.getString(Strings.entitySamples), actionCallback); SampleList sampleList = new SampleList(sampleCriteria); + + addCreateButton(I18nProperties.getCaption(Captions.sampleNewSample), () -> { + switch (sampleCriteria.getSampleAssociationType()) { + case CASE: + ControllerProvider.getSampleController().create(sampleCriteria.getCaze(), sampleCriteria.getDisease(), SormasUI::refreshView); + break; + case CONTACT: + ControllerProvider.getSampleController().create(sampleCriteria.getContact(), sampleCriteria.getDisease(), SormasUI::refreshView); + break; + case EVENT_PARTICIPANT: + ControllerProvider.getSampleController() + .create(sampleCriteria.getEventParticipant(), sampleCriteria.getDisease(), SormasUI::refreshView); + break; + default: + throw new IllegalArgumentException("Invalid sample association type:" + sampleCriteria.getSampleAssociationType()); + } + }, UserRight.SAMPLE_CREATE); + addComponent(sampleList); sampleList.reload(); } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/security/MultiAuthenticationMechanism.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/security/MultiAuthenticationMechanism.java index 5ffc142fcba..7d9509cb2b2 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/security/MultiAuthenticationMechanism.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/security/MultiAuthenticationMechanism.java @@ -1,17 +1,14 @@ /* * SORMAS® - Surveillance Outbreak Response Management & Analysis System - * Copyright © 2016-2020 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) - * + * Copyright © 2016-2022 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 . */ @@ -22,8 +19,10 @@ import javax.inject.Inject; import javax.security.enterprise.AuthenticationException; import javax.security.enterprise.AuthenticationStatus; +import javax.security.enterprise.authentication.mechanism.http.AuthenticationParameters; import javax.security.enterprise.authentication.mechanism.http.HttpAuthenticationMechanism; import javax.security.enterprise.authentication.mechanism.http.HttpMessageContext; +import javax.security.enterprise.credential.UsernamePasswordCredential; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -42,9 +41,10 @@ *

* Supported at the moment: Sormas and Keycloak. *

- * Sormas provider uses the {@link CustomFormAuthenticationMechanism}. The {@link SormasIdentityStore} validated the credentials and obtains the user's roles. + * Sormas provider uses the {@link CustomFormAuthenticationMechanism}. The {@link SormasIdentityStore} validated the credentials and obtains + * the user's roles. *

- * Keycloak provider uses the {@link OpenIdAuthenticationMechanism} which configures itself automatically trough the Keycloak Open ID URL. + * Keycloak provider uses the {@link OpenIdAuthenticationMechanism} which configures itself automatically trough the Keycloak Open ID URL. * The token validation and it's roles are obtained by {@link SormasOpenIdIdentityStore}.
* * @author Alex Vidrean @@ -54,21 +54,35 @@ * @see SormasOpenIdIdentityStore * @since 12-Aug-20 */ + +interface ExtractCallerFromRequest { + + String extract(HttpServletRequest request); +} + @ApplicationScoped public class MultiAuthenticationMechanism implements HttpAuthenticationMechanism { private final static Logger logger = LoggerFactory.getLogger(MultiAuthenticationMechanism.class); - + private final ExtractCallerFromRequest extractor; private final HttpAuthenticationMechanism authenticationMechanism; @Inject public MultiAuthenticationMechanism( - OpenIdAuthenticationMechanism openIdAuthenticationMechanism, CustomFormAuthenticationMechanism customFormAuthenticationMechanism) { + OpenIdAuthenticationMechanism openIdAuthenticationMechanism, + CustomFormAuthenticationMechanism customFormAuthenticationMechanism) { String authenticationProvider = FacadeProvider.getConfigFacade().getAuthenticationProvider(); if (authenticationProvider.equalsIgnoreCase(AuthProvider.KEYCLOAK)) { try { authenticationMechanism = openIdAuthenticationMechanism; + // OIDC Authorization Code Flow exchanges authorization code for an ID Token. At this point in + // time we do not have access to the ID token, therefore, we cannot determine the username. + // In addition to that, the Keycloak serves the login page on its own, therefore, + // this code will never be called if a user enters a wrong password. It is only suitable to audit + // anything that might break during the flow once we went past the Keycloak server. + extractor = (request) -> "Username cannot be determined without ID token. Check Keycloak logs for details."; + } catch (IllegalArgumentException e) { logger.warn("Undefined KEYCLOAK configuration. Configure the properties or disable the KEYCLOAK authentication provider."); throw e; @@ -76,15 +90,23 @@ public MultiAuthenticationMechanism( } else { customFormAuthenticationMechanism.setLoginToContinue(new LoginToContinueAnnotationLiteral("/login", false, "", "/login-error")); authenticationMechanism = customFormAuthenticationMechanism; + + extractor = (request) -> ((UsernamePasswordCredential) ((AuthenticationParameters) request + .getAttribute("org.glassfish.soteria.security.message.request.authParams")).getCredential()).getCaller(); } } @Override public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) throws AuthenticationException { - return authenticationMechanism.validateRequest(request, response, httpMessageContext); - } + AuthenticationStatus authenticationStatus = authenticationMechanism.validateRequest(request, response, httpMessageContext); + if (authenticationStatus.equals(AuthenticationStatus.SEND_FAILURE)) { + FacadeProvider.getAuditLoggerFacade().logFailedUiLogin(extractor.extract(request), request.getMethod(), request.getRequestURI()); + } + + return authenticationStatus; + } @Override public AuthenticationStatus secureResponse(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) throws AuthenticationException { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridFilterForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridFilterForm.java index c17b436d5cd..f786515e74d 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridFilterForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridFilterForm.java @@ -25,6 +25,9 @@ import de.symeda.sormas.api.utils.DateFilterOption; import de.symeda.sormas.api.utils.DateHelper; import de.symeda.sormas.api.utils.EpiWeek; +import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers; +import de.symeda.sormas.api.utils.fieldvisibility.checkers.UserRightFieldVisibilityChecker; +import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.utils.AbstractFilterForm; import de.symeda.sormas.ui.utils.EpiWeekAndDateFilterComponent; import de.symeda.sormas.ui.utils.FieldConfiguration; @@ -40,7 +43,10 @@ public class TaskGridFilterForm extends AbstractFilterForm { filterLocs(TaskCriteria.ASSIGNEE_USER_LIKE, TaskCriteria.CREATOR_USER_LIKE) + loc(WEEK_AND_DATE_FILTER); protected TaskGridFilterForm() { - super(TaskCriteria.class, TaskIndexDto.I18N_PREFIX); + super( + TaskCriteria.class, + TaskIndexDto.I18N_PREFIX, + FieldVisibilityCheckers.withCheckers(new UserRightFieldVisibilityChecker(UserProvider.getCurrent()::hasUserRight))); } @Override diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/therapy/PrescriptionGrid.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/therapy/PrescriptionGrid.java index a1b07f26871..cc0abe5e887 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/therapy/PrescriptionGrid.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/therapy/PrescriptionGrid.java @@ -78,7 +78,7 @@ public Class getType() { VaadinUiUtil.setupEditColumn(getColumn(EDIT_BTN_ID)); - if (isPseudonymized) { + if (!isPseudonymized) { getColumn(DOCUMENT_TREATMENT_BTN_ID).setRenderer(new GridButtonRenderer()); getColumn(DOCUMENT_TREATMENT_BTN_ID).setHeaderCaption(""); } else { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataView.java index 699ad5d381c..84fb9f8fb3f 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataView.java @@ -67,7 +67,7 @@ protected void initView(String params) { if (resultingCase == null) { Button createCaseButton = ButtonHelper.createButton( Captions.travelEntryCreateCase, - e -> showNavigationConfirmPopupIfDirty(() -> ControllerProvider.getCaseController().createFromTravelEntry(travelEntryDto)), + e -> showUnsavedChangesPopup(() -> ControllerProvider.getCaseController().createFromTravelEntry(travelEntryDto)), ValoTheme.BUTTON_PRIMARY, CssStyles.VSPACE_2); layout.addSidePanelComponent(createCaseButton, CASE_LOC); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/travelentrylink/TravelEntryListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/travelentrylink/TravelEntryListComponent.java index 14cd9cff8aa..e5f916068e0 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/travelentrylink/TravelEntryListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/travelentrylink/TravelEntryListComponent.java @@ -15,6 +15,8 @@ package de.symeda.sormas.ui.travelentry.travelentrylink; +import java.util.function.Consumer; + import de.symeda.sormas.api.FacadeProvider; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; @@ -27,14 +29,14 @@ public class TravelEntryListComponent extends SideComponent { - public TravelEntryListComponent(TravelEntryListCriteria travelEntryListCriteria) { - super(I18nProperties.getString(Strings.entityTravelEntries)); + public TravelEntryListComponent(TravelEntryListCriteria travelEntryListCriteria, Consumer actionCallback) { + super(I18nProperties.getString(Strings.entityTravelEntries), actionCallback); if (FacadeProvider.getTravelEntryFacade().count(new TravelEntryCriteria(), true) > 0) { addCreateButton( I18nProperties.getCaption(Captions.travelEntryNewTravelEntry), - UserRight.TRAVEL_ENTRY_CREATE, - e -> ControllerProvider.getTravelEntryController().create(travelEntryListCriteria)); + () -> ControllerProvider.getTravelEntryController().create(travelEntryListCriteria), + UserRight.TRAVEL_ENTRY_CREATE); } TravelEntryList travelEntryList = new TravelEntryList(travelEntryListCriteria); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractDetailView.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractDetailView.java index f0602270183..1714caafb5e 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractDetailView.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractDetailView.java @@ -85,10 +85,10 @@ protected boolean findReferenceByParams(String params) { @Override public void beforeLeave(ViewBeforeLeaveEvent event) { - showNavigationConfirmPopupIfDirty(event::navigate); + showUnsavedChangesPopup(event::navigate); } - public void showNavigationConfirmPopupIfDirty(Runnable navigate) { + public void showUnsavedChangesPopup(Runnable navigate) { if (subComponent != null && subComponent.isDirty()) { Window warningPopup = VaadinUiUtil.showConfirmationPopup( I18nProperties.getString(Strings.unsavedChanges_warningTitle), @@ -100,9 +100,12 @@ public void showNavigationConfirmPopupIfDirty(Runnable navigate) { @Override protected void onConfirm() { - subComponent.commitAndHandle(); + boolean committedSuccessfully = subComponent.commitAndHandle(); popupWindow.close(); - navigate.run(); + + if (committedSuccessfully) { + navigate.run(); + } } @Override diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/ArchivingController.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/ArchivingController.java index 1c55a6f6c07..2ec03fe2963 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/ArchivingController.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/ArchivingController.java @@ -249,14 +249,17 @@ public void addArchivingButton( ARCHIVE_DEARCHIVE_BUTTON_ID, I18nProperties.getCaption(archived ? Captions.actionDearchiveCoreEntity : Captions.actionArchiveCoreEntity), e -> { + boolean isCommitSuccessFul = true; if (editView.isModified()) { - editView.commit(); + isCommitSuccessFul = editView.commitAndHandle(); } - if (archived) { - dearchiveEntity(entityDto, coreFacade, archiveMessages, callback); - } else { - archiveEntity(entityDto, coreFacade, archiveMessages, callback); + if (isCommitSuccessFul) { + if (archived) { + dearchiveEntity(entityDto, coreFacade, archiveMessages, callback); + } else { + archiveEntity(entityDto, coreFacade, archiveMessages, callback); + } } }, ValoTheme.BUTTON_LINK); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CommitDiscardWrapperComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CommitDiscardWrapperComponent.java index 59f8be8d933..68a66960f3a 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CommitDiscardWrapperComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CommitDiscardWrapperComponent.java @@ -442,7 +442,7 @@ public boolean isCommited() { } @Override - public void commit() { + public void commit() throws InvalidValueException, SourceException, CommitRuntimeException { if (preCommitListener != null) { preCommitListener.onPreCommit(this::doCommit); @@ -540,9 +540,11 @@ private String findHtmlMessageDetails(InvalidValueException exception) { return null; } - public void commitAndHandle() { + @Override + public boolean commitAndHandle() { try { commit(); + return true; } catch (InvalidValueException ex) { StringBuilder htmlMsg = new StringBuilder(); String message = ex.getMessage(); @@ -588,6 +590,8 @@ public void commitAndHandle() { new Notification(I18nProperties.getString(Strings.messageCheckInputData), htmlMsg.toString(), Type.ERROR_MESSAGE, true) .show(Page.getCurrent()); + + return false; } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DetailSubComponentWrapper.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DetailSubComponentWrapper.java index 64f8fad9d00..ad94c06e256 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DetailSubComponentWrapper.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DetailSubComponentWrapper.java @@ -34,8 +34,8 @@ public boolean isDirty() { } @Override - public void commitAndHandle() { - getWrappedComponent().ifPresent(DirtyStateComponent::commitAndHandle); + public boolean commitAndHandle() { + return getWrappedComponent().map(DirtyStateComponent::commitAndHandle).orElse(false); } @Override diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DirtyStateComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DirtyStateComponent.java index 45bf62c27bc..8542a063b9c 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DirtyStateComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/DirtyStateComponent.java @@ -21,7 +21,7 @@ public interface DirtyStateComponent extends Component { boolean isDirty(); - void commitAndHandle(); + boolean commitAndHandle(); void discard(); } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/InfrastructureFieldsHelper.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/InfrastructureFieldsHelper.java index 3f9d15bc326..0e464b76d46 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/InfrastructureFieldsHelper.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/InfrastructureFieldsHelper.java @@ -24,13 +24,13 @@ import com.vaadin.v7.ui.TextField; import de.symeda.sormas.api.FacadeProvider; +import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto; +import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto; +import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.facility.FacilityDto; import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto; import de.symeda.sormas.api.infrastructure.facility.FacilityType; import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup; -import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto; -import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto; -import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; public class InfrastructureFieldsHelper { @@ -185,6 +185,20 @@ public static void updateRegionBasedOnCountry(ComboBox countryCombo, ComboBox re } } + public static void initPointOfEntry(ComboBox districtCombo, ComboBox pointOfEntryCombo) { + if (districtCombo != null) { + districtCombo.addValueChangeListener(e -> { + DistrictReferenceDto districtDto = (DistrictReferenceDto) e.getProperty().getValue(); + + if (pointOfEntryCombo != null) { + FieldHelper.updateItems( + pointOfEntryCombo, + districtDto != null ? FacadeProvider.getPointOfEntryFacade().getAllActiveByDistrict(districtDto.getUuid(), true) : null); + } + }); + } + } + private static boolean isFacilityDetailsRequired(ComboBox facilityCombo) { return facilityCombo.getValue() != null && ((FacilityReferenceDto) facilityCombo.getValue()).getUuid().equals(FacilityDto.OTHER_FACILITY_UUID); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/PaginationList.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/PaginationList.java index 48b8d761203..bdf95a07857 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/PaginationList.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/PaginationList.java @@ -19,7 +19,6 @@ import java.util.List; -import com.vaadin.shared.Registration; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; @@ -27,9 +26,6 @@ import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.ValoTheme; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentFieldEditEvent; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentFieldEditEventListener; - public abstract class PaginationList extends VerticalLayout { private static final long serialVersionUID = -1949084832307944448L; @@ -217,10 +213,4 @@ public boolean isEmpty() { return entries.isEmpty(); } - public Registration addSideComponentFieldEditEventListener(SideComponentFieldEditEventListener sideComponentFieldEditEventListener) { - return addListener( - SideComponentFieldEditEvent.class, - sideComponentFieldEditEventListener, - SideComponentFieldEditEventListener.ON_SIDE_COMPONENT_FIELD_EDIT_METHOD); - } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/SormasFieldGroupFieldFactory.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/SormasFieldGroupFieldFactory.java index 7dd671c50de..463eddb1fea 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/SormasFieldGroupFieldFactory.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/SormasFieldGroupFieldFactory.java @@ -38,11 +38,9 @@ public class SormasFieldGroupFieldFactory extends DefaultFieldGroupFieldFactory { - private static final long serialVersionUID = 471700572643936674L; - public static final int TEXT_AREA_MAX_LENGTH = FieldConstraints.CHARACTER_LIMIT_BIG; public static final int TEXT_FIELD_MAX_LENGTH = FieldConstraints.CHARACTER_LIMIT_DEFAULT; - + private static final long serialVersionUID = 471700572643936674L; private final FieldVisibilityCheckers fieldVisibilityCheckers; private final UiFieldAccessCheckers fieldAccessCheckers; @@ -217,6 +215,7 @@ protected void populateWithEnumData(AbstractSelect select, Class if (fieldVisibilityCheckers != null) { visible = fieldVisibilityCheckers.isVisible(enumClass, ((Enum) r).name()); } + if (visible) { Item newItem = select.addItem(r); newItem.getItemProperty(CAPTION_PROPERTY_ID).setValue(r.toString()); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/VaadinUiUtil.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/VaadinUiUtil.java index 4a0da2b8112..5d0ea730004 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/VaadinUiUtil.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/VaadinUiUtil.java @@ -17,6 +17,8 @@ *******************************************************************************/ package de.symeda.sormas.ui.utils; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.UnaryOperator; @@ -175,6 +177,22 @@ public static void setupEditColumn(Grid.Column column) { column.setHeaderCaption(""); } + public static Window showConfirmationPopup( + String caption, + Component content, + String confirmCaption, + String cancelCaption, + Consumer resultConsumer) { + + return showConfirmationPopup(caption, content, confirmCaption, cancelCaption, getEstimatedWidth(caption.length()), resultConsumer); + } + + public static Integer getEstimatedWidth(int length) { + BigDecimal width = new BigDecimal(length).multiply(BigDecimal.valueOf(13.6)); + width = width.setScale(0, RoundingMode.HALF_UP); + return width.intValue(); + } + public static Window showConfirmationPopup( String caption, Component content, diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/multidayselector/MultiDaySelectorField.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/multidayselector/MultiDaySelectorField.java index 8ee1cc88bcb..160b00bc913 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/multidayselector/MultiDaySelectorField.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/multidayselector/MultiDaySelectorField.java @@ -81,10 +81,13 @@ protected Component initContent() { } startDateBindingBuilder.bind(MultiDaySelectorDto.START_DATE); startDate.addValueChangeListener(e -> { + binder.validate(); getValue().setStartDate(e.getValue()); enableValidationForEndDate(e.getValue() != null); }); + reportDate.addValueChangeListener(event -> binder.validate()); + endDate.setId("lastDate"); endDate.setWidth(150, Unit.PIXELS); Binder.BindingBuilder endDateBindingBuilder = diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/SideComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/SideComponent.java index 255493b612c..3753ca98009 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/SideComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/SideComponent.java @@ -5,7 +5,6 @@ import com.vaadin.icons.VaadinIcons; import com.vaadin.server.Sizeable; -import com.vaadin.shared.Registration; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; @@ -17,16 +16,17 @@ import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.utils.ButtonHelper; import de.symeda.sormas.ui.utils.CssStyles; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentCreateEvent; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentCreateEventListener; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentEditEvent; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentEditEventListener; public class SideComponent extends VerticalLayout { private final HorizontalLayout componentHeader; + private final Consumer actionCallback; public SideComponent(String heading) { + this(heading, null); + } + + public SideComponent(String heading, Consumer actionCallback) { setWidth(100, Sizeable.Unit.PERCENTAGE); setMargin(false); setSpacing(false); @@ -40,6 +40,8 @@ public SideComponent(String heading) { Label headingLabel = new Label(heading); headingLabel.addStyleName(CssStyles.H3); componentHeader.addComponent(headingLabel); + + this.actionCallback = actionCallback; } protected void addCreateButton(Button button) { @@ -47,41 +49,16 @@ protected void addCreateButton(Button button) { componentHeader.setComponentAlignment(button, Alignment.MIDDLE_RIGHT); } - protected void addCreateButton(String caption, UserRight userRight, Consumer clickListener) { - UserProvider currentUser = UserProvider.getCurrent(); - if (currentUser != null && currentUser.hasUserRight(userRight) && clickListener != null) { - Button createButton = ButtonHelper.createButton(caption); - createButton.addStyleName(ValoTheme.BUTTON_PRIMARY); - createButton.setIcon(VaadinIcons.PLUS_CIRCLE); - createButton.addClickListener(clickListener::accept); - addCreateButton(createButton); - } - } - - protected void addCreateButton(String caption, UserRight... userRights) { + protected void addCreateButton(String caption, Runnable callback, UserRight... userRights) { if (userHasRight(userRights)) { Button createButton = ButtonHelper.createButton(caption); createButton.addStyleName(ValoTheme.BUTTON_PRIMARY); createButton.setIcon(VaadinIcons.PLUS_CIRCLE); - createButton.addClickListener(e -> fireEvent(new SideComponentCreateEvent(this))); + createButton.addClickListener(e -> actionCallback.accept(callback)); addCreateButton(createButton); } } - public Registration addSideComponentCreateEventListener(SideComponentCreateEventListener sideComponentCreateEventListener) { - return addListener( - SideComponentCreateEvent.class, - sideComponentCreateEventListener, - SideComponentCreateEventListener.ON_SIDE_COMPONENT_CREATE_METHOD); - } - - public Registration addSideComponentEditEventListener(SideComponentEditEventListener sideComponentEditEventListener) { - return addListener( - SideComponentEditEvent.class, - sideComponentEditEventListener, - SideComponentEditEventListener.ON_SIDE_COMPONENT_EDIT_METHOD); - } - private boolean userHasRight(UserRight... userRights) { UserProvider currentUser = UserProvider.getCurrent(); return Arrays.stream(userRights).anyMatch(currentUser::hasUserRight); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentCreateEvent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentCreateEvent.java deleted file mode 100644 index 1b5e65df52c..00000000000 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentCreateEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.symeda.sormas.ui.utils.components.sidecomponent.event; - -import com.vaadin.ui.Component; - -public class SideComponentCreateEvent extends Component.Event { - - public SideComponentCreateEvent(Component source) { - super(source); - } -} diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentCreateEventListener.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentCreateEventListener.java deleted file mode 100644 index 85b816b1685..00000000000 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentCreateEventListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.symeda.sormas.ui.utils.components.sidecomponent.event; - -import java.lang.reflect.Method; - -import com.vaadin.event.SerializableEventListener; -import com.vaadin.util.ReflectTools; - -@FunctionalInterface -public interface SideComponentCreateEventListener extends SerializableEventListener { - - Method ON_SIDE_COMPONENT_CREATE_METHOD = - ReflectTools.findMethod(SideComponentCreateEventListener.class, "onCreate", SideComponentCreateEvent.class); - - void onCreate(SideComponentCreateEvent event); -} diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentEditEvent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentEditEvent.java deleted file mode 100644 index 1a20d445589..00000000000 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentEditEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.symeda.sormas.ui.utils.components.sidecomponent.event; - -import com.vaadin.ui.Component; - -public class SideComponentEditEvent extends Component.Event { - - private final String uuid; - - public SideComponentEditEvent(Component source, String uuid) { - super(source); - this.uuid = uuid; - } - - public String getUuid() { - return this.uuid; - } -} diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentEditEventListener.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentEditEventListener.java deleted file mode 100644 index 703cabc8b5a..00000000000 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentEditEventListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.symeda.sormas.ui.utils.components.sidecomponent.event; - -import java.lang.reflect.Method; - -import com.vaadin.event.SerializableEventListener; -import com.vaadin.util.ReflectTools; - -@FunctionalInterface -public interface SideComponentEditEventListener extends SerializableEventListener { - - Method ON_SIDE_COMPONENT_EDIT_METHOD = ReflectTools.findMethod(SideComponentEditEventListener.class, "onEdit", SideComponentEditEvent.class); - - void onEdit(SideComponentEditEvent event); -} diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentFieldEditEvent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentFieldEditEvent.java deleted file mode 100644 index 97de1e60f76..00000000000 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentFieldEditEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.symeda.sormas.ui.utils.components.sidecomponent.event; - -import com.vaadin.ui.Component; - -public class SideComponentFieldEditEvent extends Component.Event { - - public SideComponentFieldEditEvent(Component source) { - super(source); - } -} diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentFieldEditEventListener.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentFieldEditEventListener.java deleted file mode 100644 index dfcc3f62ec4..00000000000 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/components/sidecomponent/event/SideComponentFieldEditEventListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.symeda.sormas.ui.utils.components.sidecomponent.event; - -import java.lang.reflect.Method; - -import com.vaadin.event.SerializableEventListener; -import com.vaadin.util.ReflectTools; - -@FunctionalInterface -public interface SideComponentFieldEditEventListener extends SerializableEventListener { - - Method ON_SIDE_COMPONENT_FIELD_EDIT_METHOD = - ReflectTools.findMethod(SideComponentFieldEditEventListener.class, "onEdit", SideComponentFieldEditEvent.class); - - void onEdit(SideComponentFieldEditEvent event); -} diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationList.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationList.java index 293204340b6..aa6476dff79 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationList.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationList.java @@ -16,28 +16,37 @@ package de.symeda.sormas.ui.vaccination.list; import java.util.List; +import java.util.function.Consumer; import java.util.function.Function; import com.vaadin.ui.Label; import de.symeda.sormas.api.Disease; +import de.symeda.sormas.api.FacadeProvider; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; +import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers; import de.symeda.sormas.api.vaccination.VaccinationListEntryDto; +import de.symeda.sormas.ui.ControllerProvider; +import de.symeda.sormas.ui.SormasUI; import de.symeda.sormas.ui.utils.PaginationList; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentFieldEditEvent; public class VaccinationList extends PaginationList { private static final int MAX_DISPLAYED_ENTRIES = 5; - private Disease disease; + private Disease disease; private final Function> vaccinationListSupplier; + private final Consumer actionCallback; - public VaccinationList(Disease disease, Function> vaccinationListSupplier) { + public VaccinationList( + Disease disease, + Function> vaccinationListSupplier, + Consumer actionCallback) { super(MAX_DISPLAYED_ENTRIES); this.vaccinationListSupplier = vaccinationListSupplier; this.disease = disease; + this.actionCallback = actionCallback; } @Override @@ -61,7 +70,15 @@ protected void drawDisplayedEntries() { VaccinationListEntry listEntry = new VaccinationListEntry(entryDto, disease == null); listEntry.addEditButton( "edit-vaccination-" + listEntry.getVaccination().getUuid(), - e -> fireEvent(new SideComponentFieldEditEvent(listEntry))); + e -> actionCallback.accept( + () -> ControllerProvider.getVaccinationController() + .edit( + FacadeProvider.getVaccinationFacade().getByUuid(listEntry.getVaccination().getUuid()), + listEntry.getVaccination().getDisease(), + UiFieldAccessCheckers.getDefault(listEntry.getVaccination().isPseudonymized()), + true, + v -> SormasUI.refreshView(), + deleteCallback()))); listLayout.addComponent(listEntry); } } diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationListComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationListComponent.java index c5955cdb952..e8497725973 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationListComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/list/VaccinationListComponent.java @@ -16,140 +16,69 @@ package de.symeda.sormas.ui.vaccination.list; import java.util.List; +import java.util.function.Consumer; import java.util.function.Function; import de.symeda.sormas.api.FacadeProvider; -import de.symeda.sormas.api.ReferenceDto; -import de.symeda.sormas.api.caze.CaseReferenceDto; -import de.symeda.sormas.api.contact.ContactReferenceDto; -import de.symeda.sormas.api.event.EventParticipantReferenceDto; import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; -import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto; -import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers; import de.symeda.sormas.api.vaccination.VaccinationListCriteria; import de.symeda.sormas.api.vaccination.VaccinationListEntryDto; import de.symeda.sormas.ui.ControllerProvider; import de.symeda.sormas.ui.SormasUI; -import de.symeda.sormas.ui.utils.AbstractDetailView; import de.symeda.sormas.ui.utils.components.sidecomponent.SideComponent; -import de.symeda.sormas.ui.utils.components.sidecomponent.event.SideComponentFieldEditEventListener; public class VaccinationListComponent extends SideComponent { - private final AbstractDetailView view; - - public VaccinationListComponent(VaccinationListCriteria criteria, AbstractDetailView view) { - this(criteria, maxDisplayedEntries -> FacadeProvider.getVaccinationFacade().getEntriesList(criteria, 0, maxDisplayedEntries, null), view); - } - - public VaccinationListComponent( - CaseReferenceDto caseReferenceDto, - VaccinationListCriteria criteria, - RegionReferenceDto region, - DistrictReferenceDto district, - AbstractDetailView view) { - - this( - criteria, - region, - district, - maxDisplayedEntries -> FacadeProvider.getVaccinationFacade() - .getEntriesListWithRelevance(caseReferenceDto, criteria, 0, maxDisplayedEntries), - view); + public VaccinationListComponent(VaccinationListCriteria criteria) { + this(criteria, null); } - public VaccinationListComponent( - ContactReferenceDto contactReferenceDto, - VaccinationListCriteria criteria, - RegionReferenceDto region, - DistrictReferenceDto district, - AbstractDetailView view) { - - this( - criteria, - region, - district, - maxDisplayedEntries -> FacadeProvider.getVaccinationFacade() - .getEntriesListWithRelevance(contactReferenceDto, criteria, 0, maxDisplayedEntries), - view); - } + public VaccinationListComponent(VaccinationListCriteria criteria, Consumer actionCallback) { - public VaccinationListComponent( - EventParticipantReferenceDto eventParticipantReferenceDto, - VaccinationListCriteria criteria, - RegionReferenceDto region, - DistrictReferenceDto district, - AbstractDetailView view) { - - this( - criteria, - region, - district, - maxDisplayedEntries -> FacadeProvider.getVaccinationFacade() - .getEntriesListWithRelevance(eventParticipantReferenceDto, criteria, 0, maxDisplayedEntries), - view); - } - - private VaccinationListComponent( - VaccinationListCriteria criteria, - RegionReferenceDto region, - DistrictReferenceDto district, - Function> entriesListSupplier, - AbstractDetailView view) { - - this(criteria, entriesListSupplier, view); - createNewVaccinationButton(criteria, region, district, SormasUI::refreshView); - } + super(I18nProperties.getString(Strings.entityVaccinations), actionCallback); - private VaccinationListComponent( - VaccinationListCriteria criteria, - Function> entriesListSupplier, - AbstractDetailView view) { - - super(I18nProperties.getString(Strings.entityVaccinations)); - this.view = view; - - VaccinationList vaccinationList = new VaccinationList(criteria.getDisease(), entriesListSupplier); - vaccinationList.addSideComponentFieldEditEventListener(editSideComponentFieldEventListener(vaccinationList)); - - addComponent(vaccinationList); - vaccinationList.reload(); - } - - private void createNewVaccinationButton( - VaccinationListCriteria criteria, - RegionReferenceDto region, - DistrictReferenceDto district, - Runnable refreshCallback) { addCreateButton( I18nProperties.getCaption(Captions.vaccinationNewVaccination), - UserRight.IMMUNIZATION_CREATE, - e -> view.showNavigationConfirmPopupIfDirty( - () -> ControllerProvider.getVaccinationController() - .create( - region, - district, - criteria.getPerson(), - criteria.getDisease(), - UiFieldAccessCheckers.getNoop(), - v -> refreshCallback.run()))); + () -> ControllerProvider.getVaccinationController() + .create( + criteria.getRegion(), + criteria.getDistrict(), + criteria.getPerson(), + criteria.getDisease(), + UiFieldAccessCheckers.getNoop(), + v -> SormasUI.refreshView()), + UserRight.IMMUNIZATION_CREATE); + + Function> entriesListSupplier; + + if (criteria.getVaccinationAssociationType() != null) { + switch (criteria.getVaccinationAssociationType()) { + case CASE: + entriesListSupplier = maxDisplayedEntries -> FacadeProvider.getVaccinationFacade() + .getEntriesListWithRelevance(criteria.getCaseReference(), criteria, 0, maxDisplayedEntries); + break; + case CONTACT: + entriesListSupplier = maxDisplayedEntries -> FacadeProvider.getVaccinationFacade() + .getEntriesListWithRelevance(criteria.getContactReference(), criteria, 0, maxDisplayedEntries); + break; + case EVENT_PARTICIPANT: + entriesListSupplier = maxDisplayedEntries -> FacadeProvider.getVaccinationFacade() + .getEntriesListWithRelevance(criteria.getEventParticipantReference(), criteria, 0, maxDisplayedEntries); + break; + default: + throw new IllegalArgumentException("Invalid vaccination association type: " + criteria.getVaccinationAssociationType()); + } + } else { + entriesListSupplier = maxDisplayedEntries -> FacadeProvider.getVaccinationFacade().getEntriesList(criteria, 0, maxDisplayedEntries, null); + } + + VaccinationList vaccinationList = new VaccinationList(criteria.getDisease(), entriesListSupplier, actionCallback); + addComponent(vaccinationList); + vaccinationList.reload(); } - private SideComponentFieldEditEventListener editSideComponentFieldEventListener(VaccinationList vaccinationList) { - return e -> view.showNavigationConfirmPopupIfDirty(() -> { - VaccinationListEntry listEntry = (VaccinationListEntry) e.getComponent(); - ControllerProvider.getVaccinationController() - .edit( - FacadeProvider.getVaccinationFacade().getByUuid(listEntry.getVaccination().getUuid()), - listEntry.getVaccination().getDisease(), - UiFieldAccessCheckers.getDefault(listEntry.getVaccination().isPseudonymized()), - true, - v -> SormasUI.refreshView(), - vaccinationList.deleteCallback()); - }); - } } diff --git a/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.docx b/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.docx index c562ced7d35..44f1e1d9248 100644 Binary files a/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.docx and b/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.docx differ diff --git a/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.pdf b/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.pdf index 21fed6bbbc4..8f7c8909447 100644 Binary files a/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.pdf and b/sormas-ui/src/main/resources/SORMAS_Travel_Entry_Import_Guide.pdf differ diff --git a/sormas-ui/src/test/java/de/symeda/sormas/ui/AbstractBeanTest.java b/sormas-ui/src/test/java/de/symeda/sormas/ui/AbstractBeanTest.java index e6fe31a075f..2028c8bd58e 100644 --- a/sormas-ui/src/test/java/de/symeda/sormas/ui/AbstractBeanTest.java +++ b/sormas-ui/src/test/java/de/symeda/sormas/ui/AbstractBeanTest.java @@ -40,9 +40,7 @@ import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.Language; -import de.symeda.sormas.api.caze.CaseFacade; import de.symeda.sormas.api.caze.caseimport.CaseImportFacade; -import de.symeda.sormas.api.contact.ContactFacade; import de.symeda.sormas.api.event.EventFacade; import de.symeda.sormas.api.event.EventParticipantFacade; import de.symeda.sormas.api.i18n.I18nProperties; @@ -106,8 +104,6 @@ private void initH2Functions() { em.getTransaction().begin(); Query nativeQuery = em.createNativeQuery("CREATE ALIAS similarity FOR \"de.symeda.sormas.ui.H2Function.similarity\""); nativeQuery.executeUpdate(); - nativeQuery = em.createNativeQuery("CREATE ALIAS array_to_string FOR \"de.symeda.sormas.ui.H2Function.array_to_string\""); - nativeQuery.executeUpdate(); nativeQuery = em.createNativeQuery("CREATE ALIAS similarity_operator FOR \"de.symeda.sormas.ui.H2Function.similarity_operator\""); nativeQuery.executeUpdate(); nativeQuery = em.createNativeQuery("CREATE ALIAS set_limit FOR \"de.symeda.sormas.ui.H2Function.set_limit\""); diff --git a/sormas-ui/src/test/java/de/symeda/sormas/ui/ExtendedH2Dialect.java b/sormas-ui/src/test/java/de/symeda/sormas/ui/ExtendedH2Dialect.java index 45c007525ac..9bb6be5d07d 100644 --- a/sormas-ui/src/test/java/de/symeda/sormas/ui/ExtendedH2Dialect.java +++ b/sormas-ui/src/test/java/de/symeda/sormas/ui/ExtendedH2Dialect.java @@ -15,7 +15,6 @@ public class ExtendedH2Dialect extends H2Dialect { public final static String WINDOW_FIRST_VALUE_DESC = "window_first_value_desc"; public final static String WINDOW_COUNT = "window_count"; - public ExtendedH2Dialect() { super(); // needed because of hibernate bug: https://hibernate.atlassian.net/browse/HHH-11938 @@ -39,4 +38,12 @@ public ExtendedH2Dialect() { StandardBasicTypes.LONG, "COUNT(?1) OVER (PARTITION BY ?2 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)")); } + + /** + * Fixes JdbcSQLSyntaxErrorException: Values of types "BOOLEAN" and "INTEGER" are not comparable. + */ + @Override + public String toBooleanValueString(boolean bool) { + return bool ? "TRUE" : "FALSE"; + } } diff --git a/sormas-ui/src/test/java/de/symeda/sormas/ui/H2Function.java b/sormas-ui/src/test/java/de/symeda/sormas/ui/H2Function.java index fe161f25829..7d25c24b2e4 100644 --- a/sormas-ui/src/test/java/de/symeda/sormas/ui/H2Function.java +++ b/sormas-ui/src/test/java/de/symeda/sormas/ui/H2Function.java @@ -1,6 +1,5 @@ package de.symeda.sormas.ui; -import java.util.Arrays; import java.util.Date; import de.symeda.sormas.api.utils.DateHelper; @@ -18,10 +17,6 @@ public static boolean similarity_operator(String a, String b) { return a.equalsIgnoreCase(b) ? true : false; } - public static String array_to_string(String[] array, String delimiter) { - return array != null ? String.join(delimiter, Arrays.asList(array)) : null; - } - public static double set_limit(Double limit) { return limit; } diff --git a/sormas-ui/src/test/java/de/symeda/sormas/ui/TestDataCreator.java b/sormas-ui/src/test/java/de/symeda/sormas/ui/TestDataCreator.java index f7deaf275a1..cd2a6336a7d 100644 --- a/sormas-ui/src/test/java/de/symeda/sormas/ui/TestDataCreator.java +++ b/sormas-ui/src/test/java/de/symeda/sormas/ui/TestDataCreator.java @@ -22,7 +22,6 @@ import java.util.Date; import java.util.HashSet; import java.util.function.Consumer; -import java.util.stream.Collectors; import de.symeda.sormas.api.Disease; import de.symeda.sormas.api.FacadeProvider; @@ -159,7 +158,7 @@ public EventParticipantDto createEventParticipant( eventParticipant.setPerson(eventPerson); eventParticipant.setInvolvementDescription(involvementDescription); - eventParticipant = FacadeProviderMock.getEventParticipantFacade().saveEventParticipant(eventParticipant); + eventParticipant = FacadeProviderMock.getEventParticipantFacade().save(eventParticipant); return eventParticipant; } diff --git a/sormas-ui/src/test/resources/META-INF/persistence.xml b/sormas-ui/src/test/resources/META-INF/persistence.xml index 74af8123228..3b6f1190329 100644 --- a/sormas-ui/src/test/resources/META-INF/persistence.xml +++ b/sormas-ui/src/test/resources/META-INF/persistence.xml @@ -92,7 +92,7 @@ - + diff --git a/sormas-widgetset/pom.xml b/sormas-widgetset/pom.xml index e5333603028..3c3bb3f0821 100644 --- a/sormas-widgetset/pom.xml +++ b/sormas-widgetset/pom.xml @@ -3,7 +3,7 @@ sormas-base de.symeda.sormas - 1.70.4 + 1.71.0 ../sormas-base 4.0.0