From 0b0517c0ffa56609d74e75e6d1ab9547dc9a92fe Mon Sep 17 00:00:00 2001 From: Haastert Date: Thu, 16 Apr 2026 17:35:39 +0200 Subject: [PATCH 01/16] #185 Solved: Max. / Min. Text for slider questions is not validated --- .env | 2 +- .../imi/mopat/controller/AdminController.java | 2 +- .../controller/QuestionnaireController.java | 2 +- .../mopat/validator/QuestionDTOValidator.java | 9 ++++++++ .../validator/SliderAnswerDTOValidator.java | 22 +++++++++++++++++++ .../validator/SliderAnswerValidator.java | 2 ++ .../resources/message/messages.properties | 3 ++- .../message/messages_de_DE.properties | 7 +++--- .../message/messages_en_GB.properties | 3 ++- .../webapp/WEB-INF/questionnaire/list.html | 2 +- 10 files changed, 45 insertions(+), 9 deletions(-) diff --git a/.env b/.env index abfa52fd..ef8ce715 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ # !!! ADJUST THESE SETTINGS !!! MYSQL_ROOT_PASSWORD=root MYSQL_USER=mopat -MYSQL_PASSWORD=mopat +MYSQL_PASSWORD=ld86Y6nM6DtZIUiHAuAm PEPPER=AdP5ktlaIVaon53yJg8zEZSnFr33Dinil69ZtZMTWXubKMUEpfyNvOgWLdwNLhedY3WT5TVcqgg # DB Connection settings - The hostname is corresponding to the container name of the db diff --git a/src/main/java/de/imi/mopat/controller/AdminController.java b/src/main/java/de/imi/mopat/controller/AdminController.java index 9f1682aa..2792c187 100644 --- a/src/main/java/de/imi/mopat/controller/AdminController.java +++ b/src/main/java/de/imi/mopat/controller/AdminController.java @@ -37,4 +37,4 @@ public String showAdmin(final Model model) { model.addAttribute("gitRepositoryMetadata", gitRepositoryMetadataHandler.getGitRepositoryMetadata()); return "admin/index"; } -} +} \ No newline at end of file diff --git a/src/main/java/de/imi/mopat/controller/QuestionnaireController.java b/src/main/java/de/imi/mopat/controller/QuestionnaireController.java index 504fc16e..fe56c78e 100644 --- a/src/main/java/de/imi/mopat/controller/QuestionnaireController.java +++ b/src/main/java/de/imi/mopat/controller/QuestionnaireController.java @@ -150,7 +150,7 @@ public class QuestionnaireController { @PreAuthorize("hasRole('ROLE_EDITOR')") public String listQuestionnaires(final Model model) { List allQuestionnaires = questionnaireDao.getAllElements(); - // This map contians a questionnaire id as key and a set with all + // This map contains a questionnaire id as key and a set with all // languages // which are available for all questions in this questionnaire. Map> availableLanguagesInQuestionForQuestionnaires = new HashMap<>(); diff --git a/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java b/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java index 941988de..1684b46f 100644 --- a/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java +++ b/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java @@ -182,6 +182,15 @@ public void validate(final Object target, final Errors errors) { break; } case SLIDER: + // [bt] tell the errors object that from now on the + // validation refers to the first of the question's answers. + errors.pushNestedPath("answers[0]"); + // [bt] sub-validation + sliderAnswerDTOValidator.validate(questionDTO.getAnswers().get(0L), errors); + // [bt] tell the errors object that validation of the + // sub-element/property of this question is over. + errors.popNestedPath(); + break; case NUMBER_CHECKBOX: case NUMBER_CHECKBOX_TEXT: { // [bt] tell the errors object that from now on the diff --git a/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java b/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java index e35184ea..49b08572 100644 --- a/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java +++ b/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Map; import de.imi.mopat.model.dto.export.SliderIconDTO; import org.springframework.beans.factory.annotation.Autowired; @@ -114,6 +115,27 @@ public void validate(final Object target, final Errors errors) { errors.popNestedPath(); } } + + //for each entry in localizedMinimumText check if size of entry is bigger than 255 char + Map localizedMinimumText = sliderAnswer.getLocalizedMinimumText(); + for (Map.Entry entry : localizedMinimumText.entrySet()){ + if (entry.getValue().length() >= 255){ + errors.rejectValue("localizedMinimumText['" + entry.getKey() + "']", + MoPatValidator.ERRORCODE_ERRORMESSAGE, + messageSource.getMessage("sliderAnswer.validator.localizedMinimumText", + new Object[]{}, LocaleContextHolder.getLocale())); + } + } + Map localizedMaximumText = sliderAnswer.getLocalizedMaximumText(); + for (Map.Entry entry : localizedMaximumText.entrySet()){ + if (entry.getValue().length() >= 255){ + errors.rejectValue("localizedMaximumText['" + entry.getKey() + "']", + MoPatValidator.ERRORCODE_ERRORMESSAGE, + messageSource.getMessage("sliderAnswer.validator.localizedMinimumText", + new Object[]{}, LocaleContextHolder.getLocale())); + } + } + } catch (NumberFormatException ex) { } } diff --git a/src/main/java/de/imi/mopat/validator/SliderAnswerValidator.java b/src/main/java/de/imi/mopat/validator/SliderAnswerValidator.java index de5b3f38..6723f64a 100644 --- a/src/main/java/de/imi/mopat/validator/SliderAnswerValidator.java +++ b/src/main/java/de/imi/mopat/validator/SliderAnswerValidator.java @@ -5,6 +5,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; @@ -94,6 +95,7 @@ public void validate(final Object target, final Errors errors) { } } } + } catch (NumberFormatException ex) { } } diff --git a/src/main/resources/message/messages.properties b/src/main/resources/message/messages.properties index 6ada77ad..2168e880 100644 --- a/src/main/resources/message/messages.properties +++ b/src/main/resources/message/messages.properties @@ -503,7 +503,7 @@ helpMode.label.question.dropDown=This question allows choosing an answer from a helpMode.label.question.freeText=This question allows entering a text. Please click/tap the field and write your answer in the field. helpMode.label.question.image=This is an image question. Please mark the specific position with a click/tap on the image. helpMode.label.question.multipleChoice=This question allows choosing one or several answers from a given set of answers. If it is possible to choose more than one answer you will find a hint above the answers. -helpMode.label.question.numberCheckbox=This question allows choosing anumber from a given set of numbers. Please click/tap on the desired number to select it. +helpMode.label.question.numberCheckbox=This question allows choosing a number from a given set of numbers. Please click/tap on the desired number to select it. helpMode.label.question.numberCheckboxText=This question allows choosing a number from a given set of numbers and an additional text. Please click/tap on the desired number to select it and write your answer in the field below. helpMode.label.question.numberInput=This question allows entering a number. If there are any restrictions concerning the number you will find a hint above the answer field. helpMode.label.question.slider=This question allows entering a number on a so-called slider. Please click/tap and hold the handle to move it to the desired position. To delete your answer click/tap on the handle. @@ -899,6 +899,7 @@ sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The answer's step size sliderAnswer.validator.stepsizeLowerEqualZero=The answer's step size was <= 0 sliderAnswer.validator.stepsizeWrongPattern=The answer's step size does not match the required pattern. sliderAnswer.validator.tooManySteps=There are more than 200 steps available. Alternatively you can also use the question type number input. +sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters sliderIcon.validator.missingIconValue=An icon for every field has to be selected, if the feature is enabled. sliderIcon.validator.missingPosition=The icon's position is required. sliderIcon.validator.positionAlreadyInUse=The icon's position of one ore more icons is identical. Please select different values. diff --git a/src/main/resources/message/messages_de_DE.properties b/src/main/resources/message/messages_de_DE.properties index 588a2c47..fb3fb656 100644 --- a/src/main/resources/message/messages_de_DE.properties +++ b/src/main/resources/message/messages_de_DE.properties @@ -896,10 +896,10 @@ sliderAnswer.validator.maxValueNotNull=Die Frage ben\u00f6tigt einen Maximalwert sliderAnswer.validator.maxValueTextNotNull=Die Frage ben\u00f6tigt einen lokalisierten Text f\u00fcr die Maximum-Position sliderAnswer.validator.minBiggerThanMax=Das Minimum der Frage war gleich oder gr\u00f6\u00dfer als das Maximum sliderAnswer.validator.minValueNotNull=Die Frage ben\u00f6tigt einen Minimalwert -sliderAnswer.validator.minValueTextNotNull=Die Frage ben\u00f6tigt einen lokalisierten Text f\u00fcr die Minimum-Position +sliderAnswer.validator.minValueTextNotNull=Der eingegebene Text hat mehr als 255 Zeichen. sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=Die Schrittweite der Frage war gr\u00f6\u00dfer als der Abstand zwischen Minimum und Maximum sliderAnswer.validator.stepsizeLowerEqualZero=Die Schrittweite der Frage war <= 0 -sliderAnswer.validator.stepsizeWrongPattern=Die Schrittweite der Frage entspricht nicht dem geforderten Format. +sliderAnswer.validator.stepsizeWrongPattern=Der eingegebene Text ist hat mehr als 255 Zeichen. sliderAnswer.validator.tooManySteps=Es sind mehr als 200 Schritte vorhanden. Alternativ k\u00f6nnen Sie auch den Fragetyp Zahleneingabe nutzen. sliderIcon.validator.missingIconValue=F\u00fcr jedes Feld muss ein Icon ausgew\u00e4hlt werden, wenn die Funktion f\u00fcr die Frage aktiviert wird. sliderIcon.validator.missingPosition=Die Position des Icons wird ben\u00f6tigt. @@ -1154,4 +1154,5 @@ configuration.label.FHIRViaHL7v2Host=Host des HL7 Kommunikationsservers f\u00fcr configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr den FHIR Export. configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! -survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes \ No newline at end of file +survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes +sliderAnswer.validator.localizedMinimumText=Der eingegebene Text ist lnger als 255 Zeichen. \ No newline at end of file diff --git a/src/main/resources/message/messages_en_GB.properties b/src/main/resources/message/messages_en_GB.properties index 1e21be1e..c42d66cb 100644 --- a/src/main/resources/message/messages_en_GB.properties +++ b/src/main/resources/message/messages_en_GB.properties @@ -1152,4 +1152,5 @@ configuration.label.FHIRViaHL7v2Host=Send FHIR export via HL7 communication serv configuration.label.FHIRViaHL7v2Port=Port of the HL7 communication server for FHIR export. configuration.description.exportFHIRViaHL7v2=For FHIR, export can be set up using an HL7v2 communication server. In this case, the FHIR resource is embedded as a blob in the HL7 message. encounter.error.caseNumberInvalid=The case number was invalid. Please try again! -survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section \ No newline at end of file +survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section +sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters. \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/questionnaire/list.html b/src/main/webapp/WEB-INF/questionnaire/list.html index 627bdbb8..836fd78b 100644 --- a/src/main/webapp/WEB-INF/questionnaire/list.html +++ b/src/main/webapp/WEB-INF/questionnaire/list.html @@ -1,5 +1,5 @@ Date: Fri, 17 Apr 2026 09:34:23 +0200 Subject: [PATCH 02/16] Bumped Version to 3.4.0 --- pom.xml | 2 +- .../WEB-INF/fragments/resourceFragment.html | 92 +++++++++---------- src/main/webapp/WEB-INF/layout/error.html | 10 +- src/main/webapp/WEB-INF/layout/login.html | 14 +-- src/main/webapp/WEB-INF/layout/main.html | 42 ++++----- src/main/webapp/WEB-INF/layout/mobile.html | 2 +- .../WEB-INF/layout/mobileQuestionnaire.html | 6 +- .../webapp/WEB-INF/layout/mobileUser.html | 2 +- src/main/webapp/WEB-INF/layout/pinlogin.html | 14 +-- 9 files changed, 92 insertions(+), 92 deletions(-) diff --git a/pom.xml b/pom.xml index 897db063..b9952fc9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 de.imi MoPat - 3.3.4 + 3.4.0 war MoPat - + - + - + - + @@ -57,70 +57,70 @@ - + - - + + - + diff --git a/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html b/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html index 1194197c..468abafb 100644 --- a/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html +++ b/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/main/webapp/WEB-INF/layout/mobileUser.html b/src/main/webapp/WEB-INF/layout/mobileUser.html index 2e28eb9d..c1944edc 100644 --- a/src/main/webapp/WEB-INF/layout/mobileUser.html +++ b/src/main/webapp/WEB-INF/layout/mobileUser.html @@ -7,6 +7,6 @@ th:with="onLoad='initUser();'" > - + diff --git a/src/main/webapp/WEB-INF/layout/pinlogin.html b/src/main/webapp/WEB-INF/layout/pinlogin.html index cdb837ac..379396c1 100644 --- a/src/main/webapp/WEB-INF/layout/pinlogin.html +++ b/src/main/webapp/WEB-INF/layout/pinlogin.html @@ -28,15 +28,15 @@ - + - + - + - + Date: Fri, 17 Apr 2026 10:08:13 +0200 Subject: [PATCH 03/16] correction of .env and messages.properties --- .env | 2 +- src/main/resources/message/messages_de_DE.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env b/.env index ef8ce715..abfa52fd 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ # !!! ADJUST THESE SETTINGS !!! MYSQL_ROOT_PASSWORD=root MYSQL_USER=mopat -MYSQL_PASSWORD=ld86Y6nM6DtZIUiHAuAm +MYSQL_PASSWORD=mopat PEPPER=AdP5ktlaIVaon53yJg8zEZSnFr33Dinil69ZtZMTWXubKMUEpfyNvOgWLdwNLhedY3WT5TVcqgg # DB Connection settings - The hostname is corresponding to the container name of the db diff --git a/src/main/resources/message/messages_de_DE.properties b/src/main/resources/message/messages_de_DE.properties index fb3fb656..ff4681d4 100644 --- a/src/main/resources/message/messages_de_DE.properties +++ b/src/main/resources/message/messages_de_DE.properties @@ -896,10 +896,10 @@ sliderAnswer.validator.maxValueNotNull=Die Frage ben\u00f6tigt einen Maximalwert sliderAnswer.validator.maxValueTextNotNull=Die Frage ben\u00f6tigt einen lokalisierten Text f\u00fcr die Maximum-Position sliderAnswer.validator.minBiggerThanMax=Das Minimum der Frage war gleich oder gr\u00f6\u00dfer als das Maximum sliderAnswer.validator.minValueNotNull=Die Frage ben\u00f6tigt einen Minimalwert -sliderAnswer.validator.minValueTextNotNull=Der eingegebene Text hat mehr als 255 Zeichen. +sliderAnswer.validator.minValueTextNotNull=Die Frage ben\u00f6tigt einen lokalisierten Text f\u00fcr die Minimum-Position sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=Die Schrittweite der Frage war gr\u00f6\u00dfer als der Abstand zwischen Minimum und Maximum sliderAnswer.validator.stepsizeLowerEqualZero=Die Schrittweite der Frage war <= 0 -sliderAnswer.validator.stepsizeWrongPattern=Der eingegebene Text ist hat mehr als 255 Zeichen. +sliderAnswer.validator.stepsizeWrongPattern=Die Schrittweite der Frage entspricht nicht dem geforderten Format. sliderAnswer.validator.tooManySteps=Es sind mehr als 200 Schritte vorhanden. Alternativ k\u00f6nnen Sie auch den Fragetyp Zahleneingabe nutzen. sliderIcon.validator.missingIconValue=F\u00fcr jedes Feld muss ein Icon ausgew\u00e4hlt werden, wenn die Funktion f\u00fcr die Frage aktiviert wird. sliderIcon.validator.missingPosition=Die Position des Icons wird ben\u00f6tigt. From 3c1680755d4dc36c1d2aa42bdaff6ff2fc320ef6 Mon Sep 17 00:00:00 2001 From: aluapaula Date: Fri, 17 Apr 2026 14:51:15 +0200 Subject: [PATCH 04/16] unit-test for minmaxText, correction of messages.properties & related methods --- .../mopat/validator/QuestionDTOValidator.java | 9 - .../validator/SliderAnswerDTOValidator.java | 30 +- .../resources/message/messages.properties | 1 + .../message/messages_de_DE.properties | 3 +- .../SliderAnswerDTOValidatorTest.java | 43 ++- .../message/messages_de_DE.properties | 329 +++++++++++------- 6 files changed, 256 insertions(+), 159 deletions(-) diff --git a/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java b/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java index 1684b46f..941988de 100644 --- a/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java +++ b/src/main/java/de/imi/mopat/validator/QuestionDTOValidator.java @@ -182,15 +182,6 @@ public void validate(final Object target, final Errors errors) { break; } case SLIDER: - // [bt] tell the errors object that from now on the - // validation refers to the first of the question's answers. - errors.pushNestedPath("answers[0]"); - // [bt] sub-validation - sliderAnswerDTOValidator.validate(questionDTO.getAnswers().get(0L), errors); - // [bt] tell the errors object that validation of the - // sub-element/property of this question is over. - errors.popNestedPath(); - break; case NUMBER_CHECKBOX: case NUMBER_CHECKBOX_TEXT: { // [bt] tell the errors object that from now on the diff --git a/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java b/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java index 49b08572..00041971 100644 --- a/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java +++ b/src/main/java/de/imi/mopat/validator/SliderAnswerDTOValidator.java @@ -118,24 +118,28 @@ public void validate(final Object target, final Errors errors) { //for each entry in localizedMinimumText check if size of entry is bigger than 255 char Map localizedMinimumText = sliderAnswer.getLocalizedMinimumText(); - for (Map.Entry entry : localizedMinimumText.entrySet()){ - if (entry.getValue().length() >= 255){ - errors.rejectValue("localizedMinimumText['" + entry.getKey() + "']", - MoPatValidator.ERRORCODE_ERRORMESSAGE, - messageSource.getMessage("sliderAnswer.validator.localizedMinimumText", - new Object[]{}, LocaleContextHolder.getLocale())); + if (localizedMinimumText != null){ + for (Map.Entry entry : localizedMinimumText.entrySet()){ + if (entry.getValue() != null && entry.getValue().length() > 255){ + errors.rejectValue("localizedMinimumText['" + entry.getKey() + "']", + MoPatValidator.ERRORCODE_ERRORMESSAGE, + messageSource.getMessage("sliderAnswer.validator.localizedMinMaxText", + new Object[]{}, LocaleContextHolder.getLocale())); + } } } + Map localizedMaximumText = sliderAnswer.getLocalizedMaximumText(); - for (Map.Entry entry : localizedMaximumText.entrySet()){ - if (entry.getValue().length() >= 255){ - errors.rejectValue("localizedMaximumText['" + entry.getKey() + "']", - MoPatValidator.ERRORCODE_ERRORMESSAGE, - messageSource.getMessage("sliderAnswer.validator.localizedMinimumText", - new Object[]{}, LocaleContextHolder.getLocale())); + if (localizedMaximumText != null) { + for (Map.Entry entry : localizedMaximumText.entrySet()) { + if (entry.getValue() != null && entry.getValue().length() > 255) { + errors.rejectValue("localizedMaximumText['" + entry.getKey() + "']", + MoPatValidator.ERRORCODE_ERRORMESSAGE, + messageSource.getMessage("sliderAnswer.validator.localizedMinMaxText", + new Object[]{}, LocaleContextHolder.getLocale())); + } } } - } catch (NumberFormatException ex) { } } diff --git a/src/main/resources/message/messages.properties b/src/main/resources/message/messages.properties index 2168e880..698d088f 100644 --- a/src/main/resources/message/messages.properties +++ b/src/main/resources/message/messages.properties @@ -900,6 +900,7 @@ sliderAnswer.validator.stepsizeLowerEqualZero=The answer's step size was <= 0 sliderAnswer.validator.stepsizeWrongPattern=The answer's step size does not match the required pattern. sliderAnswer.validator.tooManySteps=There are more than 200 steps available. Alternatively you can also use the question type number input. sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderIcon.validator.missingIconValue=An icon for every field has to be selected, if the feature is enabled. sliderIcon.validator.missingPosition=The icon's position is required. sliderIcon.validator.positionAlreadyInUse=The icon's position of one ore more icons is identical. Please select different values. diff --git a/src/main/resources/message/messages_de_DE.properties b/src/main/resources/message/messages_de_DE.properties index ff4681d4..70fac682 100644 --- a/src/main/resources/message/messages_de_DE.properties +++ b/src/main/resources/message/messages_de_DE.properties @@ -1155,4 +1155,5 @@ configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes -sliderAnswer.validator.localizedMinimumText=Der eingegebene Text ist lnger als 255 Zeichen. \ No newline at end of file +sliderAnswer.validator.localizedMinimumText=Der eingegebene Text ist lnger als 255 Zeichen. +sliderAnswer.validator.localizedMinMaxText=Der eingegebene Text hat mehr als 255 Zeichen. \ No newline at end of file diff --git a/src/test/java/de/imi/mopat/validator/SliderAnswerDTOValidatorTest.java b/src/test/java/de/imi/mopat/validator/SliderAnswerDTOValidatorTest.java index f67df6ae..b706655c 100644 --- a/src/test/java/de/imi/mopat/validator/SliderAnswerDTOValidatorTest.java +++ b/src/test/java/de/imi/mopat/validator/SliderAnswerDTOValidatorTest.java @@ -12,8 +12,8 @@ import de.imi.mopat.utils.Helper; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.HashMap; -import java.util.Random; +import java.util.*; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -220,5 +220,44 @@ public void testValidate() { assertEquals( "Validation of sliderAnswerDTO failed for invalid instance with minValue null. The returned error message didn't match the expected one.", message, testErrorMessage); +// case 7: localizedMinimum and MaximumText longer than 255 characters + result = new MapBindingResult(new HashMap<>(), + Helper.getRandomAlphabeticString(random.nextInt(13))); + + SortedMap textTooLong = new TreeMap<>(); + textTooLong.put("de_DE", "abc".repeat(100)); + answerDTO.setMinValue(0.0); + answerDTO.setMaxValue(10.0); + answerDTO.setStepsize("1"); + + answerDTO.setLocalizedMinimumText(textTooLong); + + sliderAnswerDTOValidator.validate(answerDTO, result); + + assertTrue("Validation of sliderAnswerDTO failed for invalid instance with LocalizedMaximumText longer than 255 characters." + + "The result hasn't caught errors except it was expected to do.", result.hasErrors()); + + message = messageSource.getMessage( + "sliderAnswer.validator.localizedMinMaxText", + new Object[]{}, LocaleContextHolder.getLocale() + ); + testErrorMessage = result.getAllErrors().get(0).getDefaultMessage(); + assertEquals("Validation of sliderAnswerDTO failed for invalid instance with LocalizedMaximumText longer than 255 characters.", message, testErrorMessage); + + + //MaximumText + result = new MapBindingResult(new HashMap<>(), "answerDTO"); + answerDTO.setLocalizedMinimumText(null); + answerDTO.setLocalizedMaximumText(textTooLong); + + + sliderAnswerDTOValidator.validate(answerDTO, result); + + assertTrue("Validation of sliderAnswerDTO failed for invalid instance with LocalizedMaximumText longer than 255 characters." + + "The result hasn't caught errors except it was expected to do.", result.hasErrors()); + + testErrorMessage = result.getAllErrors().get(0).getDefaultMessage(); + assertEquals("Validation of sliderAnswerDTO failed for invalid instance with LocalizedMaximumText longer than 255 characters.", message, testErrorMessage); + } } diff --git a/src/test/resources/message/messages_de_DE.properties b/src/test/resources/message/messages_de_DE.properties index 8a6bc5ab..22103a77 100644 --- a/src/test/resources/message/messages_de_DE.properties +++ b/src/test/resources/message/messages_de_DE.properties @@ -1,16 +1,65 @@ --=- *=* -/=/ -\!\==\!\= -\=\==\=\= +=+ -<\==<\= +-=- +/=/ <=< ->\==>\= +<\==<\= >=> -admin.information.cache.action=Cache zurücksetzen +>\==>\= +BACK=R\u00fcckansicht +BARCODE=Barcode +BIRTHDATE=Geburtsdatum +BODY_PART=Auswahl K\u00f6rperregion +CASE_NUMBER=Fallnummer +CEIL=Aufrunden +COMMA=Komma +DATE=Datum +DOT=Punkt +DROP_DOWN=Auswahlliste +END_TIME=End-Zeit +FIRSTNAME=Vorname +FLOAT=Flie\u00dfkommazahl +FLOOR=Abrunden +FORMULA=Formel +FREE_TEXT=Freitext +FRONT=Frontansicht +FRONT_BACK=Front- und R\u00fcckansicht +GENDER=Geschlecht +IMAGE=Bild +INFO_TEXT=Info-Text +INTEGER=Ganze Zahl +LANGUAGE=Sprache +LASTNAME=Nachname +MONTHLY=Monatlich (alle 30 Tage) +MULTIPLE_CHOICE=Mehrfachauswahl +NUMBER_CHECKBOX=Nummerierte Checkboxen +NUMBER_CHECKBOX_TEXT=Nummerierte Checkboxen + Freitext +NUMBER_INPUT=Zahleneingabe +PATIENT_ID=Patienten-ID +REPEATEDLY=Mehrmalig +ROLE_ADMIN=Administrator +ROLE_EDITOR=Editor +ROLE_ENCOUNTERMANAGER=Encounter Manager +ROLE_MODERATOR=Moderator +ROLE_USER= Standardbenutzer +SCORE=Score +SLIDER=Slider +STANDARD=Standard-Runden +START_TIME=Start-Zeit +STRING=Zeichenkette +UNIQUELY=Einmalig +VALUE=Wert +WEEKLY=W\u00f6chentlich (alle 7 Tage) +\!\==\!\= +\=\==\=\= +admin.information.cache.action=Cache zurücksetzen admin.information.cache=Zeitpunkt der letzten Aktualisierung des Caches -admin.information.title=Informationen für Administratoren +admin.information.git.branch=Branch +admin.information.git.build.version=Build Version +admin.information.git.commit.id=Commit ID +admin.information.git.commit.message=Commit Nachricht +admin.information.git.title=Git Repository Information +admin.information.title=Informationen f\u00fcr Administratoren admin.navigation.bundle=Fragebogenpakete verwalten admin.navigation.clinic=Kliniken verwalten admin.navigation.configuration=Konfiguration @@ -40,10 +89,6 @@ answer.warning.deleteAnswerWithExportRules=Diese Antwort hat Export-Regeln. Wenn answer.warning.isOtherNotLastAnswer=Diese Antwort wurde als 'Sonstige' markiert und wird als letzte Antwort der Frage angezeigt. auditEntry.error.noSenderReceiver=Beim Versuch, ein Audit-Log f\u00fcr das Senden/Empfangen zu erstellen, wurde kein Empf\u00e4nger/Sender angegeben average=Durchschnitt -BACK=R\u00fcckansicht -BARCODE=Barcode -BIRTHDATE=Geburtsdatum -BODY_PART=Auswahl K\u00f6rperregion bodyPart.back.anus=After bodyPart.back.head=Hinterer Kopf bodyPart.back.hips=Pobereich @@ -92,11 +137,12 @@ bundle.button.add=Fragebogenpaket hinzuf\u00fcgen bundle.button.edit=Editieren bundle.button.lock=Sperren bundle.button.publish=Freigeben +bundle.button.testExport=Zugewiesene Exporte testen bundle.button.remove=L\u00f6schen bundle.error.deleteNotPossible=Das Fragebogenpaket {0} kann nicht gel\u00f6scht werden, da mindestens eine Befragung mit diesem Fragebogenpaket durchgef\u00fchrt wurde. bundle.error.deletePossible=Das Fragebogenpaket {0} wurde gel\u00f6scht. bundle.error.firstQuestionnaireNotActive=Der erste Fragebogen dieses Pakets muss aktiviert sein. -bundle.error.nameContainsSpecialCharacters=Der von Ihnen eingegebene Name enthält ungültige Sonderzeichen. Es dürfen nur Buchstaben, Zahlen, sowie die Sonderzeichen !?+-_.:()[] verwendet werden. +bundle.error.nameContainsSpecialCharacters=Der von Ihnen eingegebene Name enth\u00e4lt ung\u00fcltige Sonderzeichen. Es d\u00fcrfen nur Buchstaben, Zahlen, sowie die Sonderzeichen !?+-_.:()[] verwendet werden. bundle.error.nameInUse=Ein Fragebogenpaket mit dem gew\u00e4hlten Namen existiert bereits. Bitte w\u00e4hlen Sie einen anderen Namen. bundle.error.nameIsEmpty=Der Name darf nicht nur aus Leerzeichen bestehen. bundle.error.noActiveQuestionnaires=Das Fragebogenpaket besitzt keine aktiven Frageb\u00f6gen und kann daher nicht im Testmodus verwendet werden. Bitte wenden Sie sich an den Administrator. @@ -111,6 +157,7 @@ bundle.heading.title=Fragebogenpakete bundle.label.availableLanguages=Verf\u00fcgbare Sprachen bundle.label.bundleName=Name bundle.label.containedInClinics=Enthalten in Kliniken +bundle.label.createdAt=Erstellt bundle.label.deactivateProgressAndNameDuringSurvey=Der Fragebogenname und Fortschritt werden w\u00e4hrend der Befragung nicht angezeigt bundle.label.description=Beschreibung bundle.label.finalText=Beendigungstext @@ -121,16 +168,18 @@ bundle.label.showProgressPerBundle=Die Anzeige des Fortschritts bezieht sich auf bundle.label.status=Status bundle.label.url=URL zum Testen bundle.label.welcomeText=Willkommenstext -bundle.selection.bundles=Fragebogenpaket auswählen... +bundle.selection.bundles=Fragebogenpaket ausw\u00e4hlen... bundle.status.blocked=Gesperrt bundle.status.released=Freigegeben bundle.table.bundleQuestionnairesEmpty=Es sind keine Frageb\u00f6gen zugeordnet +bundle.table.hideQuestionnaireVersions=Versionen ausblenden bundle.table.isEnabled=Aktiviert bundle.table.noMoreQuestionnaires=Es sind keine weiteren Frageb\u00f6gen vorhanden bundle.table.questionnaireDescription=Beschreibung bundle.table.questionnaireName=Name bundle.table.questionnairePosition=Position bundle.table.score=Score +bundle.table.showQuestionnaireVersions=Versionen anzeigen bundle.validator.finalText.notNull=Wenn eine Sprache dieses Fragebogenpakets einen Beendigungstext enth\u00e4lt, m\u00fcssen alle anderen Sprachen ebenfalls einen enthalten. bundle.validator.welcomeText.notNull=Wenn eine Sprache dieses Fragebogenpakets einen Willkommenstext enth\u00e4lt, m\u00fcssen alle anderen Sprachen ebenfalls einen enthalten. bundle.warning.deleteBundleFromClinics=Das Fragebogenpaket ist mindestens einer Klinik zugeordnet. Wollen Sie es trotzdem l\u00f6schen? @@ -138,30 +187,32 @@ bundle.warning.deleteBundleWithConditions=Das Fragebogenpaket ist mindestens ein bundle.warning.deleteBundleWithConditionsAndClinics=Das Fragebogenpaket ist mindestens einer Bedingung und einer Klinik zugeordnet. Die entsprechenden Bedingungen werden ebenfalls gel\u00f6scht. Wollen Sie das Fragebogenpaket trotzdem l\u00f6schen? button.cancel=Abbrechen button.deleteAll=Alle l\u00f6schen +button.duplicate=Duplizieren button.edit=Bearbeiten button.ok=Ok button.remove=Entfernen button.save=Speichern button.selectAll=Alle ausw\u00e4hlen -CASE_NUMBER=Fallnummer -CEIL=Aufrunden clinic.button.add=Klinik hinzuf\u00fcgen clinic.button.edit=Bearbeiten clinic.button.remove=L\u00f6schen -clinic.error.nameContainsSpecialCharacters=Der von Ihnen eingegebene Name enthält ungültige Sonderzeichen. Es dürfen nur Buchstaben, Zahlen, sowie die Sonderzeichen !?+-_.:()[] verwendet werden. +clinic.error.nameContainsSpecialCharacters=Der von Ihnen eingegebene Name enth\u00e4lt ung\u00fcltige Sonderzeichen. Es d\u00fcrfen nur Buchstaben, Zahlen, sowie die Sonderzeichen !?+-_.:()[] verwendet werden. clinic.error.nameInUse=Eine Klinik mit dem gew\u00e4hlten Namen existiert bereits. Bitte w\u00e4hlen Sie einen anderen Namen. clinic.error.nameIsEmpty=Der Name darf nicht nur aus Leerzeichen bestehen. +clinic.error.noConfiguration=Es wurde keine Konfiguration ausgew\u00e4hlt. clinic.heading.assignedBundles=Zugewiesene Fragebogenpakete clinic.heading.assignedUsers=Zugewiesene Benutzer clinic.heading.availableBundle=Verf\u00fcgbare Fragebogenpakete clinic.heading.availableBundleInfo=Es werden nur Fragebogenpakete angezeigt, die mindestens einen Fragebogen enthalten und ver\u00f6ffentlicht wurden clinic.heading.availableUsers=Verf\u00fcgbare Benutzer +clinic.heading.clinicConfiguration=Klinik Konfiguration clinic.heading.editClinic=Klinik bearbeiten clinic.heading.title=Kliniken clinic.label.defaultBundle=Standardpaket clinic.label.description=Beschreibung clinic.label.email=E-Mail clinic.label.name=Klinikname +clinic.message.deleteFailure=Klinik {0} kann nicht gel\u00f6scht werden, da sie eine aktive Befragung hat. clinic.message.deleteSuccess=Die Klinik {0} wurde gel\u00f6scht. clinic.table.bundleDescription=Beschreibung clinic.table.bundleName=Name @@ -172,7 +223,6 @@ clinic.table.noMoreBundles=Keine Fragebogenpakete verf\u00fcgbar clinic.table.noMoreUsers=Keine Benutzer verf\u00fcgbar clinic.table.userName=Benutzername clinic.table.usersEmpty=Keine Benutzer zugewiesen -COMMA=Komma condition.button.add=Bedingung hinzuf\u00fcgen condition.button.addTarget=Ziel hinzuf\u00fcgen condition.button.backToQuestionnaire=Zur\u00fcck zum Fragebogen @@ -188,13 +238,13 @@ condition.error.unknownTrigger=Ausl\u00f6ser unbekannt condition.heading.title.edit=Bedingung bearbeiten condition.heading.title.new=Neue Bedingung condition.heading.title=Bedingungen zur Frage +condition.label.DISABLE=nicht anzeigen +condition.label.ENABLE=anzeigen condition.label.action=Folgende Aktion durchf\u00fchren condition.label.condition=Bedingung condition.label.conditionAnswer=Bedingungen deren Ziel eine Antwort ist condition.label.conditionQuestion=Bedingungen deren Ziel eine Frage ist condition.label.conditionQuestionnaire=Bedingungen deren Ziel ein Fragebogen ist -condition.label.DISABLE=nicht anzeigen -condition.label.ENABLE=anzeigen condition.label.ending=nicht anzeigen. condition.label.fromBundle=aus Paket condition.label.fromQuestion=aus der Frage @@ -213,7 +263,7 @@ condition.option.answer=Antwort condition.option.question=Frage condition.option.questionnaire=Fragebogen condition.warning.changeTrigger=Wenn Sie den Ausl\u00f6ser der Begingungen \u00e4ndern, werden alle neu erstellten bzw. modifizierten Bedingungen nicht gespeichert und verworfen. Wollen Sie den Ausl\u00f6ser wirklich \u00e4ndern? -configuration.alert.uploadImagePath=WARNUNG: Wenn Sie den Pfad ändern, sind die zuvor gespeicherten Bilder nicht mehr von MoPat verwendbar. Sie sind weiterhin am alten Ort gespeichert und können manuell in das neue Verzeichnis kopiert werden, um sie wieder zugänglich zu machen. +configuration.alert.uploadImagePath=WARNUNG: Wenn Sie den Pfad \u00e4ndern, sind die zuvor gespeicherten Bilder nicht mehr von MoPat verwendbar. Sie sind weiterhin am alten Ort gespeichert und k\u00f6nnen manuell in das neue Verzeichnis kopiert werden, um sie wieder zug\u00e4nglich zu machen. configuration.button.add=Hinzuf\u00fcgen configuration.button.remove=Entfernen configuration.description.baseUrl=Dies ist die Base-URL einschlie\u00dflich des Kontextpfades der Anwendung. @@ -221,6 +271,7 @@ configuration.description.exportPath=Hierhin werden die beantworteten Frageb\u00 configuration.description.finishedEncounterMailaddressTimeWindowInMillis=Alle E-Mail Adressen von abgeschlossenen Befragungen, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 30 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.finishedEncounterScheduledTimeWindowInMillis=Alle abgeschlossenen Befragungsserien, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 90 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.finishedEncounterTimeWindowInMillis=Alle abgeschlossenen Befragungen, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 30 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. +configuration.description.imprint=Geben Sie den Inhalt des Impressums ein configuration.description.incompleteEncounterScheduledTimeWindowInMillis=Alle nicht abgeschlossenen Befragungsserien, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 180 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.incompleteEncounterTimeWindowInMillis=Alle nicht abgeschlossenen Befragungen, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 180 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.logo=Bitte laden Sie ein Logo in einem rechteckigen Format und mit transparentem Hintergrund hoch, um die bestm\u00f6gliche visuelle Darstellung auf unserer Plattform zu gew\u00e4hrleisten. @@ -232,6 +283,15 @@ configuration.error.wrongValidationSchemaType=Das Dateiformat entspricht nicht d configuration.file.notUploaded=Keine Datei hochgeladen configuration.file.path=Pfad der hochgeladenen Datei configuration.file.uploaded=Datei hochgeladen +configuration.label.FHIRsystemURI=System URI f\u00fcr FHIR Export +configuration.label.HL7v22PatientInformationRetrieverHostname=Host f\u00fcr den HL7v22PatientInformationRetriever +configuration.label.HL7v22PatientInformationRetrieverPort=Port f\u00fcr den HL7v22PatientInformationRetriever +configuration.label.ODMviaHL7Hostname=Host des HL7 Kommunikationsservers f\u00fcr den ODM Export. +configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" f\u00fcr den HL7 Exporter (OBR-3). +configuration.label.ODMviaHL7Port=Port des HL7 Kommunikationsservers f\u00fcr den ODM Export. +configuration.label.ODMviaHL7ReceivingApplication=Empfangende f\u00fcr den HL7 Exporter (MSH-5). +configuration.label.ODMviaHL7ReceivingFacility= Empfangende Anwendung HL7 Exporter (MSH-6). +configuration.label.ODMviaHL7SendingFacility=Sendende Anwendung f\u00fcr den HL7 Exporter (MSH-4). configuration.label.activeDirectoryLdapAuthenticationProviderActivated=Authentifizierung per Active Directory erlauben configuration.label.activeDirectoryLdapAuthenticationProviderDefaultLanguage=Standardsprache f\u00fcr E-Mails, die an Active Directory-Nutzer gesendet werden configuration.label.activeDirectoryLdapAuthenticationProviderDomain=Domain f\u00fcr das Active Directory @@ -243,7 +303,7 @@ configuration.label.applicationMailer.phoneFooter=Telefonnummer in der Signatur configuration.label.baseUrl=Basis URL f\u00fcr diese Anwendung configuration.label.caseNumberType=Typ der Fallnummer bei Fallnummerneingabe configuration.label.defaultLanguage=Standardsprache f\u00fcr die Anwendung -configuration.label.enableGlobalPinAuth=Die Verwendung eines Pins erlauben, um Nutzern eine schnelle Anwendung zu ermöglichen. +configuration.label.enableGlobalPinAuth=Die Verwendung eines Pins erlauben, um Nutzern eine schnelle Anwendung zu ermöglichen. configuration.label.encounter.checkTimeActivated=Abgeschlossene Befragungen nach einer vorgegebenden Zeit l\u00f6schen configuration.label.encounter.finishedEncounterMailaddressTimeWindowInMillis=Zeit, nach der die E-Mail Adressen der Patienten nach abgeschlossenen Befragungen gel\u00f6scht werden (in ms) configuration.label.encounter.finishedEncounterScheduledTimeWindowInMillis=Zeit, nach der abgeschlossene Befragungsserien gel\u00f6scht werden (in ms) @@ -253,11 +313,10 @@ configuration.label.encounter.incompleteEncounterTimeWindowInMillis=Zeit, nach d configuration.label.executionTime=Stunde, in der die Ausf\u00fchrung der Befragungen starten soll configuration.label.exportFHIRInDirectory=Dateibasierten FHIR-Export nutzen. configuration.label.exportFHIRPath=Exportpfad f\u00fcr den dateibasierten FHIR-Export. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. -configuration.label.exportFHIRUrl=URL der REST-Schnittstelle f\u00fcr den FHIR-Export / URL des Kommunikationsservers -configuration.label.exportFHIRViaCommunicationServer=FHIR-Export an Kommunikationsserver senden. -configuration.label.exportHL7_OBRFillerOrderNumber="Filler Order Number" f\u00fcr den HL7 Exporter (OBR-3). -configuration.label.exportHL7ClientPKCSPassword=Password für den privaten Schlüssel des Clients (der in der angegebenen Datei enthalten ist). -configuration.label.exportHL7ClientPKCSPath=Client PKCS 12 Archiv (.p12 Datei), das den Client authorisiert und die Nachricht verschlüsselt. Bitte laden Sie ein valides PKCS Archiv hoch. +configuration.label.exportFHIRUrl=URL der REST-Schnittstelle f\u00fcr den FHIR-Export. +configuration.label.exportFHIRViaCommunicationServer=FHIR-Export an REST Schnittstelle senden. +configuration.label.exportHL7ClientPKCSPassword=Password f\u00fcr den privaten Schl\u00fcssel des Clients (der in der angegebenen Datei enthalten ist). +configuration.label.exportHL7ClientPKCSPath=Client PKCS 12 Archiv (.p12 Datei), das den Client authorisiert und die Nachricht verschl\u00fcsselt. Bitte laden Sie ein valides PKCS Archiv hoch. configuration.label.exportHL7Host=Host des HL7 Kommunikationsservers. configuration.label.exportHL7InDirectory=Dateibasierten HL7-Export nutzen. configuration.label.exportHL7Path=Exportpfad f\u00fcr den dateibasierten HL7-Export. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. @@ -266,30 +325,23 @@ configuration.label.exportHL7ReceivingApplication=Empfangende f\u00fcr den HL7 E configuration.label.exportHL7ReceivingFacility= Empfangende Anwendung HL7 Exporter (MSH-6). configuration.label.exportHL7SendingFacility=Sendende Anwendung f\u00fcr den HL7 Exporter (MSH-4). configuration.label.exportHL7ServerCertificatePath=Server Zertifikat, dass den Server verifiziert. Bitte laden Sie ein valides Zertifikat hoch. -configuration.label.exportHL7UseClientAuth=Nutzen eines Zertifikats, um den Client dem Server gegenüber zu verifizieren. -configuration.label.exportHL7UseTLS=Verschlüsseln der Nachricht mittels TLS. +configuration.label.exportHL7UseClientAuth=Nutzen eines Zertifikats, um den Client dem Server gegen\u00fcber zu verifizieren. +configuration.label.exportHL7UseTLS=Verschl\u00fcsseln der Nachricht mittels TLS. configuration.label.exportHL7ViaCommunicationServer=HL7-Export an Kommunikationsserver senden. +configuration.label.exportHL7_OBRFillerOrderNumber="Filler Order Number" f\u00fcr den HL7 Exporter (OBR-3). configuration.label.exportODMInDirectory=Dateibasierten ODM-Export nutzen. configuration.label.exportODMPath=Exportpfad f\u00fcr den dateibasierten ODM-Export. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. configuration.label.exportODMUrl=URL der REST-Schnittstelle f\u00fcr den ODM-Export. -configuration.label.exportODMviaHL7=ODM Export via HL7 Kommunikationsserver senden. configuration.label.exportODMViaRest=ODM-Export an REST-Schnittstelle senden. +configuration.label.exportODMviaHL7=ODM Export via HL7 Kommunikationsserver senden. configuration.label.exportOrbisPath=Exportpfad f\u00fcr den dateibasierten Orbis-Export. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. configuration.label.exportREDCapApiToken=API Token der REST-Schnittstelle f\u00fcr den REDCap-Export. configuration.label.exportREDCapInDirectory=Dateibasierten REDCap-Export nutzen. configuration.label.exportREDCapPath=Exportpfad f\u00fcr den dateibasierten REDCap-Export. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. configuration.label.exportREDCapUrl=URL der REST-Schnittstelle f\u00fcr den REDCap-Export. configuration.label.exportREDCapViaRest=REDCap-Export an REST-Schnittstelle senden. -configuration.label.FHIRsystemURI=System URI für FHIR Export -configuration.label.HL7v22PatientInformationRetrieverHostname=Host f\u00fcr den HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverHostname=Host f\u00fcr den HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port f\u00fcr den HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port f\u00fcr den HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever -configuration.label.imageUploadPath=Pfad für hochgeladene Bilder. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. +configuration.label.imageUploadPath=Pfad f\u00fcr hochgeladene Bilder. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. +configuration.label.imprint=Impressum configuration.label.logo=Logo configuration.label.mailSender.auth=SMTP-Authentifizierung configuration.label.mailSender.from=Absender des Mailing-Systems @@ -302,18 +354,6 @@ configuration.label.metadataExporterODMOID=Object Identifier (OID f\u00fcr den O configuration.label.metadataExporterPDF=URL des ODM zu PDF Converters configuration.label.name=Konfigurationsgruppe configuration.label.object.storagePath=Dateipfad f\u00fcr Uploads (z.B. Export-Templates). Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. -configuration.label.ODMviaHL7Hostname=Host des HL7 Kommunikationsservers f\u00fcr den ODM Export. -configuration.label.ODMviaHL7Hostname=Host des HL7 Kommunikationsservers f\u00fcr den ODM Export. -configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" f\u00fcr den HL7 Exporter (OBR-3). -configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" f\u00fcr den HL7 Exporter (OBR-3). -configuration.label.ODMviaHL7Port=Port des HL7 Kommunikationsservers f\u00fcr den ODM Export. -configuration.label.ODMviaHL7Port=Port des HL7 Kommunikationsservers f\u00fcr den ODM Export. -configuration.label.ODMviaHL7ReceivingApplication=Empfangende f\u00fcr den HL7 Exporter (MSH-5). -configuration.label.ODMviaHL7ReceivingApplication=Empfangende f\u00fcr den HL7 Exporter (MSH-5). -configuration.label.ODMviaHL7ReceivingFacility= Empfangende Anwendung HL7 Exporter (MSH-6). -configuration.label.ODMviaHL7ReceivingFacility= Empfangende Anwendung HL7 Exporter (MSH-6). -configuration.label.ODMviaHL7SendingFacility=Sendende Anwendung f\u00fcr den HL7 Exporter (MSH-4). -configuration.label.ODMviaHL7SendingFacility=Sendende Anwendung f\u00fcr den HL7 Exporter (MSH-4). configuration.label.patientRetrieverClass=Implementierung der Patientenstammdaten-Abfrage configuration.label.pseudonymizationService.path=URL des Pseudonymisierungsserver configuration.label.pseudonymizationService=Abfrage eines Pseudonyms mittels Patientenstammdaten aktivieren @@ -332,31 +372,33 @@ configuration.validate.double=Der Wert f\u00fcr das Feld {field} ist keine Dezim configuration.validate.integer=Der Wert f\u00fcr das Feld {field} muss zwischen 0 und 2E31-1 liegen. configuration.validate.localPath=MoPat besitzt f\u00fcr das Feld {field} keine Lese-/Schreibrechte. configuration.validate.long=Der Wert f\u00fcr das Feld {field} muss zwischen 0 und 2E63-1 liegen. +configuration.validate.mappedConfigurationNotFound=Der Wert f\u00fcr diese Konfiguration wurde nicht ausgew\u00e4hlt. configuration.validate.multipleName=Der Name dieser Konfigurationsgrouppe kommt mehrfach vor. configuration.validate.noName=Diese Konfigurationsgruppe besitzt keinen Namen. configuration.validate.pattern=Der Wert f\u00fcr das Feld {field} entspricht nicht dem ben\u00f6tigten Format f\u00fcr dieses Feld. +configuration.validate.xss=Der Text enthält unzulässige Elemente (z.B. Script-Elemente) +configurationGroup.label.FHIR=FHIR-Export +configurationGroup.label.HLSeven=HL7-Export +configurationGroup.label.ODM=ODM-Export +configurationGroup.label.ORBIS=Orbis-Export +configurationGroup.label.REDCap=REDCap-Export configurationGroup.label.activeDirectoryAuthentication=Active Directory Authentifizierung configurationGroup.label.encounter=Befragungen -configurationGroup.label.FHIR=FHIR-Export configurationGroup.label.general=Allgemein -configurationGroup.label.HLSeven=HL7-Export configurationGroup.label.info=Hier kann ein Name f\u00fcr die Konfigurations-Gruppe angegeben werden, um diese eindeutig zu identifizieren, da diese wiederholbar ist. configurationGroup.label.mail=E-mail configurationGroup.label.metadataExporter=Metadaten Exporter -configurationGroup.label.ODM=ODM-Export -configurationGroup.label.ORBIS=Orbis-Export configurationGroup.label.patientDataRetriever=Registrierung von Patienten -configurationGroup.label.REDCap=REDCap-Export +configurationGroup.label.pseudonymization=Pseudonymization configurationGroup.label.support=Support +configurationGroup.label.usePatientLookUp=Suche nach Patienten counter=Z\u00e4hler -DATE=Datum dateAnswer.validator.endDateWrongFormat=Das sp\u00e4teste Datum hat das falsche Format dateAnswer.validator.endEarlierThanStart=Das sp\u00e4teste Datum ist fr\u00fcher als das fr\u00fcheste Datum dateAnswer.validator.startDateWrongFormat=Das fr\u00fcheste Datum hat das falsche Format dateAnswer.validator.startEqualsEnd=Das fr\u00fcheste Datum darf nicht dem sp\u00e4testen Datum entsprechen dateAnswer.validator.startLaterThanEnd=Das fr\u00fcheste Datum ist sp\u00e4ter als das sp\u00e4teste Datum -DOT=Punkt -DROP_DOWN=Auswahlliste +editor.welcome=Willkommen zur Mobilen Patientenbefragung (MoPat)!

Dies ist die Administrationsoberfl\u00e4che von MoPat.
Sie k\u00f6nnen von dieser Oberfl\u00e4che ausMoPat ist eine Entwicklung des Instituts f\u00fcr Medizinische Informatik, M\u00fcnster, unter Leitung von Univ.-Prof. Dr. rer. nat. Dominik Heider.
Sie erreichen uns unter {1} oder {2}. encounter.button.encounterName=Name encounter.button.export=Exportieren encounter.error.caseNumberIsEmpty=Die Fallnummer darf nicht nur aus Leerzeichen bestehen. @@ -377,7 +419,6 @@ encounter.label.endDate=Enddatum encounter.label.export=Exporte (abgeschlossen/zugewiesen) encounter.label.lastReminderDate=Letzte Erinnerungsmail am encounter.label.startDate=Startdatum -encountermanager.welcome=Willkommen zur Mobilen Patientenbefragung (MoPat)!

Dies ist die Administrationsoberfl\u00e4che von MoPat.
Sie k\u00f6nnen von dieser Oberfl\u00e4che ausMoPat ist eine Entwicklung des Instituts f\u00fcr Medizinische Informatik, M\u00fcnster, unter Leitung von Univ.-Prof. Dr. rer. nat. Dominik Heider.
Sie erreichen uns unter {1} oder {2}. encounterScheduled.button.abort=Bricht die Befragungsserie ab, es werden keine weiteren Befragungen erstellt und E-Mails gesendet. encounterScheduled.button.addressRejected=Die angegebene E-Mail-Adresse existiert nicht. Bitte \u00e4ndern Sie diese. encounterScheduled.button.consentPending=Warte auf Antwort des Patienten. @@ -403,6 +444,7 @@ encounterScheduled.label.born=Geboren am encounterScheduled.label.cancelEncounterDialog=Sind Sie sich wirklich sicher die Befragungsserie abzubrechen? encounterScheduled.label.caseNumber=Fallnummer/Pseudonym encounterScheduled.label.changeEmail=E-Mail-Adresse bearbeiten +encounterScheduled.label.clinic=Zugeh\u00f6rige Klinik der Befragungen encounterScheduled.label.date=Datum encounterScheduled.label.email=E-Mail encounterScheduled.label.encounterScheduledAll=Alle Befragungsserien @@ -431,24 +473,17 @@ encounterScheduled.validator.enddateEmpty=Das Enddatum darf nicht leer sein encounterScheduled.validator.enddateMustBeAfterStartdate=Das Enddatum muss hinter dem Startdatum liegen encounterScheduled.validator.invalidReplyMail=E-Mail Adresse ung\u00fcltig encounterScheduled.validator.repeatPeriodGreaterThanZero=Die Anzahl der Tage muss gr\u00f6\u00dfer als Null sein -encounterScheduled.validator.startdateCanNotBeInThePast=Startdatum darf nicht in der Vergangenheit liegen encounterScheduled.validator.startDateEmpty=Das Startdatum darf nicht leer sein +encounterScheduled.validator.startdateCanNotBeInThePast=Startdatum darf nicht in der Vergangenheit liegen encounterScheduled.warning.daysShorterThanThePeriod=Der eingestellte Wiederholungszeitraum ist gr\u00f6\u00dfer als der Zeitraum zwischen dem Start- und Enddatum. Es wird somit nur eine Befragung zum Startdatum ausgef\u00fchrt. -END_TIME=End-Zeit +encountermanager.welcome=Willkommen zur Mobilen Patientenbefragung (MoPat)!

Dies ist die Administrationsoberfl\u00e4che von MoPat.
Sie k\u00f6nnen von dieser Oberfl\u00e4che ausMoPat ist eine Entwicklung des Instituts f\u00fcr Medizinische Informatik, M\u00fcnster, unter Leitung von Univ.-Prof. Dr. rer. nat. Dominik Heider.
Sie erreichen uns unter {1} oder {2}. +error.heading.clinicNotFound=Sie sind derzeit keiner Klinik zugewiesen. Bitte kontaktieren Sie den MoPat Support: error.heading.denied=Zugriff verweigert! error.heading.internalservererror=Oops! Da lief wohl was schief. Das Support-Team wurde automatisch informiert. error.heading.pagenotfound=Die von Ihnen angeforderte Seite ist nicht vorhanden. Entweder haben Sie sich beim Eintippen der Adresse vertippt oder die Seite existiert nicht mehr. error.heading.sessionTimeout=Ihre Sitzung ist abgelaufen, da Sie zu lange inaktiv waren.
Bitte melden Sie sich erneut an. filter.label.noHits=Die Suche ergab keine Treffer. filter.label.placeholder=Suchen -FIRSTNAME=Vorname -FLOAT=Flie\u00dfkommazahl -FLOOR=Abrunden -FORMULA=Formel -FREE_TEXT=Freitext -FRONT_BACK=Front- und R\u00fcckansicht -FRONT=Frontansicht -GENDER=Geschlecht header.userOptions.edit=Profil bearbeiten header.userOptions.logout=Abmelden header.userOptions.signedInAs=Angemeldet als @@ -464,7 +499,7 @@ helpMode.label.completenessCheck.nextQuestionnaireButton=Wenn Sie auf diesen But helpMode.label.completenessCheck.previousButton=Wenn Sie auf diesen Button klicken/tippen, k\u00f6nnen Sie die noch nicht vollst\u00e4ndig beantworteten Fragen beantworten. helpMode.label.header=Hilfetext helpMode.label.increaseDecrease=Wenn Sie auf diese Button klicken/tippen, wird die Schriftgr\u00f6\u00dfe der Frage und Antwort(en) vergr\u00f6\u00dfert oder verkleinert. -helpMode.label.question.bodyPart=Diese Frage erlaubt die Auswahl eines Körperteils, um die Frage zu beantworten. Bitte klicken/tippen Sie auf ein Körperteil. Sie können die Antwort löschen, indem Sie erneut auf dasselbe Körperteil klicken/tippen. +helpMode.label.question.bodyPart=Diese Frage erlaubt die Auswahl eines K\u00f6rperteils, um die Frage zu beantworten. Bitte klicken/tippen Sie auf ein K\u00f6rperteil. Sie k\u00f6nnen die Antwort l\u00f6schen, indem Sie erneut auf dasselbe K\u00f6rperteil klicken/tippen. helpMode.label.question.date=Diese Frage erlaubt die Eingabe eines Datums. Klicken/Tippen Sie bitte das Feld an und w\u00e4hlen dort das gew\u00fcnschte Datum aus. helpMode.label.question.dropDown=Diese Frage erlaubt die Auswahl einer Option aus einer vorgegebenen Liste von Antworten. Klicken/Tippen Sie bitte auf die Auswahlliste und w\u00e4hlen Sie eine Antwort aus der Liste aus. helpMode.label.question.freeText=Diese Frage erlaubt die Eingabe eines Textes. Klicken/Tippen Sie bitte das Feld an und schreiben Sie bitte Ihre Antwort in das Feld. @@ -490,7 +525,6 @@ helpMode.label.questionnaireWelcome.logo=Dies ist das Logo des Fragebogens. helpMode.label.questionnaireWelcome.nextButton=Wenn Sie auf diesen Button klicken/tippen, starten Sie den Fragebogen. helpMode.label.questionnaireWelcome.text=Dies ist der Willkommenstext des Fragebogens. helpMode.label.questionnaireWelcome.title=Das ist der Name des Fragebogens. -IMAGE=Bild imageAnswer.error.upload=Beim Hochladen des Bildes ist ein Fehler aufgetreten. imageAnswer.validator.fileTooBig=Das ausgew\u00e4hlte Bild war gr\u00f6\u00dfer als 2 MB, bitte w\u00e4hlen Sie ein kleineres Bild aus. imageAnswer.validator.noFilePath=Der Dateipfad darf nicht leer sein. @@ -525,11 +559,12 @@ import.fhir.questionnaire.descriptionSetToTitle=Der Fragebogen enth\u00e4lt kein import.fhir.validate.error=Beim Validieren der Datei ist ein Fehler aufgetreten. {0}. import.fhir.validate.invalidFile=Die eingegebene Datei entspricht nicht der FHIR Spezifikation. Folgender Fehler ist aufgetreten: {0}. import.fhir.validate.schemaFileDirectoryNull=Das Verzeichnis der XML Schema Definitions ist fehlerhaft. -import.odm.v132.codeList.codedValueLastCharacterSpace=Das letzte Zeichen der CodedValue ist ein Leerzeichen und kann aufgrund dessen nicht manuell gemappt werden. -import.odm.v132.codeList.codedValueNotDouble=Die CodedValue {0} ist nicht vom richtigen Datentyp Double und kann somit nicht als Wert f\u00fcr die Scoreberechnung gespeichert werden. +import.fhir.validation.error.detailed={0}: Line: {1}; Path: {2}; Message: {3} import.odm.v132.codeList.codeListItemListNullEmpty=Die CodeList mit OID {0}, die in der MetaDataVersion mit OID {1} enthalten und in ItemDef mit OID {2} referenziert wurde, ist leer. Ggf. referenzierte Antworten wurden nicht importiert. import.odm.v132.codeList.codeListItemNoOrderNumber=Das CodeListItem mit CodedValue {0}, das in der MetaDataVersion mit OID {1} enthalten und in ItemDef mit OID {2} referenziert wurde, hat keine OrderNumber. CodeListItems derselben CodeList wurden basierend auf der Reihenfolge in der XML-Datei importiert. import.odm.v132.codeList.codeListItemNoTranslatedText=Im CodeListItem mit CodedValue {0}, das in der MetaDataVersion mit OID {1} enthalten und in ItemDef mit OID {2} referenziert wurde, konnte kein Text mit Sprach-Attribut 'de-DE', 'de', oder dem Standardwert und der Minimall\u00e4nge von {3} Zeichen gefunden werden. Die Antwort wurde nicht importiert. +import.odm.v132.codeList.codedValueLastCharacterSpace=Das letzte Zeichen der CodedValue ist ein Leerzeichen und kann aufgrund dessen nicht manuell gemappt werden. +import.odm.v132.codeList.codedValueNotDouble=Die CodedValue {0} ist nicht vom richtigen Datentyp Double und kann somit nicht als Wert f\u00fcr die Scoreberechnung gespeichert werden. import.odm.v132.conditionDef.ConditionIncluded=Die folgende Bedingung wurde eingef\u00fcgt: Antwort mit dem Wert {0} in der Frage mit der OID {1} aktiviert die Frage mit der OID {2}. import.odm.v132.conditionDef.ConditionMissingItemData=Fehler beim Anlegen der Bedingung f\u00fcr die Frage mit der OID {0}. Die Bedingung enth\u00e4lt keine valide ItemDataOID. import.odm.v132.conditionDef.ConditionMissingItemGroupData=Fehler beim Anlegen der Bedingung f\u00fcr die Frage mit der OID {0}. Die Bedingung enth\u00e4lt keine valide ItemGroupDataOID. @@ -579,8 +614,6 @@ import.odm.v132.itemGroupDef.itemRefListNullEmpty=Das ItemGroupDef mit OID {0} e import.odm.v132.itemGroupDef.noMatchingItemDefForItemRef=Die in ItemGroupDef mit OID {0} referezierte ItemDef-OID {1} wurde nicht gefunden. Die Fragen wurde nicht importiert. import.odm.v132.metaDataVersion.itemDefListNullEmpty=Die MetaDataVersion mit OID {0} enthielt keine ItemDefs. Es wurden keine Fragen importiert. import.odm.v132.metaDataVersion.itemGroupDefListNullEmpty=Die MetaDataVersion mit OID {0} enthielt keine ItemGroupDefs. Es wurden keine Fragen importiert. -INFO_TEXT=Info-Text -INTEGER=Ganze Zahl invitation.button.addUser=Benutzer hinzuf\u00fcgen invitation.button.newInvitation=Neue Einladung erstellen invitation.button.refreshExpirationDate=Ablaufdatum erneuern und E-Mail erneut senden @@ -594,8 +627,6 @@ invitation.label.fileInfo=Die Personendaten, Vorname, Nachname und E-Mail-Adress invitation.label.firstname=Vorname invitation.label.lastname=Nachname invitation.label.user=Benutzer -LANGUAGE=Sprache -LASTNAME=Nachname layout.button.back=Zur\u00fcckgehen layout.button.close=Befragung abbrechen und beenden layout.footer.copyright=2026 Institut f\u00fcr Medizinische Informatik,
Universit\u00e4t M\u00fcnster @@ -628,19 +659,26 @@ mail.invitation.content=Sehr geehrter Nutzer,\n\nwir laden Sie ein, die Mobile P mail.invitation.footer=\n\nIhr MoPat-Team\n\n-- \nMoPat\nE-Mail: {0}\nTel.: {1} mail.invitation.personal=und schicken Ihnen folgende pers\u00f6nliche Nachricht:\n\n{0} mail.invitation.subject=Einladung zu MoPat +mapping.autosave.body=Das Export-Mapping wurde automatisch gespeichert. +mapping.autosave.title=Automatisches Speichern +mapping.button.clearMapping=Zuweisung zur\u00fccksetzen mapping.button.map=Zuordnungen bearbeiten +mapping.button.mapData=Felder automatisch zuordnen mapping.button.upload=Template hochladen mapping.error.assignedtobundle=Das Export Template {0} wird in einem Fragebogenpaket verwendet und kann deshalb nicht gel\u00f6scht werden mapping.error.decimalPlacesWrongFormat=Format der Dezimalstellen falsch. (Ganze Zahl > 0 eingeben) mapping.error.notemplates=Kein Export-Template vorhanden +mapping.error.uploadTemplateNotReadableResource=Die FHIR-Datei enth\u00e4lt eine f\u00fcr MoPat nicht lesbare Resource. Es werden nur Questionnaire oder QuestionnaireResponse als Resource akzeptiert. mapping.error.uploadtemplateFile=Bitte stellen Sie eine Export-Template-Datei zur Verf\u00fcgung mapping.error.uploadtemplateName=Bitte geben Sie einen Namen f\u00fcr das Export-Template an -mapping.error.uploadTemplateNotReadableResource=Die FHIR-Datei enth\u00e4lt eine f\u00fcr MoPat nicht lesbare Resource. Es werden nur Questionnaire oder QuestionnaireResponse als Resource akzeptiert. mapping.error.uploadtemplateREDCapFileError=Die angegebene Datei konnte nicht gelesen werden mapping.error.uploadtemplateREDCapFileMissingRecordId=Die angegebene Datei enthielt kein Feld mit dem Namen 'record_id' mapping.heading.metadata=Meta-Daten mapping.heading.title=Export-Templates des Fragebogens mapping.heading.uploadtemplate=Export-Template hochladen +mapping.label.MinMaxStepSize=Schrittgr\u00f6\u00dfe +mapping.label.MinMaxTexts=Min/Max-Texte +mapping.label.MinMaxValues=Min/Max-Werte mapping.label.decimalDelimiter=Dezimaltrennzeichen mapping.label.decimalPlaces=Dezimalstellen mapping.label.filename=Dateiname @@ -648,9 +686,6 @@ mapping.label.float=Flie\u00dfkommazahl mapping.label.formatting=Formatierung mapping.label.information=Rote Template Felder k\u00f6nnen aufgrund eines Leerzeichens am Ende des Namens nicht gemappt werden. mapping.label.integer=Ganze Zahl -mapping.label.MinMaxStepSize=Schrittgr\u00f6\u00dfe -mapping.label.MinMaxTexts=Min/Max-Texte -mapping.label.MinMaxValues=Min/Max-Werte mapping.label.name=Name mapping.label.numberType=Zahlentyp mapping.label.originalFilename=Original-Dateiname @@ -662,16 +697,18 @@ mapping.label.templateFields=Template-Felder mapping.label.type=Typ maximum=Maximum von minimum=Minimum von -MONTHLY=Monatlich (alle 30 Tage) -MULTIPLE_CHOICE=Mehrfachauswahl -NUMBER_CHECKBOX_TEXT=Nummerierte Checkboxen + Freitext -NUMBER_CHECKBOX=Nummerierte Checkboxen -NUMBER_INPUT=Zahleneingabe +modal.delete.cancel=Abbrechen +modal.delete.confirm=L\u00f6schen +modal.delete.question.clinic=Sind Sie sicher, dass Sie die Klinik "{0}" l\u00f6schen m\u00f6chten? +modal.delete.question.questionnaire=Sind Sie sicher, dass Sie den Fragebogen "{0}" l\u00f6schen m\u00f6chten? +modal.delete.question.bundle=Sind Sie sicher, dass Sie das Fragebogenpaket "{0}" l\u00f6schen m\u00f6chten? +modal.delete.question.question=Sind Sie sicher, dass Sie Frage {0} l\u00f6schen m\u00f6chten? +modal.delete.title=Best\u00e4tigung der L\u00f6schung +modal.delete.warning=Diese Aktion kann nicht r\u00fcckg\u00e4ngig gemacht werden. numberInputAnswer.validator.differenceMaxMinNotDivisibleByStepsize=Der Abstand zwischen Minimum und Maximum ist nicht restlos durch die Schrittgr\u00f6\u00dfe teilbar numberInputAnswer.validator.minBiggerThanMax=Das Minimum der Zahleneingabe war gleich oder gr\u00f6\u00dfer als das Maximum numberInputAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=Die Schrittgr\u00f6\u00dfe der Zahleneingabe war gr\u00f6\u00dfer als der Abstand zwischen Minimum und Maximum numberInputAnswer.validator.stepsizeLowerEqualZero=Die Schrittgr\u00f6\u00dfe der Zahleneingabe war <= 0 -PATIENT_ID=Patienten-ID question.answer.delete=M\u00f6chten Sie die Antwort wirklich l\u00f6schen? Alle Bedingungen dieser Antwort werden dann ebenfalls gel\u00f6scht. question.button.addAnswer=Antwort hinzuf\u00fcgen question.button.addQuestion=Frage hinzuf\u00fcgen @@ -695,17 +732,17 @@ question.error.minNumberBiggerThanAmountOfAnswers=Minimale Anzahl von zu beantwo question.error.minNumberBiggerThanMaxNumber=Minimale Anzahl von zu beantwortenden Antworten darf h\u00f6chstens so gro\u00df wie die maximale Anzahl sein question.error.noAnswerSelected=Es muss mindestens eine K\u00f6rperregion als Antwort ausgew\u00e4hlt sein. question.error.noBodyPartSelected=W\u00e4hlen Sie mindestens ein K\u00f6rperteil als Antwortm\u00f6glichkeit aus. -question.error.notModifiable=Diese Frage ist nicht editierbar, da bereits Antworten in Befragungen gegeben wurden question.error.noValidScoreMinMax=Es kann nicht genau eine Antwortm\u00f6glichkeit gegeben werden. Wenn Sie die Frage speichern, werden somit alle Scores, die diese Frage enthalten gel\u00f6scht. Wollen Sie die Frage wirklich speichern? question.error.noValidScoreQuestionType=Es wurde ein Fragetyp ausgew\u00e4hlt, der keine Scoreberechnung unterst\u00fctzt. Wenn Sie die Frage speichern, werden somit alle Scores, die diese Frage enthalten gel\u00f6scht. Wollen Sie die Frage wirklich speichern? +question.error.notModifiable=Diese Frage ist nicht editierbar, da bereits Antworten in Befragungen gegeben wurden question.error.questionTextIsNull=Die Frage ben\u00f6tigt einen lokalisierten Fragetext question.error.sliderDifferenceMaxMinNotDivisibleByStepsize=Der Abstand zwischen Minimum und Maximum ist nicht restlos durch die Schrittweite teilbar question.error.sliderStepsizeLessOrEqualToZero=Die Schrittgr\u00f6\u00dfe darf nicht kleiner oder gleich 0 sein question.heading.editQuestion=Frage bearbeiten question.heading.insideQuestionnaire=Fragebogen question.heading.title=Fragen des Fragebogens -question.label.addedLanguages=Hinzugef\u00fcgte Sprachen (Zum L\u00f6schen auf die entsprechende Sprache klicken) question.label.addLanguage=Sprache hinzuf\u00fcgen +question.label.addedLanguages=Hinzugef\u00fcgte Sprachen (Zum L\u00f6schen auf die entsprechende Sprache klicken) question.label.answerActivated=Diese Antwort ist initial aktiviert question.label.answerDelete=Die letzte Antwort kann nicht gel\u00f6scht werden question.label.answerOther=F\u00fcge Freitextfeld hinzu, falls diese Antwort ausgew\u00e4hlt wird @@ -719,7 +756,7 @@ question.label.codedValue=Identifikationscode question.label.codedValueType=Typ des Identifikationscodes question.label.deleteAnswerWarningStart=Die Entfernung einer Antwort wird zus\u00e4tzlich folgendes l\u00f6schen: question.label.deleteQuestionNotPossible=Frage kann nicht gel\u00f6scht werden, da die Frage w\u00e4hrend einer Befragung bereits beantwortet wurde. -question.label.deleteQuestionWarningStart=Die L\u00f6schung der Frage wird zus\u00e4tzlich folgendes entfernen: +question.label.deleteQuestionWarningStart=Bei L\u00f6schung der Frage wird zus\u00e4tzlich Folgendes entfernt: question.label.enabled=Frage ist initial aktiviert question.label.endDate=Sp\u00e4testes Datum question.label.filePath=Dateipfad @@ -727,14 +764,15 @@ question.label.freetextLabel=Freitext-Beschriftung question.label.imageType=Bild der K\u00f6rperteilauswahl question.label.infotext=Info-Text question.label.isEnabled=Frage ist initial aktiviert +question.label.isJustInfo=Das hochgeladene Bild dient als Information und deaktiviert die Interaktion question.label.isRequired=Z\u00e4hlt bei Vollst\u00e4ndigkeitspr\u00fcfung question.label.lastWarning=Sie haben es geschafft! -question.label.maximumText=Text an Maximum-Position question.label.maxNumberAnswers=Maximale Anzahl ausw\u00e4hlbarer Antworten question.label.maxValue=Maximum -question.label.minimumText=Text an Minimum-Position +question.label.maximumText=Text an Maximum-Position question.label.minNumberAnswers=Minimale Anzahl ausw\u00e4hlbarer Antworten question.label.minValue=Minimum +question.label.minimumText=Text an Minimum-Position question.label.modal.deleteLanguageContent=Sie sind dabei eine Sprache aus dieser Frage zu entfernen. Alle f\u00fcr diese Sprache hinzugef\u00fcgten Inhalte werden dabei ebenfalls gel\u00f6scht. question.label.modal.deleteLanguageTitle=Sprache entfernen question.label.modal.remove=Entfernen @@ -749,10 +787,10 @@ question.label.score=Score question.label.showTooltip=Anzeigen des Tooltips beim verschieben question.label.showValueOnButton=Aktuellen Wert auf dem Schieberegler anzeigen question.label.sliderCheckbox=Schieberegler/Nummernauswahl -question.label.sliderIcon.activateSliderIcons=Zeige Symbole über dem Slider an. -question.label.sliderIcon.iconpicker=Wählen Sie ein Symbol -question.label.sliderIcon.numberOfIcons=Anzahl der Symbole über dem Slider: -question.label.sliderIcon.position.definition=Die Position der Symbole entspricht dem Wert des Sliders. Sie muss deshalb zu der oben gewählten Spannweite passen. +question.label.sliderIcon.activateSliderIcons=Zeige Symbole \u00fcber dem Slider an. +question.label.sliderIcon.iconpicker=W\u00e4hlen Sie ein Symbol +question.label.sliderIcon.numberOfIcons=Anzahl der Symbole \u00fcber dem Slider: +question.label.sliderIcon.position.definition=Die Position der Symbole entspricht dem Wert des Sliders. Sie muss deshalb zu der oben gew\u00e4hlten Spannweite passen. question.label.sliderIcon.position=Position des Symbols question.label.startDate=Fr\u00fchestes Datum question.label.stepsize=Schrittgr\u00f6\u00dfe @@ -762,10 +800,12 @@ question.table.question=Frage questionnaire.button.add=Fragebogen hinzuf\u00fcgen questionnaire.button.download.fhir=Fragebogen im FHIR Format herunterladen questionnaire.button.download.mopat=Fragebogen im MoPat Format herunterladen +questionnaire.button.download.mopatcomplete=Fragebogen mit Export Template im MoPat Format herunterladen questionnaire.button.download.odm=Fragebogen im ODM Format herunterladen questionnaire.button.download.odmExportTemplate=Fragebogen als ODM Export Template herunterladen questionnaire.button.download.pdf=Fragebogen im PDF Format herunterladen questionnaire.button.download=Fragebogen herunterladen +questionnaire.button.duplicateAndEdit=Duplizieren und Fragen bearbeiten questionnaire.button.edit=Editieren questionnaire.button.editConditions=Bedingungen bearbeiten questionnaire.button.editQuestions=Fragen bearbeiten @@ -779,23 +819,27 @@ questionnaire.error.deleteQuestionnaireNotPossible=Der Fragebogen {0} kann nicht questionnaire.error.deleteQuestionnairePossible=Der Fragebogen {0} wurde gel\u00f6scht. questionnaire.error.editLastCondition=Dies ist die letzte Frage dieses Fragebogens. Daher k\u00f6nnen f\u00fcr diese Frage keine Bedingungen festgelegt werden. questionnaire.error.import=Ein Fehler ist beim Importieren einer Fragebogen-Datei entstanden: {0} -questionnaire.error.nameContainsSpecialCharacters=Der von Ihnen eingegebene Name enthält ungültige Sonderzeichen. Es dürfen nur Buchstaben, Zahlen, sowie die Sonderzeichen !?+-_.:()[] verwendet werden. +questionnaire.error.nameContainsSpecialCharacters=Der von Ihnen eingegebene Name enth\u00e4lt ung\u00fcltige Sonderzeichen. Es d\u00fcrfen nur Buchstaben, Zahlen, sowie die Sonderzeichen !?+-_.:()[] verwendet werden. questionnaire.error.nameInUse=Ein Fragebogen mit dem gew\u00e4hlten Namen existiert bereits. Bitte w\u00e4hlen Sie einen anderen Namen. questionnaire.error.nameIsEmpty=Der Name darf nicht nur aus Leerzeichen bestehen. questionnaire.heading.editQuestionnaire=Fragebogen bearbeiten questionnaire.heading.title=Frageb\u00f6gen questionnaire.import.button.import=Hochladen & importieren +questionnaire.import.failure.moreInfo=Klicken Sie hier, um weitere Informationen zu erhalten. questionnaire.import.failure=Hochladen der Datei fehlgeschlagen. -questionnaire.import.fhir.infoText=Bei FHIR-Dateien bitte beachten:
  • Die Datei muss die Dateiendung 'xml' haben
  • Die Datei muss FHIR-STU-v3.0.1-kompatibel sein
  • Die in der Datei enthaltene Resource muss vom Typ Questionnaire sein
  • Weiteres Feedback zum Import erhalten Sie nach der Konvertierung
-questionnaire.import.fhir.urlText=Alternativ k\u00f6nnen Sie FHIR-Frageb\u00f6gen auch \u00fcber deren spezifische URL importieren. Beachten Sie auch hier bitte:
  • Der Server muss FHIR-STU-v3.0.1 konform sein
  • Der Fragebogen muss auf dem Server vorhanden sein
  • Kopieren Sie diese dazu einfach in folgendes Eingabefeld: +questionnaire.import.fhir.infoText=Bei FHIR-Dateien bitte beachten:
    • Die Datei muss die Dateiendung 'xml' haben
    • Die Datei muss der FHIR-STU-v3.0.1-, FHIR R4B- oder FHIR R5 Spezifikation entsprechen
    • Die in der Datei enthaltene Resource muss vom Typ Questionnaire sein
    • Weiteres Feedback zum Import erhalten Sie nach der Konvertierung
    +questionnaire.import.fhir.urlText=Alternativ k\u00f6nnen Sie FHIR-Frageb\u00f6gen auch \u00fcber deren spezifische URL importieren. Beachten Sie auch hier bitte:
    • Der Server muss FHIR-STU-v3.0.1, FHIR R4B oder FHIR R5 konform sein
    • Der Fragebogen muss auf dem Server vorhanden sein
    • Kopieren Sie diese dazu einfach in folgendes Eingabefeld: questionnaire.import.heading=Fragebogen aus Datei importieren questionnaire.import.label.file=Datei questionnaire.import.label.url=URL -questionnaire.import.mopat.infoText=Bei Dateien, die im MoPat Format exportiert wurden und nun importiert werden sollen, bitte beachten:
      • Die Datei muss die Dateiendung 'json' haben
      +questionnaire.import.mopat.infoText=Bei Dateien, die im MoPat-Format exportiert wurden und nun importiert werden sollen, bitte beachten:
      • Die Datei muss die Dateiendung 'json' haben
      F\u00fcr Dateien im MoPat-Format, die Exportvorlagen enthalten, wird f\u00fcr jede vorhandene Konfiguration pro enthaltener Exportvorlage ein Eintrag erstellt. Sie k\u00f6nnen dann nicht verwendete Vorlagen manuell entfernen. questionnaire.import.odm.infoText=Bei ODM-Dateien bitte beachten:
      • Die Datei muss die Dateiendung 'xml' haben
      • Die Datei muss ODM v1.3.2-kompatibel sein
      • Es wird nur das erste Study-Element beachtet
      • Darin wird nur das erste MetaDataVersion-Element beachtet
      • Darin wird nur das erste FormDef-Element beachtet
      • Weiteres Feedback zum Import erhalten Sie nach der Konvertierung
      questionnaire.import.result.heading=Ergebnis des Fragebogen-Imports questionnaire.import.result.question.noMessages=Keine Hinweise f\u00fcr diese Frage. +questionnaire.import.uploadType.text=W\u00e4hlen Sie den Datentypen des hochgeladenen Fragebogens aus. +questionnaire.import.uploadType.title=Dateityp questionnaire.label.containedInBundles=Enthalten in Paketen +questionnaire.label.createdAt=Erstellt questionnaire.label.deleteLogo=Logo l\u00f6schen questionnaire.label.deleteQuestionnaireNotPossible=Fragebogen kann nicht gel\u00f6scht werden, da der Fragebogen w\u00e4hrend einer Befragung bereits beantwortet wurde. questionnaire.label.description=Beschreibung @@ -806,6 +850,9 @@ questionnaire.label.name=Name questionnaire.label.questionLanguages=Sprachen der Fragen questionnaire.label.questionnaire=Fragebogen questionnaire.label.welcomeText=Willkommenstext +questionnaire.message.enabledBundle=Der Fragebogen kann nicht bearbeitet werden, da er Teil eines aktivierten Bundles ist. Sie k\u00f6nnen ihn stattdessen duplizieren. +questionnaire.message.executedEncounters=Der Fragebogen kann nicht bearbeitet werden, da er bereits ausgef\u00fchrte Befragungen hat. Sie k\u00f6nnen ihn stattdessen duplizieren. +questionnaire.message.executedEncountersAndEnabledBundle=Der Fragebogen kann nicht bearbeitet werden, da er bereits ausgef\u00fchrte Befragungen hat und Teil eines aktivierten Bundles ist. Sie k\u00f6nnen ihn stattdessen duplizieren. questionnaire.questions.none=Keine Fragen erstellt questionnaire.questions.reposition.conditionError=Fragen konnten nicht neu angeordnet werden, da ein Ziel einer Bedingung vor seinem Ausl\u00f6ser lag. questionnaire.questions.reposition.error=Fehler! Fragen konnten nicht neu geordnet werden. @@ -813,14 +860,9 @@ questionnaire.questions.reposition.success=Fragen wurden erfolgreich neu geordne questionnaire.scores.none=Keine Scores erstellt questionnaire.validator.finalText.notNull=Wenn eine Sprache dieses Fragebogens einen Beendigungstext enth\u00e4lt, m\u00fcssen alle anderen Sprachen ebenfalls einen enthalten. questionnaire.validator.welcomeText.notNull=Wenn eine Sprache dieses Fragebogens einen Willkommenstext enth\u00e4lt, m\u00fcssen alle anderen Sprachen ebenfalls einen enthalten. +questionnaire.warning.cloneConditions=Nicht alle Bedingungen konnten in den neuen Fragebogen geklont werden. Bitte überprüfen Sie diese noch einmal manuell questionnaire.warning.deleteQuestionnaireWithConditions=Der Fragebogen ist mindestens einer Bedingung zugeordnet. Die entsprechenden Bedingungen werden ebenfalls gel\u00f6scht. Wollen Sie den Fragebogen trotzdem l\u00f6schen? -REPEATEDLY=Mehrmalig -ROLE_ADMIN=Administrator -ROLE_EDITOR=Editor -ROLE_ENCOUNTERMANAGER=Encounter Manager -ROLE_MODERATOR=Moderator -ROLE_USER= Standardbenutzer -score.add.heading.title=Score hinzufügen für den Fragebogen +score.add.heading.title=Score hinzuf\u00fcgen f\u00fcr den Fragebogen score.button.addScore=Score hinzuf\u00fcgen score.button.edit=Bearbeiten score.button.remove=L\u00f6schen @@ -847,9 +889,7 @@ score.label.deleteScoreWithScoresWarning=Die L\u00f6schung des Scores wird zus\u score.label.name=Name score.label.numberOfMissingValues=Anzahl
      fehlende Werte   score.label.selectOperator=Operator ausw\u00e4hlen -SCORE=Score selectAnswer.validator.labelNotNull=Die Auswahlantwort ben\u00f6tigt einen lokalisierten Text -SLIDER=Slider sliderAnswer.validator.differenceMaxMinNotDivisibleByStepsize=Der Abstand zwischen Minimum und Maximum ist nicht restlos durch die Schrittweite teilbar sliderAnswer.validator.freetextLabelNotNull=Die Frage ben\u00f6tigt einen lokalisierten Text f\u00fcr die Freitext-Beschriftung sliderAnswer.validator.maxValueNotNull=Die Frage ben\u00f6tigt einen Maximalwert @@ -861,11 +901,9 @@ sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=Die Schrittweite der F sliderAnswer.validator.stepsizeLowerEqualZero=Die Schrittweite der Frage war <= 0 sliderAnswer.validator.stepsizeWrongPattern=Die Schrittweite der Frage entspricht nicht dem geforderten Format. sliderAnswer.validator.tooManySteps=Es sind mehr als 200 Schritte vorhanden. Alternativ k\u00f6nnen Sie auch den Fragetyp Zahleneingabe nutzen. -sliderIcon.validator.missingIconValue=Für jedes Feld muss ein Icon ausgewählt werden, wenn die Funktion für die Frage aktiviert wird. -sliderIcon.validator.missingPosition=Die Position des Icons wird benötigt. -sliderIcon.validator.positionAlreadyInUse=Mindestens zwei Icons besitzen die gleiche Position. Bitte wählen Sie unterschiedliche Werte. -STANDARD=Standard-Runden -START_TIME=Start-Zeit +sliderIcon.validator.missingIconValue=F\u00fcr jedes Feld muss ein Icon ausgew\u00e4hlt werden, wenn die Funktion f\u00fcr die Frage aktiviert wird. +sliderIcon.validator.missingPosition=Die Position des Icons wird ben\u00f6tigt. +sliderIcon.validator.positionAlreadyInUse=Mindestens zwei Icons besitzen die gleiche Position. Bitte w\u00e4hlen Sie unterschiedliche Werte. statistic.button.calculate=Berechnen statistic.button.export=Statistiken exportieren statistic.error.countGreaterThanDays=Die Anzahl der Tage ist gr\u00f6\u00dfer als der Zeitraum. @@ -876,6 +914,9 @@ statistic.error.noStatisticsAvailable=Bisher sind keine Statistiken verf\u00fcgb statistic.error.startdateOutOfRange=Das Startdatum liegt nicht in dem vorgegebenen Zeitraum. statistic.export.name=Statistiken statistic.heading.statistic=Statistiken +statistic.label.HL7ExportCount=Anzahl HL7v2 Exporte (gestern) +statistic.label.ODMExportCount=Anzahl ODM Exporte (gestern) +statistic.label.ORBISExportCount=Anzahl ORBIS Exporte (gestern) statistic.label.bundleCount=Anzahl Fragebogenpakete statistic.label.clinicCount=Anzahl Kliniken statistic.label.completeEncounterDeletedCount=Anzahl gel\u00f6schter abgeschlossener Befragungen @@ -883,11 +924,8 @@ statistic.label.count=Anzahl der Tage statistic.label.date=Datum statistic.label.encounterCount=Anzahl Befragungen statistic.label.enddate=Ende des Zeitraums -statistic.label.HL7ExportCount=Anzahl HL7v2 Exporte (gestern) statistic.label.incompleteEncounterCount=Anzahl nicht abgeschlossener Befragungen statistic.label.incompleteEncounterDeletedCount=Anzahl gel\u00f6schter nicht abgeschlossener Befragungen -statistic.label.ODMExportCount=Anzahl ODM Exporte (gestern) -statistic.label.ORBISExportCount=Anzahl ORBIS Exporte (gestern) statistic.label.period=Statistiken sind f\u00fcr den Zeitraum vom {0} bis zum {1} vorhanden. statistic.label.questionnaireCount=Anzahl Frageb\u00f6gen statistic.label.startdate=Beginn des Zeitraums @@ -900,10 +938,10 @@ statistic.onetimestatistic.label.encounterCountByCaseNumberInInterval=Wie viele statistic.onetimestatistic.label.enddate=Enddatum: statistic.onetimestatistic.label.patient=Patient: statistic.onetimestatistic.label.startdate=Startdatum: -STRING=Zeichenkette sum=Summe von survey.bundle.questionnaires=Dieses Fragebogenpaket enth\u00e4lt die folgenden Frageb\u00f6gen survey.bundles.button.gotoCheck=Fallnummer erneut pr\u00fcfen +survey.bundles.button.gotoClinicSelect= Klinkin erneut ausw\u00e4hlen survey.bundles.button.startSurvey=Befragung starten survey.bundles.label.availableBundles=Verf\u00fcgbare Fragebogenpakete survey.bundles.label.incompleteEncounter=Unvollst\u00e4ndige Befragungen @@ -916,6 +954,7 @@ survey.check.barcodereader.switchCamera=Kamera wechseln survey.check.button.admnistration=Administration survey.check.button.generatePseudonym=Pseudonym generieren survey.check.button.register=Fallnummer registrieren +survey.check.button.search2=Patienten ID suchen survey.check.button.search=Fallnummer suchen survey.check.button.showBundles=Weiter zur Fragebogenauswahl survey.error.date=Das angegebene Geburtsdatum entspricht nicht dem vorgegebenen Format tt.MM.jjjj. @@ -937,6 +976,7 @@ survey.label.maleShort=m survey.label.notSpecified=Keine Angabe survey.label.off=Aus survey.label.on=An +survey.label.pid=Patienten ID survey.label.pseudonym=Pseudonym survey.label.pseudonymizationService=Pseudonymisierung survey.label.questionnaireNavigationLanguage=Sprache der Navigation w\u00e4hrend der Befragung @@ -946,7 +986,7 @@ survey.patient.noService=Kein Dienst zur Bestimmung der Fallnummer aktiviert. Bi survey.patient.registerPseudonymSuccess=Das Pseudonym wurde erfolgreich generiert und in Mopat registriert. survey.patient.registerSuccess=Die Fallnummer wurde erfolgreich in MoPat registriert. survey.pseudonym.missingData=Es fehlen noch Angaben zur Person um ein Pseudonym zu generieren. Bitte erg\u00e4nzen Sie diese. -survey.pseudonymization.notSuccessfull=Das Pseudonym konnte nicht generiert werden. Bitte überprüfen Sie die entsprechenden Einstellungen. +survey.pseudonymization.notSuccessfull=Das Pseudonym konnte nicht generiert werden. Bitte \u00fcberpr\u00fcfen Sie die entsprechenden Einstellungen. survey.question.answer.no=Nein survey.question.answer.yes=Ja survey.question.barcode.clearButton=Inhalt l\u00f6schen @@ -957,6 +997,11 @@ survey.question.image.button.undo=R\u00fcckg\u00e4ngig survey.question.image.flipswitch.black=Schwarz survey.question.image.flipswitch.white=Wei\u00df survey.question.infotext.hint=Dieser Text dient nur als Information. Klicken Sie oben rechts auf "n\u00e4chste Frage" um die Befragung fortzusetzen. +survey.questionnaire.ExactAnswer=Geben Sie genau {min} Antworten. +survey.questionnaire.MaxAnswer=Geben Sie bis zu {max} Antworten. +survey.questionnaire.MaxAnswerEqualsSizeOfAnswers=Geben Sie mindestens {min} Antworten. +survey.questionnaire.MinAnswer=Geben Sie mindestens {min} Antworten. +survey.questionnaire.MinMaxAnswer=Geben Sie zwischen {min} und {max} Antworten. survey.questionnaire.button.answerQuestionsMultiple=Fragen beantworten survey.questionnaire.button.answerQuestionsSingle=Frage beantworten survey.questionnaire.button.closeApplication=Anwendung beenden @@ -972,7 +1017,6 @@ survey.questionnaire.button.returnToQuestionnaire=Zur\u00fcck zum Fragebogen survey.questionnaire.button.startQuestionnaire=Starte Fragebogen survey.questionnaire.button.startSurvey=Befragung starten survey.questionnaire.dropDownNoSelect=Bitte ausw\u00e4hlen -survey.questionnaire.ExactAnswer=Geben Sie genau {min} Antworten. survey.questionnaire.label.answeredQuestions={nameQuestionnaire}: Ben\u00f6tigte Fragen ({requiredQuestionsComplete}/{requiredQuestions}), Restliche Fragen ({notRequiredQuestionsComplete}/{notRequiredQuestions}) survey.questionnaire.label.answeredQuestionsDescription=Vollst\u00e4ndig beantwortete Fragen: survey.questionnaire.label.date.endDate=Das maximal erlaubte Datum ist der {endDate}. @@ -987,7 +1031,7 @@ survey.questionnaire.label.numberInput.integer=Bitte geben Sie eine Ganzzahl an survey.questionnaire.label.numberInput.max=Das erlaubte Maximum ist {max}. survey.questionnaire.label.numberInput.min=Das erlaubte Minimum ist {min}. survey.questionnaire.label.numberInput.minMax=Das erlaubte Minimum ist {min} und das erlaubte Maximum ist {max}. -survey.questionnaire.label.numberInput.roundingNote=Eingaben werden automatisch auf den nächstliegenden gültigen Wert gerundet. +survey.questionnaire.label.numberInput.roundingNote=Eingaben werden automatisch auf den n\u00e4chstliegenden g\u00fcltigen Wert gerundet. survey.questionnaire.label.numberInput.stepSize=Ihre Eingabe sollte der Schrittweite von {stepSize} entsprechen. survey.questionnaire.label.numberInput.wrongInputDecimal=Nur Dezimalzahlen sind als Eingabe erlaubt. Andere Eingaben werden ignoriert. survey.questionnaire.label.numberInput.wrongInputInteger=Nur Ganzzahlen sind als Eingabe erlaubt. Andere Eingaben werden ignoriert. @@ -1002,19 +1046,18 @@ survey.questionnaire.label.required=Diese Antwort wird ben\u00f6tigt. M\u00f6cht survey.questionnaire.label.returnDevice=Sie haben die Befragung beendet. Bitte geben Sie das Ger\u00e4t zur\u00fcck. survey.questionnaire.label.skipQuestionFalse=Frage nicht \u00fcberspringen survey.questionnaire.label.skipQuestionTrue=Frage \u00fcberspringen -survey.questionnaire.MaxAnswer=Geben Sie bis zu {max} Antworten. -survey.questionnaire.MaxAnswerEqualsSizeOfAnswers=Geben Sie mindestens {min} Antworten. -survey.questionnaire.MinAnswer=Geben Sie mindestens {min} Antworten. -survey.questionnaire.MinMaxAnswer=Geben Sie zwischen {min} und {max} Antworten. -survey.title.fontSize=Wählen Sie eine Schriftgröße +survey.title.fontSize=W\u00e4hlen Sie eine Schriftgr\u00f6\u00dfe survey.title.searchCaseNumber=Fallnummernsuche survey.title.selectBundle=Paketauswahl +survey.title.selectClinic=Klinikauswahl typeMismatch.answers.maxValue=Der Maximum-Wert f\u00fcr den Schieberegler muss eine Ganzzahl sein typeMismatch.answers.minValue=Der Minimum-Wert f\u00fcr den Schieberegler muss eine Ganzzahl sein typeMismatch.answers.value=Der Score muss eine Ganzzahl sein typeMismatch.maxNumberAnswers=Der Wert f\u00fcr das Maximum an ausgew\u00c3\u00a4hlten Antworten muss eine Ganzzahl sein typeMismatch.minNumberAnswers=Der Wert f\u00fcr das Minimum an ausgew\u00c3\u00a4hlten Antworten muss eine Ganzzahl sein -UNIQUELY=Einmalig +update.available=Update Verf\u00fcgbar! +update.click.here=Klicken Sie hier f\u00fcr mehr Informationen +update.message=Eine neue Version ({0}) ist verf\u00fcgbar. Sie verwenden derzeit die Version v{1}. user.button.add=Benutzer hinzuf\u00fcgen user.button.cancel=Abbrechen user.button.clinicRights=Klinikrechte verwalten @@ -1029,10 +1072,11 @@ user.button.register=Registrieren user.button.remove=L\u00f6schen user.button.requestPassword=Passwort anfordern user.button.resetPassword=Passwort zur\u00fccksetzen +user.button.rights=Benutzerrechte bearbeiten user.button.save=Speichern user.button.send=Abschicken user.error.badCredentials=Benutzername und/oder Passwort war falsch oder das System hat Ihnen Informationen per E-Mail zugeschickt -user.error.badPin=Der eingegebene Pin war nicht korrekt. Sie können es noch {0} mal versuchen, sonst werden Sie abgemeldet. +user.error.badPin=Der eingegebene Pin war nicht korrekt. Sie können es noch {0} mal versuchen, sonst werden Sie abgemeldet. user.error.mailToAll.contentEmpty=Der Inhalt war leer. Bitte geben Sie einen Inhalt an user.error.mailToAll.errorReceiving=Beim Senden der Mail ist ein Fehler aufgetreten. Bitte versuchen Sie es noch einmal. Sollte der Fehler bestehen, wenden Sie sich bitte an den MoPat-Support. user.error.mailToAll.subjectEmpty=Der Betreff war leer. Bitte geben Sie einen Betreff an @@ -1041,7 +1085,8 @@ user.error.passwordNotCorrect=Das aktuelle Passwort war nicht korrekt user.error.passwordNotSet=Das Passwort darf nicht leer sein user.error.passwordSize=Das Passwort des Benutzers muss zwischen {0} und {1} Zeichen lang sein user.error.passwordsNotMatching=Die angegebenen Passw\u00f6rter stimmten nicht \u00fcberein -user.error.pinNotSecure=Der eingegebene Pin ist nicht sicher genug. Verwenden Sie nicht ausschließlich die gleiche Ziffer (z.B. 000000) und keine aufeinanderfolgenden Zahlen (z.B. 123456) +user.error.pinActivatedButNull=Die Anmeldung via Pin wurde aktiviert, aber es wurde kein Wert für die Pin gesetzt. Bitte geben Sie eine gültige Pin ein. +user.error.pinNotSecure=Der eingegebene Pin ist nicht sicher genug. Verwenden Sie nicht ausschließlich die gleiche Ziffer (z.B. 000000) und keine aufeinanderfolgenden Zahlen (z.B. 123456) user.error.pinTooShort=Der eingegebene Pin ist nicht lang genug user.error.userDisabled=Benutzer ist deaktiviert user.error.usernameInUse=Der Nutzername wird bereits verwendet @@ -1053,10 +1098,12 @@ user.heading.editProfile=Profil bearbeiten user.heading.editUser=Benutzerdaten bearbeiten user.heading.mailToAll=E-Mail an alle Benutzer schicken user.heading.passwordReset=Passwort zur\u00fccksetzen +user.heading.rights=Benutzerrechte bearbeiten user.heading.userInvitation=Benutzereinladung user.heading.userList=Benutzer user.heading.userRegistration=Benutzerregistrierung user.label.activatePin=Aktivieren Sie das schnelle Einloggen mittels eines Pins +user.label.changePassword=Ändern Sie das Passwort des Benutzers "{0}" user.label.changeUser=Mit einem anderen Account anmelden user.label.domainUser= Sind Sie Benutzer der Dom\u00e4ne "{0}"? user.label.email=E-Mail @@ -1074,25 +1121,39 @@ user.label.newPasswordApprove=Neues Passwort bitte wiederholen user.label.no=Nein user.label.oldPassword=Aktuelles Passwort user.label.password=Passwort +user.label.pin.moreInfo=Mit dieser Funktion können Sie sich schnell wieder in MoPat einloggen. Nach Aktivierung können Sie eine neue Befragung einfach durch Eingabe des Pins starten. Es ist nicht notwendig, sich komplett neu einzuloggen.
      Sicherheitshinweis: Nach drei falschen Pin-Eingaben wird ein Konto automatisch abgemeldet. Ansonsten bleibt die Funktion bis Mitternacht eingeschaltet, sofern Sie sich nicht manuell abmelden. +user.label.pin.requirements.length=Die Pin muss mindestens 6 Ziffern lang sein +user.label.pin.requirements.sequence=Eine Ziffernfolge (123456) ist nicht erlaubt +user.label.pin.requirements.uniqueness=Die Pin muss aus verschiedenen Ziffern bestehen +user.label.pin.requirements=Bitte stellen Sie sicher, dass Ihr Pin die folgenden Anforderungen erfüllt: user.label.pin=Pin user.label.preview=Vorschau user.label.role=Rolle user.label.status=Status user.label.subject=Betreff +user.label.togglePassword=Klicken Sie hier, um das Passwort anzuzeigen/auszublenden user.label.unlock=Entsperren user.label.username=Benutzername user.label.usertype=Benutzertyp user.label.yes=Ja +user.list.userDeleteError=Sie haben versucht, Ihr eigenes Konto zu deaktivieren. Dies ist nicht erlaubt. Wenn Sie dieses Konto deaktivieren möchten, melden Sie sich bitte mit einem anderen Administratorkonto an und versuchen Sie es erneut. user.status.disabled=Gesperrt user.status.enabled=Aktiviert user.success.changed=Der Benutzer wurde gespeichert user.success.forgotPassword=Ihnen wurde eine E-Mail mit Informationen zur Passwortr\u00fccksetzung zugesandt -user.table.noMoreClinics=Keine weiteren Kliniken verf\u00fcgbar user.table.UserClinicsEmpty=Keine Kliniken zugewiesen +user.table.noMoreClinics=Keine weiteren Kliniken verf\u00fcgbar user.type.ldap=LDAP/AD user.type.local=Lokal value=Wert -VALUE=Wert valueOf=Wert der Frage valueOfScore=Wert des Scores -WEEKLY=W\u00f6chentlich (alle 7 Tage) \ No newline at end of file +questionnaire.download.mopatComplete=MoPat mit Export-Templates +configuration.label.exportFHIRViaHL7v2=FHIR Export via HL7 Kommunikationsserver senden. +configuration.label.FHIRViaHL7v2Host=Host des HL7 Kommunikationsservers f\u00fcr den FHIR Export. +configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr den FHIR Export. +configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. +encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! +survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes +sliderAnswer.validator.localizedMinimumText=Der eingegebene Text ist länger als 255 Zeichen. +sliderAnswer.validator.localizedMinMaxText=Der eingegebene Text hat mehr als 255 Zeichen. \ No newline at end of file From c546058ee75f94730baafa136b26b5d6cb02b387 Mon Sep 17 00:00:00 2001 From: aluapaula Date: Fri, 17 Apr 2026 15:25:07 +0200 Subject: [PATCH 05/16] Merge branch '185-max-min-text-for-slider-questions-is-not-validated' of https://github.com/imi-ms/MoPat into 185-max-min-text-for-slider-questions-is-not-validated # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. Merge due to newer version --- .github/workflows/gitlab-mirror-actions.yml | 35 ----- .github/workflows/pr-checks.yml | 123 ++---------------- .gitlab-ci.yml | 2 + pom.xml | 2 +- .../WEB-INF/fragments/resourceFragment.html | 92 ++++++------- src/main/webapp/WEB-INF/layout/error.html | 10 +- src/main/webapp/WEB-INF/layout/login.html | 14 +- src/main/webapp/WEB-INF/layout/main.html | 42 +++--- src/main/webapp/WEB-INF/layout/mobile.html | 2 +- .../WEB-INF/layout/mobileQuestionnaire.html | 6 +- .../webapp/WEB-INF/layout/mobileUser.html | 2 +- src/main/webapp/WEB-INF/layout/pinlogin.html | 14 +- 12 files changed, 103 insertions(+), 241 deletions(-) delete mode 100644 .github/workflows/gitlab-mirror-actions.yml diff --git a/.github/workflows/gitlab-mirror-actions.yml b/.github/workflows/gitlab-mirror-actions.yml deleted file mode 100644 index 82fe105d..00000000 --- a/.github/workflows/gitlab-mirror-actions.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Mirror and run GitLab CI - -env: - GITLAB_USERNAME: ${{ secrets.GITLAB_USER }} - #https://imigitlab.uni-muenster.de///edit - GITLAB_PROJECT_ID: "587" - NAMESPACE: "mopat2" - REPOSITORY: "MoPat" - -on: - push: - branches: - - main - - 'v[0-9]+.*' #Protected version branches - workflow_dispatch: {} # manual dispatch - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Change to default branch - run: git config --global init.defaultBranch main - - uses: actions/checkout@v4 - with: - fetch-depth: '0' # shallow-clone push is not allowed - - name: Mirror + trigger CICD - uses: SvanBoxel/gitlab-mirror-and-ci-action@master - with: - args: "https://imigitlab.uni-muenster.de/$NAMESPACE/$REPOSITORY" - env: - FOLLOW_TAGS: "true" - FORCE_PUSH: "false" - GITLAB_HOSTNAME: "imigitlab.uni-muenster.de" - GITLAB_PASSWORD: ${{ secrets.GITLAB_PASSWORD }} #Generate here: https://imigitlab.uni-muenster.de/profile/personal_access_tokens - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index cd3743ce..6fdfc5d2 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -26,9 +26,9 @@ jobs: --health-retries=3 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Set up JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 with: java-version: '17' distribution: 'temurin' @@ -47,7 +47,7 @@ jobs: - name: Publish Test Report id: testReport - uses: mikepenz/action-junit-report@v5 + uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 if: success() || failure() # always run even if the previous step fails with: report_paths: '**/target/surefire-reports/*.xml' @@ -77,11 +77,11 @@ jobs: steps: # Checkout the repository - name: Check out the repository - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # Set up Docker - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # Pull the Chrome image - name: Pull Selenoid Chrome Image @@ -89,7 +89,7 @@ jobs: # Setup Docker-Compose - name: Docker Compose Action - uses: hoverkraft-tech/compose-action@v2.0.2 + uses: hoverkraft-tech/compose-action@4894d2492015c1774ee5a13a95b1072093087ec3 with: compose-file: "selenium/docker-compose.yml" @@ -107,7 +107,7 @@ jobs: # Set up Python and run Selenium tests - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 with: python-version: '3.13' # Specify the version of Python you are using @@ -139,117 +139,16 @@ jobs: echo "content<> $GITHUB_OUTPUT cat selenium_block.md >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - - trivy-scan: - runs-on: ubuntu-latest - outputs: - trivy-results: ${{ steps.trivy-table.outputs.content }} - permissions: - contents: read - pull-requests: write - - steps: - - name: Checkout code - uses: actions/checkout@v5 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build Docker images with docker compose - working-directory: ./.github/docker_testenv - run: | - docker compose build - - - name: Run Trivy vulnerability scanner on image - id: trivy - uses: aquasecurity/trivy-action@0.35.0 - env: - TRIVY_DISABLE_VEX_NOTICE: "true" - with: - image-ref: docker_testenv-webapp-container:latest - format: json - exit-code: 0 - output: trivy-report.json - - - name: Convert Trivy JSON to Markdown table (split OS vs app) - id: trivy-table - run: | - # Check if any vulnerabilities exist - if ! jq -e '.Results[].Vulnerabilities | select(length > 0)' trivy-report.json > /dev/null; then - echo "✅ No vulnerabilities found!" >> trivy-comment.md - exit 0 - fi - - ##################################### - # 🐳 1️⃣ Base Image Vulnerabilities (os-pkgs) - ##################################### - - os_total=$(jq '[.Results[] | select(.Class=="os-pkgs") | .Vulnerabilities[]?] | length' trivy-report.json) - os_with_fixes=$(jq '[.Results[] | select(.Class=="os-pkgs") | .Vulnerabilities[]? | select(.FixedVersion != null and .FixedVersion != "")] | length' trivy-report.json) - - echo "
      🐳 Base Image Vulnerabilities: $os_total vulnerabilities found, $os_with_fixes with fixes" >> trivy-comment.md - echo "" >> trivy-comment.md - - jq -r ' - [ .Results[] - | select(.Class == "os-pkgs") - | .Vulnerabilities[]? - ] - | select(length > 0) - | group_by(.PkgName) - | sort_by(.[0].PkgName) - | .[] - | "#### 📦 Package: \([.[0].PkgName])\n" - + "| Severity | Vulnerability ID | Installed Version | Fixed Version |\n" - + "|-----------|------------------|------------------|----------------|\n" - + (map("| \(.Severity) | \(.VulnerabilityID) | \(.InstalledVersion) | \(.FixedVersion // "-") |") | join("\n")) - + "\n" - ' trivy-report.json >> trivy-comment.md - - echo "
      " >> trivy-comment.md - echo "" >> trivy-comment.md - - ##################################### - # ☕️ 2️⃣ Tomcat / Java / Library Vulnerabilities - ##################################### - - app_total=$(jq '[.Results[] | select(.Class!="os-pkgs") | .Vulnerabilities[]?] | length' trivy-report.json) - app_with_fixes=$(jq '[.Results[] | select(.Class!="os-pkgs") | .Vulnerabilities[]? | select(.FixedVersion != null and .FixedVersion != "")] | length' trivy-report.json) - - echo "
      ☕️ Application / Library Vulnerabilities: $app_total vulnerabilities found, $app_with_fixes with fixes" >> trivy-comment.md - echo "" >> trivy-comment.md - - jq -r ' - [ .Results[] - | select(.Class != "os-pkgs") - | .Vulnerabilities[]? - ] - | select(length > 0) - | group_by(.PkgName) - | sort_by(.[0].PkgName) - | .[] - | "#### 📦 Package: \([.[0].PkgName])\n" - + "| Severity | Vulnerability ID | Installed Version | Fixed Version |\n" - + "|-----------|------------------|------------------|----------------|\n" - + (map("| \(.Severity) | \(.VulnerabilityID) | \(.InstalledVersion) | \(.FixedVersion // "-") |") | join("\n")) - + "\n" - ' trivy-report.json >> trivy-comment.md - - echo "
      " >> trivy-comment.md - # Save content as output - echo "content<> $GITHUB_OUTPUT - cat trivy-comment.md >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT comment: runs-on: ubuntu-latest - needs: [unit-tests, selenium-tests, trivy-scan] + needs: [unit-tests, selenium-tests] if: always() permissions: contents: read pull-requests: write steps: - name: Post PR comment - uses: peter-evans/create-or-update-comment@v4 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 with: issue-number: ${{ github.event.pull_request.number }} body: | @@ -258,10 +157,6 @@ jobs: ${{ needs.unit-tests.outputs.unittest-results }} ${{ needs.selenium-tests.outputs.selenium-results }} - - ### Vulnerability Scan Results - - ${{ needs.trivy-scan.outputs.trivy-results }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 867a06d9..b9d6af88 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,6 +27,8 @@ docker-build-push: stage: docker rules: - if: '$CI_COMMIT_BRANCH == "main"' + when: manual + - when: never image: docker:latest services: - docker:dind diff --git a/pom.xml b/pom.xml index 897db063..b9952fc9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 de.imi MoPat - 3.3.4 + 3.4.0 war MoPat - + - + - + - + @@ -57,70 +57,70 @@ - + - - + + - + diff --git a/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html b/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html index 1194197c..468abafb 100644 --- a/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html +++ b/src/main/webapp/WEB-INF/layout/mobileQuestionnaire.html @@ -12,9 +12,9 @@ - - - + + + diff --git a/src/main/webapp/WEB-INF/layout/mobileUser.html b/src/main/webapp/WEB-INF/layout/mobileUser.html index 2e28eb9d..c1944edc 100644 --- a/src/main/webapp/WEB-INF/layout/mobileUser.html +++ b/src/main/webapp/WEB-INF/layout/mobileUser.html @@ -7,6 +7,6 @@ th:with="onLoad='initUser();'" > - + diff --git a/src/main/webapp/WEB-INF/layout/pinlogin.html b/src/main/webapp/WEB-INF/layout/pinlogin.html index cdb837ac..379396c1 100644 --- a/src/main/webapp/WEB-INF/layout/pinlogin.html +++ b/src/main/webapp/WEB-INF/layout/pinlogin.html @@ -28,15 +28,15 @@ - + - + - + - + Date: Thu, 23 Apr 2026 12:16:24 +0200 Subject: [PATCH 06/16] "Missing property in messages_en_GB.properties" --- src/main/resources/message/messages_en_GB.properties | 3 ++- src/test/resources/message/messages.properties | 1 + src/test/resources/message/messages_en_GB.properties | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/resources/message/messages_en_GB.properties b/src/main/resources/message/messages_en_GB.properties index c42d66cb..d6cf1980 100644 --- a/src/main/resources/message/messages_en_GB.properties +++ b/src/main/resources/message/messages_en_GB.properties @@ -1153,4 +1153,5 @@ configuration.label.FHIRViaHL7v2Port=Port of the HL7 communication server for FH configuration.description.exportFHIRViaHL7v2=For FHIR, export can be set up using an HL7v2 communication server. In this case, the FHIR resource is embedded as a blob in the HL7 message. encounter.error.caseNumberInvalid=The case number was invalid. Please try again! survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section -sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters. \ No newline at end of file +sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters \ No newline at end of file diff --git a/src/test/resources/message/messages.properties b/src/test/resources/message/messages.properties index 5ce6e7d9..b50963e5 100644 --- a/src/test/resources/message/messages.properties +++ b/src/test/resources/message/messages.properties @@ -849,6 +849,7 @@ selectAnswer.validator.labelNotNull=The localized select answer's label is requi SLIDER=Slider sliderAnswer.validator.differenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible without remainder by the step size sliderAnswer.validator.freetextLabelNotNull=The localized text for the freetext label is required +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderAnswer.validator.maxValueNotNull=The answer's max value is required sliderAnswer.validator.maxValueTextNotNull=The localized text for the maximum position is required sliderAnswer.validator.minBiggerThanMax=The answer's min value was equal or bigger than its max value diff --git a/src/test/resources/message/messages_en_GB.properties b/src/test/resources/message/messages_en_GB.properties index adae3e2a..f68997d4 100644 --- a/src/test/resources/message/messages_en_GB.properties +++ b/src/test/resources/message/messages_en_GB.properties @@ -1091,4 +1091,6 @@ value=Value VALUE=Value valueOf=Value of question valueOfScore=Value of score -WEEKLY=Weekly (every 7 days) \ No newline at end of file +WEEKLY=Weekly (every 7 days) +configuration.label.FHIRViaHL7v2Host=The text is longer than 255 characters +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters \ No newline at end of file From 991d8f9c75dc0e49b558c29fbc3d39d2a0046727 Mon Sep 17 00:00:00 2001 From: aluapaula Date: Thu, 23 Apr 2026 13:56:55 +0200 Subject: [PATCH 07/16] unified messages.properties to fix errors --- .../resources/message/messages.properties | 1 - .../message/messages_de_DE.properties | 1 - .../message/messages_en_GB.properties | 8 +- .../resources/message/messages.properties | 269 +++++++++++------- .../message/messages_de_DE.properties | 1 - .../message/messages_en_GB.properties | 269 +++++++++++------- 6 files changed, 334 insertions(+), 215 deletions(-) diff --git a/src/main/resources/message/messages.properties b/src/main/resources/message/messages.properties index 698d088f..77361b44 100644 --- a/src/main/resources/message/messages.properties +++ b/src/main/resources/message/messages.properties @@ -899,7 +899,6 @@ sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The answer's step size sliderAnswer.validator.stepsizeLowerEqualZero=The answer's step size was <= 0 sliderAnswer.validator.stepsizeWrongPattern=The answer's step size does not match the required pattern. sliderAnswer.validator.tooManySteps=There are more than 200 steps available. Alternatively you can also use the question type number input. -sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderIcon.validator.missingIconValue=An icon for every field has to be selected, if the feature is enabled. sliderIcon.validator.missingPosition=The icon's position is required. diff --git a/src/main/resources/message/messages_de_DE.properties b/src/main/resources/message/messages_de_DE.properties index 70fac682..44b383cc 100644 --- a/src/main/resources/message/messages_de_DE.properties +++ b/src/main/resources/message/messages_de_DE.properties @@ -1155,5 +1155,4 @@ configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes -sliderAnswer.validator.localizedMinimumText=Der eingegebene Text ist lnger als 255 Zeichen. sliderAnswer.validator.localizedMinMaxText=Der eingegebene Text hat mehr als 255 Zeichen. \ No newline at end of file diff --git a/src/main/resources/message/messages_en_GB.properties b/src/main/resources/message/messages_en_GB.properties index d6cf1980..77361b44 100644 --- a/src/main/resources/message/messages_en_GB.properties +++ b/src/main/resources/message/messages_en_GB.properties @@ -503,7 +503,7 @@ helpMode.label.question.dropDown=This question allows choosing an answer from a helpMode.label.question.freeText=This question allows entering a text. Please click/tap the field and write your answer in the field. helpMode.label.question.image=This is an image question. Please mark the specific position with a click/tap on the image. helpMode.label.question.multipleChoice=This question allows choosing one or several answers from a given set of answers. If it is possible to choose more than one answer you will find a hint above the answers. -helpMode.label.question.numberCheckbox=This question allows choosing anumber from a given set of numbers. Please click/tap on the desired number to select it. +helpMode.label.question.numberCheckbox=This question allows choosing a number from a given set of numbers. Please click/tap on the desired number to select it. helpMode.label.question.numberCheckboxText=This question allows choosing a number from a given set of numbers and an additional text. Please click/tap on the desired number to select it and write your answer in the field below. helpMode.label.question.numberInput=This question allows entering a number. If there are any restrictions concerning the number you will find a hint above the answer field. helpMode.label.question.slider=This question allows entering a number on a so-called slider. Please click/tap and hold the handle to move it to the desired position. To delete your answer click/tap on the handle. @@ -899,6 +899,7 @@ sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The answer's step size sliderAnswer.validator.stepsizeLowerEqualZero=The answer's step size was <= 0 sliderAnswer.validator.stepsizeWrongPattern=The answer's step size does not match the required pattern. sliderAnswer.validator.tooManySteps=There are more than 200 steps available. Alternatively you can also use the question type number input. +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderIcon.validator.missingIconValue=An icon for every field has to be selected, if the feature is enabled. sliderIcon.validator.missingPosition=The icon's position is required. sliderIcon.validator.positionAlreadyInUse=The icon's position of one ore more icons is identical. Please select different values. @@ -1150,8 +1151,7 @@ questionnaire.download.mopatComplete=MoPat with Export Templates configuration.label.exportFHIRViaHL7v2=Send FHIR export via HL7 communication server. configuration.label.FHIRViaHL7v2Host=Send FHIR export via HL7 communication server. configuration.label.FHIRViaHL7v2Port=Port of the HL7 communication server for FHIR export. +configuration.label.FHIRViaHL7v2SendingFacility= configuration.description.exportFHIRViaHL7v2=For FHIR, export can be set up using an HL7v2 communication server. In this case, the FHIR resource is embedded as a blob in the HL7 message. encounter.error.caseNumberInvalid=The case number was invalid. Please try again! -survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section -sliderAnswer.validator.localizedMinimumText=The text is longer than 255 characters -sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters \ No newline at end of file +survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section \ No newline at end of file diff --git a/src/test/resources/message/messages.properties b/src/test/resources/message/messages.properties index b50963e5..77361b44 100644 --- a/src/test/resources/message/messages.properties +++ b/src/test/resources/message/messages.properties @@ -1,15 +1,63 @@ --=- *=* -/=/ -\!\==\!\= -\=\==\=\= +=+ -<\==<\= +-=- +/=/ <=< ->\==>\= +<\==<\= >=> +>\==>\= +BACK=Back view +BARCODE=Barcode +BIRTHDATE=Birth date +BODY_PART=Body part selection +CASE_NUMBER=Case number +CEIL=Ceil +COMMA=Comma +DATE=Date +DOT=Dot +DROP_DOWN=Drop down list +END_TIME=End time +FIRSTNAME=First name +FLOAT=Float +FLOOR=Floor +FORMULA=Formula +FREE_TEXT=Free text +FRONT=Front view +FRONT_BACK=Front- and back view +GENDER=Gender +IMAGE=Image +INFO_TEXT=Info text +INTEGER=Integer +LANGUAGE=Language +LASTNAME=Last name +MONTHLY=Monthly (every 30 days) +MULTIPLE_CHOICE=Multiple choice +NUMBER_CHECKBOX=Numbered checkboxes +NUMBER_CHECKBOX_TEXT=Numbered checkboxes + free text +NUMBER_INPUT=Number input +PATIENT_ID=Patient ID +REPEATEDLY=Multiple times +ROLE_ADMIN=Administrator +ROLE_EDITOR=Editor +ROLE_ENCOUNTERMANAGER=Encounter Manager +ROLE_MODERATOR=Moderator +ROLE_USER= Standard User +SCORE=Score +SLIDER=Slider +STANDARD=Default rounding +START_TIME=Start time +STRING=String +UNIQUELY=Uniquely +VALUE=Value +WEEKLY=Weekly (every 7 days) +\!\==\!\= +\=\==\=\= admin.information.cache.action=Clear cache -admin.information.cache=Timestamp of last cache reset +admin.information.cache=Timestamp of last cache reset +admin.information.git.branch=Branch +admin.information.git.build.version=Build Version +admin.information.git.commit.id=Commit ID +admin.information.git.commit.message=Commit Message admin.information.title=Admin Information admin.navigation.bundle=Manage bundles admin.navigation.clinic=Manage clinics @@ -40,10 +88,6 @@ answer.warning.deleteAnswerWithExportRules=This answer has export rules attached answer.warning.isOtherNotLastAnswer=This answer is marked as 'other' and will be shown as the last answer of the question. auditEntry.error.noSenderReceiver=When trying to create an audit log entry for sending/receiving data, no receiver/sender was given average=Average -BACK=Back view -BARCODE=Barcode -BIRTHDATE=Birth date -BODY_PART=Body part selection bodyPart.back.anus=Anus bodyPart.back.head=Back head bodyPart.back.hips=Buttocks @@ -92,6 +136,7 @@ bundle.button.add=Add bundle bundle.button.edit=Edit bundle.button.lock=Block bundle.button.publish=Release +bundle.button.testExport=Test assigned exports bundle.button.remove=Remove bundle.error.deleteNotPossible=Bundle {0} cannot be deleted because there has already been one survey using this bundle. bundle.error.deletePossible=Bundle {0} was deleted. @@ -111,6 +156,7 @@ bundle.heading.title=Bundles bundle.label.availableLanguages=Available languages bundle.label.bundleName=Name bundle.label.containedInClinics=Contained in clinics +bundle.label.createdAt=Created At bundle.label.deactivateProgressAndNameDuringSurvey=The questionnaire's name and the progress will not be displayed during a survey bundle.label.description=Description bundle.label.finalText=Finaltext @@ -125,12 +171,14 @@ bundle.selection.bundles=Select questionnaire bundle... bundle.status.blocked=Blocked bundle.status.released=Released bundle.table.bundleQuestionnairesEmpty=No questionnaires assigned +bundle.table.hideQuestionnaireVersions=Hide versions bundle.table.isEnabled=Active bundle.table.noMoreQuestionnaires=There are no more questionnaires available bundle.table.questionnaireDescription=Description bundle.table.questionnaireName=Name bundle.table.questionnairePosition=Position bundle.table.score=Score +bundle.table.showQuestionnaireVersions=Show versions bundle.validator.finalText.notNull=If the bundle contains at least one language with a final text, it has to be set for every language. bundle.validator.welcomeText.notNull=If the bundle contains at least one language with a welcome text, it has to be set for every language. bundle.warning.deleteBundleFromClinics=This bundle is assigned to at least one clinic. Do you want to delete it anyway? @@ -138,30 +186,32 @@ bundle.warning.deleteBundleWithConditions=The bundle is associated with at least bundle.warning.deleteBundleWithConditionsAndClinics=The bundle is associated with at least one condition and one clinic. The corresponding conditions will also be deleted. Do you want to delete the bundle anyway? button.cancel=Cancel button.deleteAll=Delete all +button.duplicate=Duplicate button.edit=Edit button.ok=Ok button.remove=Remove button.save=Save button.selectAll=Select all -CASE_NUMBER=Case number -CEIL=Ceil clinic.button.add=Add clinic clinic.button.edit=Edit clinic.button.remove=Remove clinic.error.nameContainsSpecialCharacters=The name you entered contains invalid characters. Only letters, numbers and the special characters !?+-_.:()[] are allowed. clinic.error.nameInUse=The chosen name is already in use. Please choose a different one. clinic.error.nameIsEmpty=The name shouldn't only consist of space characters. +clinic.error.noConfiguration=No configuration was selected. clinic.heading.assignedBundles=Assigned bundles clinic.heading.assignedUsers=Assigned users clinic.heading.availableBundle=Available bundles clinic.heading.availableBundleInfo=Only bundles which are published and contain questionnaires are displayed clinic.heading.availableUsers=Available users +clinic.heading.clinicConfiguration=Clinic Configuration clinic.heading.editClinic=Edit clinic clinic.heading.title=Clinics clinic.label.defaultBundle=Default bundle clinic.label.description=Description clinic.label.email=E-mail clinic.label.name=Name +clinic.message.deleteFailure=Clinic {0} cannot be deleted because it has an active survey. clinic.message.deleteSuccess=Clinic {0} was deleted. clinic.table.bundleDescription=Description clinic.table.bundleName=Name @@ -172,7 +222,6 @@ clinic.table.noMoreBundles=No bundles available clinic.table.noMoreUsers=No users available clinic.table.userName=Username clinic.table.usersEmpty=No users assigned -COMMA=Comma condition.button.add=Add condition condition.button.addTarget=Add target condition.button.backToQuestionnaire=Back to questionnaire @@ -188,13 +237,13 @@ condition.error.unknownTrigger=Unknown Trigger condition.heading.title.edit=Edit condition condition.heading.title.new=Create new condition condition.heading.title=Conditions of Question +condition.label.DISABLE=should not be displayed. +condition.label.ENABLE=should be displayed. condition.label.action=perform the following action condition.label.condition=Condition condition.label.conditionAnswer=Conditions aiming at an answer condition.label.conditionQuestion=Conditions aiming at a question condition.label.conditionQuestionnaire=Conditions aiming at a questionnaires -condition.label.DISABLE=should not be displayed. -condition.label.ENABLE=should be displayed. condition.label.ending=Hide condition.label.fromBundle=from bundle condition.label.fromQuestion=from question @@ -221,6 +270,7 @@ configuration.description.exportPath=This is the path completed questionnaires w configuration.description.finishedEncounterMailaddressTimeWindowInMillis=Any email address of a finished encounter older than this timeframe will be deleted (default: 30 days). The value -1 deactivates the deletion. configuration.description.finishedEncounterScheduledTimeWindowInMillis=Any scheduled encounter finished and older than this timeframe will be deleted (default: 90 days). The value -1 deactivates the deletion. configuration.description.finishedEncounterTimeWindowInMillis=Any encounter finished and older than this timeframe will be deleted (default: 30 days). The value -1 deactivates the deletion. +configuration.description.imprint=Please enter the imprint content configuration.description.incompleteEncounterScheduledTimeWindowInMillis=Any incomplete scheduled encounter older than this timeframe will be deleted (default: 180 days). The value -1 deactivates the deletion. configuration.description.incompleteEncounterTimeWindowInMillis=Any incomplete encounter older than this timeframe will be deleted (default: 180 days). The value -1 deactivates the deletion. configuration.description.logo=Please upload non-square logos with a transparent background for the best visual appeal on our platform. @@ -232,6 +282,15 @@ configuration.error.wrongValidationSchemaType=The file format doesn't accord wit configuration.file.notUploaded=No file uploaded configuration.file.path=Path to the uploaded file configuration.file.uploaded=File uploaded +configuration.label.FHIRsystemURI=System URI for FHIR export +configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever +configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever +configuration.label.ODMviaHL7Hostname=Host of HL7 communication server for ODM export. +configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). +configuration.label.ODMviaHL7Port=Port of HL7 communication server for ODM export. +configuration.label.ODMviaHL7ReceivingApplication="Receiving Application" for the HL7 Exporter (MSH-5). +configuration.label.ODMviaHL7ReceivingFacility="Receiving Facility" for the HL7 Exporter (MSH-6). +configuration.label.ODMviaHL7SendingFacility="Sending Facility" for the HL7 Exporter (MSH-4). configuration.label.activeDirectoryLdapAuthenticationProviderActivated=Allow Active Directory authentication configuration.label.activeDirectoryLdapAuthenticationProviderDefaultLanguage=Default language for the email sent to active directory users configuration.label.activeDirectoryLdapAuthenticationProviderDomain=Domain for the active directory @@ -253,9 +312,8 @@ configuration.label.encounter.incompleteEncounterTimeWindowInMillis=The time, af configuration.label.executionTime=Hour in which to start the execution of surveys configuration.label.exportFHIRInDirectory=Export FHIR into directory. configuration.label.exportFHIRPath=Export path for the copy of the FHIR-Export. Please enter the absolute path (not the relative path). -configuration.label.exportFHIRUrl=URL of REST-Interface for FHIR-Export / URL of the communication server -configuration.label.exportFHIRViaCommunicationServer=Export FHIR via communication server. -configuration.label.exportHL7_OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). +configuration.label.exportFHIRUrl=URL of REST-Interface for FHIR-Export. +configuration.label.exportFHIRViaCommunicationServer=Export FHIR via REST. configuration.label.exportHL7ClientPKCSPassword=Password for the client private key (that is contained within the given archive). configuration.label.exportHL7ClientPKCSPath=Client PKCS archive (.p12 file) to verify the client and encrypt the messages. Please upload a valid PKCS archive. configuration.label.exportHL7Host=Host of the HL7 communication server. @@ -269,23 +327,20 @@ configuration.label.exportHL7ServerCertificatePath=Server certificate to verify configuration.label.exportHL7UseClientAuth=Use a certificate to authorize the client on the server. configuration.label.exportHL7UseTLS=Encrypt message using TLS. configuration.label.exportHL7ViaCommunicationServer=Export HL7 via communication server. +configuration.label.exportHL7_OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). configuration.label.exportODMInDirectory=Export ODM into directory. configuration.label.exportODMPath=Export path for the file based ODM-Export. Please enter the absolute path (not the relative path). configuration.label.exportODMUrl=URL of REST-Interface for ODM-Export. -configuration.label.exportODMviaHL7=Export ODM via HL7 communication server. configuration.label.exportODMViaRest=Export ODM via REST. +configuration.label.exportODMviaHL7=Export ODM via HL7 communication server. configuration.label.exportOrbisPath=Export path for the file based Orbis-Export. Please enter the absolute path (not the relative path). configuration.label.exportREDCapApiToken=API Token of REST-Interface for REDCap-Export. configuration.label.exportREDCapInDirectory=Export REDCap into directory. configuration.label.exportREDCapPath=Export path for the file based REDCap-Export. Please enter the absolute path (not the relative path). configuration.label.exportREDCapUrl=URL of REST-Interface for REDCap-Export. configuration.label.exportREDCapViaRest=Export REDCap via REST. -configuration.label.FHIRsystemURI=System URI for FHIR export -configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever configuration.label.imageUploadPath=Path for uploaded images. Please enter the absolute path (not the relative path). +configuration.label.imprint=Imprint configuration.label.logo=Logo configuration.label.mailSender.auth=SMTP authentication configuration.label.mailSender.from=Sender of the emails sent from the application mailer @@ -298,18 +353,6 @@ configuration.label.metadataExporterODMOID=Object Identifier (OID for the ODM me configuration.label.metadataExporterPDF=URL of the ODM to PDF converter configuration.label.name=Configuration group configuration.label.object.storagePath=Storage path for uploads (i.e. export templates). Please enter the absolute path (not the relative path). -configuration.label.ODMviaHL7Hostname=Host of HL7 communication server for ODM export. -configuration.label.ODMviaHL7Hostname=Host of HL7 communication server for ODM export. -configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). -configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). -configuration.label.ODMviaHL7Port=Port of HL7 communication server for ODM export. -configuration.label.ODMviaHL7Port=Port of HL7 communication server for ODM export. -configuration.label.ODMviaHL7ReceivingApplication="Receiving Application" for the HL7 Exporter (MSH-5). -configuration.label.ODMviaHL7ReceivingApplication="Receiving Application" for the HL7 Exporter (MSH-5). -configuration.label.ODMviaHL7ReceivingFacility="Receiving Facility" for the HL7 Exporter (MSH-6). -configuration.label.ODMviaHL7ReceivingFacility="Receiving Facility" for the HL7 Exporter (MSH-6). -configuration.label.ODMviaHL7SendingFacility="Sending Facility" for the HL7 Exporter (MSH-4). -configuration.label.ODMviaHL7SendingFacility="Sending Facility" for the HL7 Exporter (MSH-4). configuration.label.patientRetrieverClass=Implementation to utilize to look up patient data configuration.label.pseudonymizationService.path=URL of pseudonymization server configuration.label.pseudonymizationService=Request pseudonym by patient data @@ -328,31 +371,33 @@ configuration.validate.double=The value of the field {field} is not decimal. configuration.validate.integer=The value of the field {field} has to be between 0 and 2E31-1. configuration.validate.localPath=The given path of the field {field} is not readable/writable for MoPat configuration.validate.long=The value of the field {field} has to be between 0 and 2E63-1. +configuration.validate.mappedConfigurationNotFound=The value for this configuration was not selected. configuration.validate.multipleName=The name of this configuration group exists multiple times. configuration.validate.noName=This configuration group has got no name. configuration.validate.pattern=The value of the field {field} does not match the needed format. +configuration.validate.xss=The text contains invalid elements (e.g. script elements) +configurationGroup.label.FHIR=FHIR-Export +configurationGroup.label.HLSeven=HL7-Export +configurationGroup.label.ODM=ODM-Export +configurationGroup.label.ORBIS=Orbis-Export +configurationGroup.label.REDCap=REDCap-Export configurationGroup.label.activeDirectoryAuthentication=Active Directory Authentication configurationGroup.label.encounter=Encounter -configurationGroup.label.FHIR=FHIR-Export configurationGroup.label.general=General -configurationGroup.label.HLSeven=HL7-Export configurationGroup.label.info=A name for this configuration group can be set here to identify it clearly. This is necessary because this configuration group is repeatable. configurationGroup.label.mail=Email configurationGroup.label.metadataExporter=Metadata Exporter -configurationGroup.label.ODM=ODM-Export -configurationGroup.label.ORBIS=Orbis-Export configurationGroup.label.patientDataRetriever=Patient data retriever -configurationGroup.label.REDCap=REDCap-Export +configurationGroup.label.pseudonymization=Pseudonymization configurationGroup.label.support=Support +configurationGroup.label.usePatientLookUp=Patient Lookup counter=Count -DATE=Date dateAnswer.validator.endDateWrongFormat=The latest date has the wrong format dateAnswer.validator.endEarlierThanStart=The latest date is earlier than the earliest date dateAnswer.validator.startDateWrongFormat=The earliest date has the wrong format dateAnswer.validator.startEqualsEnd=The start date shouldn't be equal to the end date dateAnswer.validator.startLaterThanEnd=The earliest date is later than the latest date -DOT=Dot -DROP_DOWN=Drop down list +editor.welcome=Welcome to Mobile Patient Survey (MoPat)!

      This is the administration interface of MoPat.
      From this interface on, you are able to
      MoPat is developed by the Institute of Medical Informatics, M\u00fcnster, managed by Univ.-Prof. Dr. rer. nat. Dominik Heider.
      You can contact us at {1} or {2}. encounter.button.encounterName=Name encounter.button.export=Export encounter.error.caseNumberIsEmpty=The case number shouldn't be empty or only consist of space characters. @@ -373,7 +418,6 @@ encounter.label.endDate=End date encounter.label.export=Exports (completed/assigned) encounter.label.lastReminderDate=Last reminder email on encounter.label.startDate=Start date -encountermanager.welcome=Welcome to Mobile Patient Survey (MoPat)!

      This is the administration interface of MoPat.
      From this interface on, you are able toMoPat is developed by the Institute of Medical Informatics, M\u00fcnster, managed by Univ.-Prof. Dr. rer. nat. Dominik Heider.
      You can contact us at {1} or {2}. encounterScheduled.button.abort=Abort the scheduled encounter. No more encounters will be created or emails send. encounterScheduled.button.addressRejected=The given email address doesn't exist. Please change it. encounterScheduled.button.consentPending=Waiting for the patient to confirm. @@ -399,6 +443,7 @@ encounterScheduled.label.born=Born at encounterScheduled.label.cancelEncounterDialog=Do you really want to cancel the scheduled encounter? encounterScheduled.label.caseNumber=Casenumber / Pseudonym encounterScheduled.label.changeEmail=Change email address +encounterScheduled.label.clinic=Associated Clinic For The Encounter encounterScheduled.label.date=Date encounterScheduled.label.email=E-mail encounterScheduled.label.encounterScheduledAll=All scheduled Encounters @@ -427,25 +472,16 @@ encounterScheduled.validator.enddateEmpty=The end date can not be empty encounterScheduled.validator.enddateMustBeAfterStartdate=The end date must be after the start date encounterScheduled.validator.invalidReplyMail=Illegal e-mail adress encounterScheduled.validator.repeatPeriodGreaterThanZero=Number of days must be greater than zero -encounterScheduled.validator.startdateCanNotBeInThePast=Startdate can not be in the past encounterScheduled.validator.startDateEmpty=The start date can not be empty +encounterScheduled.validator.startdateCanNotBeInThePast=Startdate can not be in the past encounterScheduled.warning.daysShorterThanThePeriod=The given repeat period is larger than the period between start- and enddate. Thus, only one survey will be scheduled on the startdate. -END_TIME=End time +encountermanager.welcome=Welcome to Mobile Patient Survey (MoPat)!

      This is the administration interface of MoPat.
      From this interface on, you are able toMoPat is developed by the Institute of Medical Informatics, M\u00fcnster, managed by Univ.-Prof. Dr. rer. nat. Dominik Heider.
      You can contact us at {1} or {2}. error.heading.denied=Access denied! error.heading.internalservererror=Oops! There was something wrong. The support team has been informed. error.heading.pagenotfound=The page you requested does not exist, either you entered the wrong address or the page does not exist any more. error.heading.sessionTimeout=Your session has expired because you have been inactive for too long.
      Please log in again. -error.heading.clinicNotFound=You are currently not assigned to any clinic. Please contact the MoPat Support: filter.label.noHits=Search doesn't match any results. filter.label.placeholder=B\u00fasqueda -FIRSTNAME=First name -FLOAT=Float -FLOOR=Floor -FORMULA=Formula -FREE_TEXT=Free text -FRONT_BACK=Front- and back view -FRONT=Front view -GENDER=Gender header.userOptions.edit=Edit profile header.userOptions.logout=Logout header.userOptions.signedInAs=Signed in as @@ -467,7 +503,7 @@ helpMode.label.question.dropDown=This question allows choosing an answer from a helpMode.label.question.freeText=This question allows entering a text. Please click/tap the field and write your answer in the field. helpMode.label.question.image=This is an image question. Please mark the specific position with a click/tap on the image. helpMode.label.question.multipleChoice=This question allows choosing one or several answers from a given set of answers. If it is possible to choose more than one answer you will find a hint above the answers. -helpMode.label.question.numberCheckbox=This question allows choosing anumber from a given set of numbers. Please click/tap on the desired number to select it. +helpMode.label.question.numberCheckbox=This question allows choosing a number from a given set of numbers. Please click/tap on the desired number to select it. helpMode.label.question.numberCheckboxText=This question allows choosing a number from a given set of numbers and an additional text. Please click/tap on the desired number to select it and write your answer in the field below. helpMode.label.question.numberInput=This question allows entering a number. If there are any restrictions concerning the number you will find a hint above the answer field. helpMode.label.question.slider=This question allows entering a number on a so-called slider. Please click/tap and hold the handle to move it to the desired position. To delete your answer click/tap on the handle. @@ -487,7 +523,6 @@ helpMode.label.questionnaireWelcome.logo=This is the logo of the questionnaire. helpMode.label.questionnaireWelcome.nextButton=If you click/tap this button you will start the questionnaire. helpMode.label.questionnaireWelcome.text=This is the welcome text of the questionnaire. helpMode.label.questionnaireWelcome.title=This is the title of the questionnaire. -IMAGE=Image imageAnswer.error.upload=An error has occured while uploading the image. imageAnswer.validator.fileTooBig=The chosen image was bigger than 2 MB, please choose a smaller one. imageAnswer.validator.noFilePath=The filepath must not be empty. @@ -522,11 +557,12 @@ import.fhir.questionnaire.descriptionSetToTitle=The questionnaire doesn't contai import.fhir.validate.error=An error has been occurred during validation of the input file. import.fhir.validate.invalidFile=The input file isn't conform with FHIR specification. Following error has ocurred: {0}. import.fhir.validate.schemaFileDirectoryNull=The directory of the XML Schema Definitions is incorrect. -import.odm.v132.codeList.codedValueLastCharacterSpace=The given CodedValue's last character is a space and therefore cannot be mapped manually. -import.odm.v132.codeList.codedValueNotDouble=The given CodedValue {0} is not of type Double and thus cannot be set as a score value. +import.fhir.validation.error.detailed={0}: Line: {1}; Path: {2}; Message: {3} import.odm.v132.codeList.codeListItemListNullEmpty=The CodeList with OID {0} that is part of the MetaDataVersion with OID {1} and is referred by the ItemDef with OID {2}, is empty. Any referred answers have not been imported. import.odm.v132.codeList.codeListItemNoOrderNumber=The CodeListItem with CodedValue {0}, that is part of the MetaDataVersion with OID {1} and is referred by the ItemDef with OID {2}, does not have an OrderNumber. CodeListItems of the same CodeList have been imported based on their occurence in the XMl file. import.odm.v132.codeList.codeListItemNoTranslatedText=The CodeListItem with CodedValue {0}, that is part of the MetaDataVersion with OID {1} and is referred by the ItemDef with OID {2} did not contain a proper text with lang attribute 'de-DE', 'de', or the default value and minimum length of {3} characters. The answer has not been imported. +import.odm.v132.codeList.codedValueLastCharacterSpace=The given CodedValue's last character is a space and therefore cannot be mapped manually. +import.odm.v132.codeList.codedValueNotDouble=The given CodedValue {0} is not of type Double and thus cannot be set as a score value. import.odm.v132.conditionDef.ConditionIncluded=The following condition was included: answer value {0} in question with OID {1} will enable the question with OID {2}. import.odm.v132.conditionDef.ConditionMissingItemData=Error while processing the condition for the question with OID {0}. The condition does not include a valid ItemData. import.odm.v132.conditionDef.ConditionMissingItemGroupData=Error while processing the condition for the question with OID {0}. The condition does not include a valid ItemGroupData. @@ -576,8 +612,6 @@ import.odm.v132.itemGroupDef.itemRefListNullEmpty=The ItemGroupDef of OID {0} di import.odm.v132.itemGroupDef.noMatchingItemDefForItemRef=The ItemGroupDef of OID {0} referred by ItemDef-OID {1} could not be found. The question has not been imported. import.odm.v132.metaDataVersion.itemDefListNullEmpty=The MetaDataVersion of OID {0} did not contain any ItemDefs. No questions have been imported. import.odm.v132.metaDataVersion.itemGroupDefListNullEmpty=The MetaDataVersion of OID {0} did not contain any ItemGroupDefs. Hence, no question have been imported. -INFO_TEXT=Info text -INTEGER=Integer invitation.button.addUser=Add user invitation.button.newInvitation=Create new invitation invitation.button.refreshExpirationDate=Refresh expiration date and re-send E-mail @@ -591,8 +625,6 @@ invitation.label.fileInfo=The personal data, first name, surname and e-mail addr invitation.label.firstname=First name invitation.label.lastname=Last name invitation.label.user=User -LANGUAGE=Language -LASTNAME=Last name layout.button.back=Go Back layout.button.close=Cancel and exit layout.footer.copyright=2026 Institute of Medical Informatics,
      University of M\u00fcnster @@ -625,19 +657,26 @@ mail.invitation.content=Dear user,\n\nwe would like to invite you to use the mob mail.invitation.footer=\n\nYour MoPat team\n\n-- \nMoPat\nemail: {0}\ntel.: {1} mail.invitation.personal=with this personal message:\n\n{0} mail.invitation.subject=Invitation to MoPat +mapping.autosave.body=The mapping has been saved automatically. +mapping.autosave.title=Autosave +mapping.button.clearMapping=Reset mapping mapping.button.map=Edit mapping +mapping.button.mapData=Automatically map fields mapping.button.upload=Upload Template mapping.error.assignedtobundle=The export template {0} is used in a bundle and therefore can not be deleted mapping.error.decimalPlacesWrongFormat=Wrong format for decimal places. (only accepts integer > 0) mapping.error.notemplates=No export templates available +mapping.error.uploadTemplateNotReadableResource=The FHIR-file contains a resource that is not readable for MoPat. Only Questionnaire or QuestionnaireResponse are the resources that will be accepted. mapping.error.uploadtemplateFile=Please provide an export template file mapping.error.uploadtemplateName=Please provide a name for the export template -mapping.error.uploadTemplateNotReadableResource=The FHIR-file contains a resource that is not readable for MoPat. Only Questionnaire or QuestionnaireResponse are the resources that will be accepted. mapping.error.uploadtemplateREDCapFileError=The provided file could not be read mapping.error.uploadtemplateREDCapFileMissingRecordId=The provided file did not contain a field named 'record_id' mapping.heading.metadata=Meta data mapping.heading.title=Export templates for questionnaire mapping.heading.uploadtemplate=Upload new export template +mapping.label.MinMaxStepSize=Step size +mapping.label.MinMaxTexts=Min/Max Texts +mapping.label.MinMaxValues=Min/Max Values mapping.label.decimalDelimiter=Decimal mark mapping.label.decimalPlaces=Decimal places mapping.label.filename=Filename @@ -645,9 +684,6 @@ mapping.label.float=Float mapping.label.formatting=Formatting mapping.label.information=Red template fields can not be mapped due to spaces at the end of their names. mapping.label.integer=Integer -mapping.label.MinMaxStepSize=Step size -mapping.label.MinMaxTexts=Min/Max Texts -mapping.label.MinMaxValues=Min/Max Values mapping.label.name=Name mapping.label.numberType=Number type mapping.label.originalFilename=Original filename @@ -659,16 +695,18 @@ mapping.label.templateFields=Template fields mapping.label.type=Type maximum=Maximum of minimum=Minimum of -MONTHLY=Monthly (every 30 days) -MULTIPLE_CHOICE=Multiple choice -NUMBER_CHECKBOX_TEXT=Numbered checkboxes + free text -NUMBER_CHECKBOX=Numbered checkboxes -NUMBER_INPUT=Number input +modal.delete.cancel=Cancel +modal.delete.confirm=Delete +modal.delete.question.bundle=Are you sure you want to delete bundle "{0}"? +modal.delete.question.clinic=Are you sure you want to delete clinic "{0}"? +modal.delete.question.question=Are you sure you want to delete question {0}? +modal.delete.question.questionnaire=Are you sure you want to delete questionnaire "{0}"? +modal.delete.title=Confirm Deletion +modal.delete.warning=This action cannot be undone. numberInputAnswer.validator.differenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible by the step size numberInputAnswer.validator.minBiggerThanMax=The number input answer's min value was equal or bigger than its max value numberInputAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The number input answer's step size was bigger than the difference between its max and min values numberInputAnswer.validator.stepsizeLowerEqualZero=The number input answer's step size was <= 0 -PATIENT_ID=Patient ID question.answer.delete=Do you really want to delete this answer? All conditions of this answer will be deleted as well. question.button.addAnswer=Add answer question.button.addQuestion=Add question @@ -692,17 +730,17 @@ question.error.minNumberBiggerThanAmountOfAnswers=Minimum number of answers is b question.error.minNumberBiggerThanMaxNumber=Minimum number of answers must not exceed maximum number question.error.noAnswerSelected=There has to be at least one body region selected as answer. question.error.noBodyPartSelected=Choose at least one body part as selectable answer. -question.error.notModifiable=This question is not editable due to already existing responses from surveys question.error.noValidScoreMinMax=It is not possible to give exactly one answer. If you save the question, all scores that contain this question will be deleted. Do you really want to save the question? question.error.noValidScoreQuestionType=A question type has been selected that does not support score calculation. If you save the question, all scores that contain this question will be deleted. Do you really want to save the question? +question.error.notModifiable=This question is not editable due to already existing responses from surveys question.error.questionTextIsNull=The localized question text is required question.error.sliderDifferenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible without remainder by the step size question.error.sliderStepsizeLessOrEqualToZero=The stepsize should not be less or equal to 0 question.heading.editQuestion=Edit question question.heading.insideQuestionnaire=Questionnaire question.heading.title=Questions for questionnaire -question.label.addedLanguages=Added languages (To remove a language click on it) question.label.addLanguage=Add language +question.label.addedLanguages=Added languages (To remove a language click on it) question.label.answerActivated=This answer is active at initializaiton question.label.answerDelete=The last answer cannot be deleted question.label.answerOther=Append freetext if this answer is selected @@ -724,14 +762,15 @@ question.label.freetextLabel=Free text label question.label.imageType=Image of body part selection question.label.infotext=Info text question.label.isEnabled=Question is initially activated +question.label.isJustInfo=The uploaded image is for information purposes and deactivtes interaction elements question.label.isRequired=Necessary for completeness question.label.lastWarning=You did not get it -question.label.maximumText=text at maximum position question.label.maxNumberAnswers=Maximum number of Answers question.label.maxValue=Maximum -question.label.minimumText=text at minimum position +question.label.maximumText=text at maximum position question.label.minNumberAnswers=Minimum number of Answers question.label.minValue=Minimum +question.label.minimumText=text at minimum position question.label.modal.deleteLanguageContent=You are about to remove a language from this question. All content added for this language will be deleted as well. question.label.modal.deleteLanguageTitle=Remove language question.label.modal.remove=Remove @@ -759,10 +798,12 @@ question.table.question=Question questionnaire.button.add=Add questionnaire questionnaire.button.download.fhir=Download questionnaire in FHIR format questionnaire.button.download.mopat=Download questionnaire in MoPat format +questionnaire.button.download.mopatcomplete=Download questionnaire wth export templates in MoPat format questionnaire.button.download.odm=Download questionnaire in ODM format questionnaire.button.download.odmExportTemplate=Download questionnaire as ODM export template questionnaire.button.download.pdf=Download questionnaire in PDF format questionnaire.button.download=Download questionnaire +questionnaire.button.duplicateAndEdit=Duplicate and edit questions questionnaire.button.edit=Edit questionnaire.button.editConditions=Edit conditions questionnaire.button.editQuestions=Edit questions @@ -782,17 +823,21 @@ questionnaire.error.nameIsEmpty=The name shouldn't only consist of space charact questionnaire.heading.editQuestionnaire=Edit questionnaire questionnaire.heading.title=Questionnaires questionnaire.import.button.import=Upload & Import +questionnaire.import.failure.moreInfo=Click here to see more information. questionnaire.import.failure=Failed to upload file. questionnaire.import.fhir.infoText=Regarding FHIR files, please note:
      • The file needs to have the file extension 'xml'
      • The file needs to be compliant to the FHIR-STU-v3.0.1 standard
      • The file's resource needs to be of type questionnaire
      • Additional feedback will follow after the conversion
      questionnaire.import.fhir.urlText=As alternativ it is possible to import FHIR questionnaires based on their specific URL. Please also note in this case:
      • The server needs to be compliant with FHIR-STU-v3.0.1
      • The resource has to exist on the server
      In favor simply copy it into the following input field: questionnaire.import.heading=Import questionnaire from file questionnaire.import.label.file=File questionnaire.import.label.url=URL -questionnaire.import.mopat.infoText=Regarding files that were exported in MoPat format and will now be imported, please note:
      • The files need to have the file extension 'json'
      +questionnaire.import.mopat.infoText=Regarding files that were exported in MoPat format and will now be imported, please note:
      • The files need to have the file extension 'json'

      For files in MoPat format that contain export templates, one entry is created for each existing configuration per export template contained. You can then manually remove any unused templates. questionnaire.import.odm.infoText=Regarding ODM files, please note:
      • The file needs to have the file extension 'xml'
      • The file needs to be compliant to the ODM v1.3.2 standard
      • Only the first Study element will be considered
      • Within this, only the first MetaDataVersion element will be considered
      • Within this, only the first FormDef element will be considered
      • Additional feedback will follow after the conversion
      questionnaire.import.result.heading=Results of import questionnaire from file questionnaire.import.result.question.noMessages=No messages for this question. +questionnaire.import.uploadType.text=Please select the type of the uploaded file. +questionnaire.import.uploadType.title=Filetype questionnaire.label.containedInBundles=Contained in bundles +questionnaire.label.createdAt=Created At questionnaire.label.deleteLogo=Delete logo questionnaire.label.deleteQuestionnaireNotPossible=Questionnaire can not be deleted because the questionnaire is already answered in a survey. questionnaire.label.description=Description @@ -803,6 +848,9 @@ questionnaire.label.name=Name questionnaire.label.questionLanguages=Question languages questionnaire.label.questionnaire=Questionnaire questionnaire.label.welcomeText=Welcome text +questionnaire.message.enabledBundle=The questionnaire cannot be edited because it is part of an enabled bundle. You can duplicate it instead. +questionnaire.message.executedEncounters=The questionnaire cannot be edited because it has executed encounters. You can duplicate it instead. +questionnaire.message.executedEncountersAndEnabledBundle=The questionnaire cannot be edited because it has executed encounters and is part of an enabled bundle. You can duplicate it instead. questionnaire.questions.none=No questions created questionnaire.questions.reposition.conditionError=Questions could not be repositioned. A condition target was before its trigger. questionnaire.questions.reposition.error=Error! Questions could not be repositioned @@ -810,13 +858,8 @@ questionnaire.questions.reposition.success=Questions successfully repositioned questionnaire.scores.none=There are no scores within this questionnaire questionnaire.validator.finalText.notNull=If the questionnaire contains at least one language with a final text, it has to be set for every language. questionnaire.validator.welcomeText.notNull=If the questionnaire contains at least one language with a welcome text, it has to be set for every language. +questionnaire.warning.cloneConditions=Not all of the conditons could be cloned into the new questionnaire. Please re-check them manually questionnaire.warning.deleteQuestionnaireWithConditions=The questionnaire is associated with at least one condition. The corresponding conditions will also be deleted. Do you want to delete the questionnaire anyway? -REPEATEDLY=Multiple times -ROLE_ADMIN=Administrator -ROLE_EDITOR=Editor -ROLE_ENCOUNTERMANAGER=Encounter Manager -ROLE_MODERATOR=Moderator -ROLE_USER= Standard User score.add.heading.title=Add score for questionnaire score.button.addScore=Add score score.button.edit=Edit @@ -844,12 +887,9 @@ score.label.deleteScoreWithScoresWarning=The removal of the score will also dele score.label.name=Name score.label.numberOfMissingValues=Number of
      missing values   score.label.selectOperator=Select operator -SCORE=Score selectAnswer.validator.labelNotNull=The localized select answer's label is required -SLIDER=Slider sliderAnswer.validator.differenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible without remainder by the step size sliderAnswer.validator.freetextLabelNotNull=The localized text for the freetext label is required -sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderAnswer.validator.maxValueNotNull=The answer's max value is required sliderAnswer.validator.maxValueTextNotNull=The localized text for the maximum position is required sliderAnswer.validator.minBiggerThanMax=The answer's min value was equal or bigger than its max value @@ -859,11 +899,10 @@ sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The answer's step size sliderAnswer.validator.stepsizeLowerEqualZero=The answer's step size was <= 0 sliderAnswer.validator.stepsizeWrongPattern=The answer's step size does not match the required pattern. sliderAnswer.validator.tooManySteps=There are more than 200 steps available. Alternatively you can also use the question type number input. +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderIcon.validator.missingIconValue=An icon for every field has to be selected, if the feature is enabled. sliderIcon.validator.missingPosition=The icon's position is required. sliderIcon.validator.positionAlreadyInUse=The icon's position of one ore more icons is identical. Please select different values. -STANDARD=Default rounding -START_TIME=Start time statistic.button.calculate=Calculate statistic.button.export=Export statistics statistic.error.countGreaterThanDays=The number of days is greater than the period. @@ -874,6 +913,9 @@ statistic.error.noStatisticsAvailable=There are no statistics available so far. statistic.error.startdateOutOfRange=The start date is not within the predetermined period. statistic.export.name=Statistics statistic.heading.statistic=Statistics +statistic.label.HL7ExportCount=Number of HL7v2 exports (yesterday) +statistic.label.ODMExportCount=Number of ODM exports (yesterday) +statistic.label.ORBISExportCount=Number of ORBIS exports (yesterday) statistic.label.bundleCount=Number of Bundles statistic.label.clinicCount=Number of Clinics statistic.label.completeEncounterDeletedCount=Number of deleted complete encounters @@ -881,11 +923,8 @@ statistic.label.count=Number of days statistic.label.date=Date statistic.label.encounterCount=Number of encounters statistic.label.enddate=End of the period -statistic.label.HL7ExportCount=Number of HL7v2 exports (yesterday) statistic.label.incompleteEncounterCount=Number of incomplete encounters statistic.label.incompleteEncounterDeletedCount=Number of deleted incomplete encounters -statistic.label.ODMExportCount=Number of ODM exports (yesterday) -statistic.label.ORBISExportCount=Number of ORBIS exports (yesterday) statistic.label.period=Statistics are available for the time period from {0} to {1}. statistic.label.questionnaireCount=Number of Questionnaires statistic.label.startdate=Begin of the period @@ -898,10 +937,10 @@ statistic.onetimestatistic.label.encounterCountByCaseNumberInInterval=How many s statistic.onetimestatistic.label.enddate=Enddate: statistic.onetimestatistic.label.patient=Patient: statistic.onetimestatistic.label.startdate=Startdate: -STRING=String sum=Sum of survey.bundle.questionnaires=This bundle contains the following questionnaires survey.bundles.button.gotoCheck=Recheck case number +survey.bundles.button.gotoClinicSelect= Reselect clinic survey.bundles.button.startSurvey=Start survey survey.bundles.label.availableBundles=Available bundles survey.bundles.label.incompleteEncounter=Incomplete bundles @@ -914,6 +953,7 @@ survey.check.barcodereader.switchCamera=Switch camera survey.check.button.admnistration=Administration survey.check.button.generatePseudonym=Generate pseudonym survey.check.button.register=Register case number +survey.check.button.search2=Search patient ID survey.check.button.search=Search case number survey.check.button.showBundles=Show bundles survey.error.date=The specified birthdate doesn't accord to the specified format mm/DD/yyyy. @@ -935,6 +975,7 @@ survey.label.maleShort=m survey.label.notSpecified=Not specified survey.label.off=Off survey.label.on=On +survey.label.pid=Patient ID survey.label.pseudonym=Pseudonym survey.label.pseudonymizationService=Pseudonymization survey.label.questionnaireNavigationLanguage=Language of the navigation during the survey @@ -955,6 +996,11 @@ survey.question.image.button.undo=Undo survey.question.image.flipswitch.black=Black survey.question.image.flipswitch.white=White survey.question.infotext.hint=This text is just for your information. Click on "next Question" in the upper right corner to continue this survey. +survey.questionnaire.ExactAnswer=Choose exactly {min} answers. +survey.questionnaire.MaxAnswer=Choose up to {max} answers. +survey.questionnaire.MaxAnswerEqualsSizeOfAnswers=Choose at least {min} answers. +survey.questionnaire.MinAnswer=Choose at least {min} answers. +survey.questionnaire.MinMaxAnswer=Choose between {min} and {max} answers. survey.questionnaire.button.answerQuestionsMultiple=Answer questions survey.questionnaire.button.answerQuestionsSingle=Answer question survey.questionnaire.button.closeApplication=Close application @@ -970,7 +1016,6 @@ survey.questionnaire.button.returnToQuestionnaire=Return to questionnaire survey.questionnaire.button.startQuestionnaire=Start questionnaire survey.questionnaire.button.startSurvey=Start survey survey.questionnaire.dropDownNoSelect=Please choose -survey.questionnaire.ExactAnswer=Choose exactly {min} answers. survey.questionnaire.label.answeredQuestions={nameQuestionnaire}: Required Questions ({requiredQuestionsComplete}/{requiredQuestions}), Not required questions ({notRequiredQuestionsComplete}/{notRequiredQuestions}) survey.questionnaire.label.answeredQuestionsDescription=Duly completed Questions: survey.questionnaire.label.date.endDate=The maximal permitted date is {endDate}. @@ -1000,19 +1045,18 @@ survey.questionnaire.label.required=This answer is required. Do you want to skip survey.questionnaire.label.returnDevice=You have finished the survey. Please return the device. survey.questionnaire.label.skipQuestionFalse=Do not skip question survey.questionnaire.label.skipQuestionTrue=Skip question -survey.questionnaire.MaxAnswer=Choose up to {max} answers. -survey.questionnaire.MaxAnswerEqualsSizeOfAnswers=Choose at least {min} answers. -survey.questionnaire.MinAnswer=Choose at least {min} answers. -survey.questionnaire.MinMaxAnswer=Choose between {min} and {max} answers. survey.title.fontSize=Select a font size survey.title.searchCaseNumber=Search for case number survey.title.selectBundle=Select bundle +survey.title.selectClinic=Select clinic typeMismatch.answers.maxValue=The maximum's value of the slider must be an integer value typeMismatch.answers.minValue=The minimum's value of the slider must be an integer value typeMismatch.answers.value=The score must be an integer value typeMismatch.maxNumberAnswers=The value for maximum number of answers must be an integer value typeMismatch.minNumberAnswers=The value for minimum number of answers must be an integer value -UNIQUELY=Uniquely +update.available=Update Available! +update.click.here=Click here for more information +update.message=A new version ({0}) is available. You are currently on version v{1}. user.button.add=Add User user.button.cancel=Cancel user.button.clinicRights=Edit clinic rights @@ -1027,6 +1071,7 @@ user.button.register=Sign up user.button.remove=Remove user.button.requestPassword=Request password user.button.resetPassword=Reset password +user.button.rights=Edit user rights user.button.save=Save user.button.send=Send user.error.badCredentials=Username and/or password was wrong or the system has send information by e-mail @@ -1039,6 +1084,7 @@ user.error.passwordNotCorrect=The current password was not correct user.error.passwordNotSet=The password should not be empty user.error.passwordSize=The user's password must be between {0} and {1} characters in length user.error.passwordsNotMatching=The given passwords did not match +user.error.pinActivatedButNull=The pin was activated, but has not been set. Please enter a valid pin. user.error.pinNotSecure=The entered pin is not secure. Please do not use the same digit (e.g. 000000) or consecutive numbers (e.g. 123456) user.error.pinTooShort=The entered pin is too short user.error.userDisabled=User is disabled @@ -1051,10 +1097,12 @@ user.heading.editProfile=Edit profile user.heading.editUser=Edit user user.heading.mailToAll=Send an email to all users user.heading.passwordReset=Reset password +user.heading.rights=Edit user rights user.heading.userInvitation=User invitation user.heading.userList=Users user.heading.userRegistration=User registration user.label.activatePin=Activate quick login with a pin +user.label.changePassword=Change the password of user "{0}" user.label.changeUser=Login with another account user.label.domainUser= Are you user of the domain "{0}"? user.label.email=E-mail @@ -1072,25 +1120,38 @@ user.label.newPasswordApprove=Enter new password again user.label.no=No user.label.oldPassword=Current password user.label.password=Password +user.label.pin.moreInfo=This function allows you to quickly log back in to MoPat. After activating the pin, you can quickly start a new survey. It is not necessary to log in again.
      Security note: If the pin is entered incorrectly three times, an account is automatically logged out. Otherwise, this function remains active until midnight unless you log out manually. +user.label.pin.requirements.length=The pin has to be at least 6 digits long +user.label.pin.requirements.sequence=A numerical sequence (123456) is not allowed +user.label.pin.requirements.uniqueness=The pin must consist of different digits +user.label.pin.requirements=Please make sure your pin meets the following requirements: user.label.pin=Pin user.label.preview=Preview user.label.role=Role user.label.status=Status user.label.subject=Subject +user.label.togglePassword=Click to show/hide password user.label.unlock=Unlock user.label.username=Username user.label.usertype=Usertype user.label.yes=Yes +user.list.userDeleteError=You tried to deactivate your own account. This is not allowed. If you want to deactivate this account, please log in to another admin account and try again. user.status.disabled=Disabled user.status.enabled=Enabled user.success.changed=The user has been saved user.success.forgotPassword=Information concerning your password reset request was sent to you by e-mail -user.table.noMoreClinics=There are no more clinics available user.table.UserClinicsEmpty=No clinics assigned +user.table.noMoreClinics=There are no more clinics available user.type.ldap=LDAP/AD user.type.local=Local value=Value -VALUE=Value valueOf=Value of question valueOfScore=Value of score -WEEKLY=Weekly (every 7 days) \ No newline at end of file +questionnaire.download.mopatComplete=MoPat with Export Templates +configuration.label.exportFHIRViaHL7v2=Send FHIR export via HL7 communication server. +configuration.label.FHIRViaHL7v2Host=Send FHIR export via HL7 communication server. +configuration.label.FHIRViaHL7v2Port=Port of the HL7 communication server for FHIR export. +configuration.label.FHIRViaHL7v2SendingFacility= +configuration.description.exportFHIRViaHL7v2=For FHIR, export can be set up using an HL7v2 communication server. In this case, the FHIR resource is embedded as a blob in the HL7 message. +encounter.error.caseNumberInvalid=The case number was invalid. Please try again! +survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section \ No newline at end of file diff --git a/src/test/resources/message/messages_de_DE.properties b/src/test/resources/message/messages_de_DE.properties index 22103a77..4492a1e5 100644 --- a/src/test/resources/message/messages_de_DE.properties +++ b/src/test/resources/message/messages_de_DE.properties @@ -1155,5 +1155,4 @@ configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes -sliderAnswer.validator.localizedMinimumText=Der eingegebene Text ist länger als 255 Zeichen. sliderAnswer.validator.localizedMinMaxText=Der eingegebene Text hat mehr als 255 Zeichen. \ No newline at end of file diff --git a/src/test/resources/message/messages_en_GB.properties b/src/test/resources/message/messages_en_GB.properties index f68997d4..77361b44 100644 --- a/src/test/resources/message/messages_en_GB.properties +++ b/src/test/resources/message/messages_en_GB.properties @@ -1,15 +1,63 @@ --=- *=* -/=/ -\!\==\!\= -\=\==\=\= +=+ -<\==<\= +-=- +/=/ <=< ->\==>\= +<\==<\= >=> +>\==>\= +BACK=Back view +BARCODE=Barcode +BIRTHDATE=Birth date +BODY_PART=Body part selection +CASE_NUMBER=Case number +CEIL=Ceil +COMMA=Comma +DATE=Date +DOT=Dot +DROP_DOWN=Drop down list +END_TIME=End time +FIRSTNAME=First name +FLOAT=Float +FLOOR=Floor +FORMULA=Formula +FREE_TEXT=Free text +FRONT=Front view +FRONT_BACK=Front- and back view +GENDER=Gender +IMAGE=Image +INFO_TEXT=Info text +INTEGER=Integer +LANGUAGE=Language +LASTNAME=Last name +MONTHLY=Monthly (every 30 days) +MULTIPLE_CHOICE=Multiple choice +NUMBER_CHECKBOX=Numbered checkboxes +NUMBER_CHECKBOX_TEXT=Numbered checkboxes + free text +NUMBER_INPUT=Number input +PATIENT_ID=Patient ID +REPEATEDLY=Multiple times +ROLE_ADMIN=Administrator +ROLE_EDITOR=Editor +ROLE_ENCOUNTERMANAGER=Encounter Manager +ROLE_MODERATOR=Moderator +ROLE_USER= Standard User +SCORE=Score +SLIDER=Slider +STANDARD=Default rounding +START_TIME=Start time +STRING=String +UNIQUELY=Uniquely +VALUE=Value +WEEKLY=Weekly (every 7 days) +\!\==\!\= +\=\==\=\= admin.information.cache.action=Clear cache -admin.information.cache=Timestamp of last cache reset +admin.information.cache=Timestamp of last cache reset +admin.information.git.branch=Branch +admin.information.git.build.version=Build Version +admin.information.git.commit.id=Commit ID +admin.information.git.commit.message=Commit Message admin.information.title=Admin Information admin.navigation.bundle=Manage bundles admin.navigation.clinic=Manage clinics @@ -40,10 +88,6 @@ answer.warning.deleteAnswerWithExportRules=This answer has export rules attached answer.warning.isOtherNotLastAnswer=This answer is marked as 'other' and will be shown as the last answer of the question. auditEntry.error.noSenderReceiver=When trying to create an audit log entry for sending/receiving data, no receiver/sender was given average=Average -BACK=Back view -BARCODE=Barcode -BIRTHDATE=Birth date -BODY_PART=Body part selection bodyPart.back.anus=Anus bodyPart.back.head=Back head bodyPart.back.hips=Buttocks @@ -92,6 +136,7 @@ bundle.button.add=Add bundle bundle.button.edit=Edit bundle.button.lock=Block bundle.button.publish=Release +bundle.button.testExport=Test assigned exports bundle.button.remove=Remove bundle.error.deleteNotPossible=Bundle {0} cannot be deleted because there has already been one survey using this bundle. bundle.error.deletePossible=Bundle {0} was deleted. @@ -111,6 +156,7 @@ bundle.heading.title=Bundles bundle.label.availableLanguages=Available languages bundle.label.bundleName=Name bundle.label.containedInClinics=Contained in clinics +bundle.label.createdAt=Created At bundle.label.deactivateProgressAndNameDuringSurvey=The questionnaire's name and the progress will not be displayed during a survey bundle.label.description=Description bundle.label.finalText=Finaltext @@ -125,12 +171,14 @@ bundle.selection.bundles=Select questionnaire bundle... bundle.status.blocked=Blocked bundle.status.released=Released bundle.table.bundleQuestionnairesEmpty=No questionnaires assigned +bundle.table.hideQuestionnaireVersions=Hide versions bundle.table.isEnabled=Active bundle.table.noMoreQuestionnaires=There are no more questionnaires available bundle.table.questionnaireDescription=Description bundle.table.questionnaireName=Name bundle.table.questionnairePosition=Position bundle.table.score=Score +bundle.table.showQuestionnaireVersions=Show versions bundle.validator.finalText.notNull=If the bundle contains at least one language with a final text, it has to be set for every language. bundle.validator.welcomeText.notNull=If the bundle contains at least one language with a welcome text, it has to be set for every language. bundle.warning.deleteBundleFromClinics=This bundle is assigned to at least one clinic. Do you want to delete it anyway? @@ -138,30 +186,32 @@ bundle.warning.deleteBundleWithConditions=The bundle is associated with at least bundle.warning.deleteBundleWithConditionsAndClinics=The bundle is associated with at least one condition and one clinic. The corresponding conditions will also be deleted. Do you want to delete the bundle anyway? button.cancel=Cancel button.deleteAll=Delete all +button.duplicate=Duplicate button.edit=Edit button.ok=Ok button.remove=Remove button.save=Save button.selectAll=Select all -CASE_NUMBER=Case number -CEIL=Ceil clinic.button.add=Add clinic clinic.button.edit=Edit clinic.button.remove=Remove clinic.error.nameContainsSpecialCharacters=The name you entered contains invalid characters. Only letters, numbers and the special characters !?+-_.:()[] are allowed. clinic.error.nameInUse=The chosen name is already in use. Please choose a different one. clinic.error.nameIsEmpty=The name shouldn't only consist of space characters. +clinic.error.noConfiguration=No configuration was selected. clinic.heading.assignedBundles=Assigned bundles clinic.heading.assignedUsers=Assigned users clinic.heading.availableBundle=Available bundles clinic.heading.availableBundleInfo=Only bundles which are published and contain questionnaires are displayed clinic.heading.availableUsers=Available users +clinic.heading.clinicConfiguration=Clinic Configuration clinic.heading.editClinic=Edit clinic clinic.heading.title=Clinics clinic.label.defaultBundle=Default bundle clinic.label.description=Description clinic.label.email=E-mail clinic.label.name=Name +clinic.message.deleteFailure=Clinic {0} cannot be deleted because it has an active survey. clinic.message.deleteSuccess=Clinic {0} was deleted. clinic.table.bundleDescription=Description clinic.table.bundleName=Name @@ -172,7 +222,6 @@ clinic.table.noMoreBundles=No bundles available clinic.table.noMoreUsers=No users available clinic.table.userName=Username clinic.table.usersEmpty=No users assigned -COMMA=Comma condition.button.add=Add condition condition.button.addTarget=Add target condition.button.backToQuestionnaire=Back to questionnaire @@ -188,13 +237,13 @@ condition.error.unknownTrigger=Unknown Trigger condition.heading.title.edit=Edit condition condition.heading.title.new=Create new condition condition.heading.title=Conditions of Question +condition.label.DISABLE=should not be displayed. +condition.label.ENABLE=should be displayed. condition.label.action=perform the following action condition.label.condition=Condition condition.label.conditionAnswer=Conditions aiming at an answer condition.label.conditionQuestion=Conditions aiming at a question condition.label.conditionQuestionnaire=Conditions aiming at a questionnaires -condition.label.DISABLE=should not be displayed. -condition.label.ENABLE=should be displayed. condition.label.ending=Hide condition.label.fromBundle=from bundle condition.label.fromQuestion=from question @@ -221,6 +270,7 @@ configuration.description.exportPath=This is the path completed questionnaires w configuration.description.finishedEncounterMailaddressTimeWindowInMillis=Any email address of a finished encounter older than this timeframe will be deleted (default: 30 days). The value -1 deactivates the deletion. configuration.description.finishedEncounterScheduledTimeWindowInMillis=Any scheduled encounter finished and older than this timeframe will be deleted (default: 90 days). The value -1 deactivates the deletion. configuration.description.finishedEncounterTimeWindowInMillis=Any encounter finished and older than this timeframe will be deleted (default: 30 days). The value -1 deactivates the deletion. +configuration.description.imprint=Please enter the imprint content configuration.description.incompleteEncounterScheduledTimeWindowInMillis=Any incomplete scheduled encounter older than this timeframe will be deleted (default: 180 days). The value -1 deactivates the deletion. configuration.description.incompleteEncounterTimeWindowInMillis=Any incomplete encounter older than this timeframe will be deleted (default: 180 days). The value -1 deactivates the deletion. configuration.description.logo=Please upload non-square logos with a transparent background for the best visual appeal on our platform. @@ -232,6 +282,15 @@ configuration.error.wrongValidationSchemaType=The file format doesn't accord wit configuration.file.notUploaded=No file uploaded configuration.file.path=Path to the uploaded file configuration.file.uploaded=File uploaded +configuration.label.FHIRsystemURI=System URI for FHIR export +configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever +configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever +configuration.label.ODMviaHL7Hostname=Host of HL7 communication server for ODM export. +configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). +configuration.label.ODMviaHL7Port=Port of HL7 communication server for ODM export. +configuration.label.ODMviaHL7ReceivingApplication="Receiving Application" for the HL7 Exporter (MSH-5). +configuration.label.ODMviaHL7ReceivingFacility="Receiving Facility" for the HL7 Exporter (MSH-6). +configuration.label.ODMviaHL7SendingFacility="Sending Facility" for the HL7 Exporter (MSH-4). configuration.label.activeDirectoryLdapAuthenticationProviderActivated=Allow Active Directory authentication configuration.label.activeDirectoryLdapAuthenticationProviderDefaultLanguage=Default language for the email sent to active directory users configuration.label.activeDirectoryLdapAuthenticationProviderDomain=Domain for the active directory @@ -253,9 +312,8 @@ configuration.label.encounter.incompleteEncounterTimeWindowInMillis=The time, af configuration.label.executionTime=Hour in which to start the execution of surveys configuration.label.exportFHIRInDirectory=Export FHIR into directory. configuration.label.exportFHIRPath=Export path for the copy of the FHIR-Export. Please enter the absolute path (not the relative path). -configuration.label.exportFHIRUrl=URL of REST-Interface for FHIR-Export / URL of the communication server -configuration.label.exportFHIRViaCommunicationServer=Export FHIR via communication server. -configuration.label.exportHL7_OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). +configuration.label.exportFHIRUrl=URL of REST-Interface for FHIR-Export. +configuration.label.exportFHIRViaCommunicationServer=Export FHIR via REST. configuration.label.exportHL7ClientPKCSPassword=Password for the client private key (that is contained within the given archive). configuration.label.exportHL7ClientPKCSPath=Client PKCS archive (.p12 file) to verify the client and encrypt the messages. Please upload a valid PKCS archive. configuration.label.exportHL7Host=Host of the HL7 communication server. @@ -269,23 +327,20 @@ configuration.label.exportHL7ServerCertificatePath=Server certificate to verify configuration.label.exportHL7UseClientAuth=Use a certificate to authorize the client on the server. configuration.label.exportHL7UseTLS=Encrypt message using TLS. configuration.label.exportHL7ViaCommunicationServer=Export HL7 via communication server. +configuration.label.exportHL7_OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). configuration.label.exportODMInDirectory=Export ODM into directory. configuration.label.exportODMPath=Export path for the file based ODM-Export. Please enter the absolute path (not the relative path). configuration.label.exportODMUrl=URL of REST-Interface for ODM-Export. -configuration.label.exportODMviaHL7=Export ODM via HL7 communication server. configuration.label.exportODMViaRest=Export ODM via REST. +configuration.label.exportODMviaHL7=Export ODM via HL7 communication server. configuration.label.exportOrbisPath=Export path for the file based Orbis-Export. Please enter the absolute path (not the relative path). configuration.label.exportREDCapApiToken=API Token of REST-Interface for REDCap-Export. configuration.label.exportREDCapInDirectory=Export REDCap into directory. configuration.label.exportREDCapPath=Export path for the file based REDCap-Export. Please enter the absolute path (not the relative path). configuration.label.exportREDCapUrl=URL of REST-Interface for REDCap-Export. configuration.label.exportREDCapViaRest=Export REDCap via REST. -configuration.label.FHIRsystemURI=System URI for FHIR export -configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverHostname=Host for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever -configuration.label.HL7v22PatientInformationRetrieverPort=Port for the HL7v22PatientInformationRetriever configuration.label.imageUploadPath=Path for uploaded images. Please enter the absolute path (not the relative path). +configuration.label.imprint=Imprint configuration.label.logo=Logo configuration.label.mailSender.auth=SMTP authentication configuration.label.mailSender.from=Sender of the emails sent from the application mailer @@ -298,18 +353,6 @@ configuration.label.metadataExporterODMOID=Object Identifier (OID for the ODM me configuration.label.metadataExporterPDF=URL of the ODM to PDF converter configuration.label.name=Configuration group configuration.label.object.storagePath=Storage path for uploads (i.e. export templates). Please enter the absolute path (not the relative path). -configuration.label.ODMviaHL7Hostname=Host of HL7 communication server for ODM export. -configuration.label.ODMviaHL7Hostname=Host of HL7 communication server for ODM export. -configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). -configuration.label.ODMviaHL7OBRFillerOrderNumber="Filler Order Number" for the HL7 Exporter (OBR-3). -configuration.label.ODMviaHL7Port=Port of HL7 communication server for ODM export. -configuration.label.ODMviaHL7Port=Port of HL7 communication server for ODM export. -configuration.label.ODMviaHL7ReceivingApplication="Receiving Application" for the HL7 Exporter (MSH-5). -configuration.label.ODMviaHL7ReceivingApplication="Receiving Application" for the HL7 Exporter (MSH-5). -configuration.label.ODMviaHL7ReceivingFacility="Receiving Facility" for the HL7 Exporter (MSH-6). -configuration.label.ODMviaHL7ReceivingFacility="Receiving Facility" for the HL7 Exporter (MSH-6). -configuration.label.ODMviaHL7SendingFacility="Sending Facility" for the HL7 Exporter (MSH-4). -configuration.label.ODMviaHL7SendingFacility="Sending Facility" for the HL7 Exporter (MSH-4). configuration.label.patientRetrieverClass=Implementation to utilize to look up patient data configuration.label.pseudonymizationService.path=URL of pseudonymization server configuration.label.pseudonymizationService=Request pseudonym by patient data @@ -328,31 +371,33 @@ configuration.validate.double=The value of the field {field} is not decimal. configuration.validate.integer=The value of the field {field} has to be between 0 and 2E31-1. configuration.validate.localPath=The given path of the field {field} is not readable/writable for MoPat configuration.validate.long=The value of the field {field} has to be between 0 and 2E63-1. +configuration.validate.mappedConfigurationNotFound=The value for this configuration was not selected. configuration.validate.multipleName=The name of this configuration group exists multiple times. configuration.validate.noName=This configuration group has got no name. configuration.validate.pattern=The value of the field {field} does not match the needed format. +configuration.validate.xss=The text contains invalid elements (e.g. script elements) +configurationGroup.label.FHIR=FHIR-Export +configurationGroup.label.HLSeven=HL7-Export +configurationGroup.label.ODM=ODM-Export +configurationGroup.label.ORBIS=Orbis-Export +configurationGroup.label.REDCap=REDCap-Export configurationGroup.label.activeDirectoryAuthentication=Active Directory Authentication configurationGroup.label.encounter=Encounter -configurationGroup.label.FHIR=FHIR-Export configurationGroup.label.general=General -configurationGroup.label.HLSeven=HL7-Export configurationGroup.label.info=A name for this configuration group can be set here to identify it clearly. This is necessary because this configuration group is repeatable. configurationGroup.label.mail=Email configurationGroup.label.metadataExporter=Metadata Exporter -configurationGroup.label.ODM=ODM-Export -configurationGroup.label.ORBIS=Orbis-Export configurationGroup.label.patientDataRetriever=Patient data retriever -configurationGroup.label.REDCap=REDCap-Export +configurationGroup.label.pseudonymization=Pseudonymization configurationGroup.label.support=Support +configurationGroup.label.usePatientLookUp=Patient Lookup counter=Count -DATE=Date dateAnswer.validator.endDateWrongFormat=The latest date has the wrong format dateAnswer.validator.endEarlierThanStart=The latest date is earlier than the earliest date dateAnswer.validator.startDateWrongFormat=The earliest date has the wrong format dateAnswer.validator.startEqualsEnd=The start date shouldn't be equal to the end date dateAnswer.validator.startLaterThanEnd=The earliest date is later than the latest date -DOT=Dot -DROP_DOWN=Drop down list +editor.welcome=Welcome to Mobile Patient Survey (MoPat)!

      This is the administration interface of MoPat.
      From this interface on, you are able to
      MoPat is developed by the Institute of Medical Informatics, M\u00fcnster, managed by Univ.-Prof. Dr. rer. nat. Dominik Heider.
      You can contact us at {1} or {2}. encounter.button.encounterName=Name encounter.button.export=Export encounter.error.caseNumberIsEmpty=The case number shouldn't be empty or only consist of space characters. @@ -373,7 +418,6 @@ encounter.label.endDate=End date encounter.label.export=Exports (completed/assigned) encounter.label.lastReminderDate=Last reminder email on encounter.label.startDate=Start date -encountermanager.welcome=Welcome to Mobile Patient Survey (MoPat)!

      This is the administration interface of MoPat.
      From this interface on, you are able toMoPat is developed by the Institute of Medical Informatics, M\u00fcnster, managed by Univ.-Prof. Dr. rer. nat. Dominik Heider.
      You can contact us at {1} or {2}. encounterScheduled.button.abort=Abort the scheduled encounter. No more encounters will be created or emails send. encounterScheduled.button.addressRejected=The given email address doesn't exist. Please change it. encounterScheduled.button.consentPending=Waiting for the patient to confirm. @@ -399,6 +443,7 @@ encounterScheduled.label.born=Born at encounterScheduled.label.cancelEncounterDialog=Do you really want to cancel the scheduled encounter? encounterScheduled.label.caseNumber=Casenumber / Pseudonym encounterScheduled.label.changeEmail=Change email address +encounterScheduled.label.clinic=Associated Clinic For The Encounter encounterScheduled.label.date=Date encounterScheduled.label.email=E-mail encounterScheduled.label.encounterScheduledAll=All scheduled Encounters @@ -427,24 +472,16 @@ encounterScheduled.validator.enddateEmpty=The end date can not be empty encounterScheduled.validator.enddateMustBeAfterStartdate=The end date must be after the start date encounterScheduled.validator.invalidReplyMail=Illegal e-mail adress encounterScheduled.validator.repeatPeriodGreaterThanZero=Number of days must be greater than zero -encounterScheduled.validator.startdateCanNotBeInThePast=Startdate can not be in the past encounterScheduled.validator.startDateEmpty=The start date can not be empty +encounterScheduled.validator.startdateCanNotBeInThePast=Startdate can not be in the past encounterScheduled.warning.daysShorterThanThePeriod=The given repeat period is larger than the period between start- and enddate. Thus, only one survey will be scheduled on the startdate. -END_TIME=End time +encountermanager.welcome=Welcome to Mobile Patient Survey (MoPat)!

      This is the administration interface of MoPat.
      From this interface on, you are able toMoPat is developed by the Institute of Medical Informatics, M\u00fcnster, managed by Univ.-Prof. Dr. rer. nat. Dominik Heider.
      You can contact us at {1} or {2}. error.heading.denied=Access denied! error.heading.internalservererror=Oops! There was something wrong. The support team has been informed. error.heading.pagenotfound=The page you requested does not exist, either you entered the wrong address or the page does not exist any more. error.heading.sessionTimeout=Your session has expired because you have been inactive for too long.
      Please log in again. filter.label.noHits=Search doesn't match any results. filter.label.placeholder=B\u00fasqueda -FIRSTNAME=First name -FLOAT=Float -FLOOR=Floor -FORMULA=Formula -FREE_TEXT=Free text -FRONT_BACK=Front- and back view -FRONT=Front view -GENDER=Gender header.userOptions.edit=Edit profile header.userOptions.logout=Logout header.userOptions.signedInAs=Signed in as @@ -466,7 +503,7 @@ helpMode.label.question.dropDown=This question allows choosing an answer from a helpMode.label.question.freeText=This question allows entering a text. Please click/tap the field and write your answer in the field. helpMode.label.question.image=This is an image question. Please mark the specific position with a click/tap on the image. helpMode.label.question.multipleChoice=This question allows choosing one or several answers from a given set of answers. If it is possible to choose more than one answer you will find a hint above the answers. -helpMode.label.question.numberCheckbox=This question allows choosing anumber from a given set of numbers. Please click/tap on the desired number to select it. +helpMode.label.question.numberCheckbox=This question allows choosing a number from a given set of numbers. Please click/tap on the desired number to select it. helpMode.label.question.numberCheckboxText=This question allows choosing a number from a given set of numbers and an additional text. Please click/tap on the desired number to select it and write your answer in the field below. helpMode.label.question.numberInput=This question allows entering a number. If there are any restrictions concerning the number you will find a hint above the answer field. helpMode.label.question.slider=This question allows entering a number on a so-called slider. Please click/tap and hold the handle to move it to the desired position. To delete your answer click/tap on the handle. @@ -486,7 +523,6 @@ helpMode.label.questionnaireWelcome.logo=This is the logo of the questionnaire. helpMode.label.questionnaireWelcome.nextButton=If you click/tap this button you will start the questionnaire. helpMode.label.questionnaireWelcome.text=This is the welcome text of the questionnaire. helpMode.label.questionnaireWelcome.title=This is the title of the questionnaire. -IMAGE=Image imageAnswer.error.upload=An error has occured while uploading the image. imageAnswer.validator.fileTooBig=The chosen image was bigger than 2 MB, please choose a smaller one. imageAnswer.validator.noFilePath=The filepath must not be empty. @@ -521,11 +557,12 @@ import.fhir.questionnaire.descriptionSetToTitle=The questionnaire doesn't contai import.fhir.validate.error=An error has been occurred during validation of the input file. import.fhir.validate.invalidFile=The input file isn't conform with FHIR specification. Following error has ocurred: {0}. import.fhir.validate.schemaFileDirectoryNull=The directory of the XML Schema Definitions is incorrect. -import.odm.v132.codeList.codedValueLastCharacterSpace=The given CodedValue's last character is a space and therefore cannot be mapped manually. -import.odm.v132.codeList.codedValueNotDouble=The given CodedValue {0} is not of type Double and thus cannot be set as a score value. +import.fhir.validation.error.detailed={0}: Line: {1}; Path: {2}; Message: {3} import.odm.v132.codeList.codeListItemListNullEmpty=The CodeList with OID {0} that is part of the MetaDataVersion with OID {1} and is referred by the ItemDef with OID {2}, is empty. Any referred answers have not been imported. import.odm.v132.codeList.codeListItemNoOrderNumber=The CodeListItem with CodedValue {0}, that is part of the MetaDataVersion with OID {1} and is referred by the ItemDef with OID {2}, does not have an OrderNumber. CodeListItems of the same CodeList have been imported based on their occurence in the XMl file. import.odm.v132.codeList.codeListItemNoTranslatedText=The CodeListItem with CodedValue {0}, that is part of the MetaDataVersion with OID {1} and is referred by the ItemDef with OID {2} did not contain a proper text with lang attribute 'de-DE', 'de', or the default value and minimum length of {3} characters. The answer has not been imported. +import.odm.v132.codeList.codedValueLastCharacterSpace=The given CodedValue's last character is a space and therefore cannot be mapped manually. +import.odm.v132.codeList.codedValueNotDouble=The given CodedValue {0} is not of type Double and thus cannot be set as a score value. import.odm.v132.conditionDef.ConditionIncluded=The following condition was included: answer value {0} in question with OID {1} will enable the question with OID {2}. import.odm.v132.conditionDef.ConditionMissingItemData=Error while processing the condition for the question with OID {0}. The condition does not include a valid ItemData. import.odm.v132.conditionDef.ConditionMissingItemGroupData=Error while processing the condition for the question with OID {0}. The condition does not include a valid ItemGroupData. @@ -575,8 +612,6 @@ import.odm.v132.itemGroupDef.itemRefListNullEmpty=The ItemGroupDef of OID {0} di import.odm.v132.itemGroupDef.noMatchingItemDefForItemRef=The ItemGroupDef of OID {0} referred by ItemDef-OID {1} could not be found. The question has not been imported. import.odm.v132.metaDataVersion.itemDefListNullEmpty=The MetaDataVersion of OID {0} did not contain any ItemDefs. No questions have been imported. import.odm.v132.metaDataVersion.itemGroupDefListNullEmpty=The MetaDataVersion of OID {0} did not contain any ItemGroupDefs. Hence, no question have been imported. -INFO_TEXT=Info text -INTEGER=Integer invitation.button.addUser=Add user invitation.button.newInvitation=Create new invitation invitation.button.refreshExpirationDate=Refresh expiration date and re-send E-mail @@ -590,8 +625,6 @@ invitation.label.fileInfo=The personal data, first name, surname and e-mail addr invitation.label.firstname=First name invitation.label.lastname=Last name invitation.label.user=User -LANGUAGE=Language -LASTNAME=Last name layout.button.back=Go Back layout.button.close=Cancel and exit layout.footer.copyright=2026 Institute of Medical Informatics,
      University of M\u00fcnster @@ -624,19 +657,26 @@ mail.invitation.content=Dear user,\n\nwe would like to invite you to use the mob mail.invitation.footer=\n\nYour MoPat team\n\n-- \nMoPat\nemail: {0}\ntel.: {1} mail.invitation.personal=with this personal message:\n\n{0} mail.invitation.subject=Invitation to MoPat +mapping.autosave.body=The mapping has been saved automatically. +mapping.autosave.title=Autosave +mapping.button.clearMapping=Reset mapping mapping.button.map=Edit mapping +mapping.button.mapData=Automatically map fields mapping.button.upload=Upload Template mapping.error.assignedtobundle=The export template {0} is used in a bundle and therefore can not be deleted mapping.error.decimalPlacesWrongFormat=Wrong format for decimal places. (only accepts integer > 0) mapping.error.notemplates=No export templates available +mapping.error.uploadTemplateNotReadableResource=The FHIR-file contains a resource that is not readable for MoPat. Only Questionnaire or QuestionnaireResponse are the resources that will be accepted. mapping.error.uploadtemplateFile=Please provide an export template file mapping.error.uploadtemplateName=Please provide a name for the export template -mapping.error.uploadTemplateNotReadableResource=The FHIR-file contains a resource that is not readable for MoPat. Only Questionnaire or QuestionnaireResponse are the resources that will be accepted. mapping.error.uploadtemplateREDCapFileError=The provided file could not be read mapping.error.uploadtemplateREDCapFileMissingRecordId=The provided file did not contain a field named 'record_id' mapping.heading.metadata=Meta data mapping.heading.title=Export templates for questionnaire mapping.heading.uploadtemplate=Upload new export template +mapping.label.MinMaxStepSize=Step size +mapping.label.MinMaxTexts=Min/Max Texts +mapping.label.MinMaxValues=Min/Max Values mapping.label.decimalDelimiter=Decimal mark mapping.label.decimalPlaces=Decimal places mapping.label.filename=Filename @@ -644,9 +684,6 @@ mapping.label.float=Float mapping.label.formatting=Formatting mapping.label.information=Red template fields can not be mapped due to spaces at the end of their names. mapping.label.integer=Integer -mapping.label.MinMaxStepSize=Step size -mapping.label.MinMaxTexts=Min/Max Texts -mapping.label.MinMaxValues=Min/Max Values mapping.label.name=Name mapping.label.numberType=Number type mapping.label.originalFilename=Original filename @@ -658,16 +695,18 @@ mapping.label.templateFields=Template fields mapping.label.type=Type maximum=Maximum of minimum=Minimum of -MONTHLY=Monthly (every 30 days) -MULTIPLE_CHOICE=Multiple choice -NUMBER_CHECKBOX_TEXT=Numbered checkboxes + free text -NUMBER_CHECKBOX=Numbered checkboxes -NUMBER_INPUT=Number input +modal.delete.cancel=Cancel +modal.delete.confirm=Delete +modal.delete.question.bundle=Are you sure you want to delete bundle "{0}"? +modal.delete.question.clinic=Are you sure you want to delete clinic "{0}"? +modal.delete.question.question=Are you sure you want to delete question {0}? +modal.delete.question.questionnaire=Are you sure you want to delete questionnaire "{0}"? +modal.delete.title=Confirm Deletion +modal.delete.warning=This action cannot be undone. numberInputAnswer.validator.differenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible by the step size numberInputAnswer.validator.minBiggerThanMax=The number input answer's min value was equal or bigger than its max value numberInputAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The number input answer's step size was bigger than the difference between its max and min values numberInputAnswer.validator.stepsizeLowerEqualZero=The number input answer's step size was <= 0 -PATIENT_ID=Patient ID question.answer.delete=Do you really want to delete this answer? All conditions of this answer will be deleted as well. question.button.addAnswer=Add answer question.button.addQuestion=Add question @@ -691,17 +730,17 @@ question.error.minNumberBiggerThanAmountOfAnswers=Minimum number of answers is b question.error.minNumberBiggerThanMaxNumber=Minimum number of answers must not exceed maximum number question.error.noAnswerSelected=There has to be at least one body region selected as answer. question.error.noBodyPartSelected=Choose at least one body part as selectable answer. -question.error.notModifiable=This question is not editable due to already existing responses from surveys question.error.noValidScoreMinMax=It is not possible to give exactly one answer. If you save the question, all scores that contain this question will be deleted. Do you really want to save the question? question.error.noValidScoreQuestionType=A question type has been selected that does not support score calculation. If you save the question, all scores that contain this question will be deleted. Do you really want to save the question? +question.error.notModifiable=This question is not editable due to already existing responses from surveys question.error.questionTextIsNull=The localized question text is required question.error.sliderDifferenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible without remainder by the step size question.error.sliderStepsizeLessOrEqualToZero=The stepsize should not be less or equal to 0 question.heading.editQuestion=Edit question question.heading.insideQuestionnaire=Questionnaire question.heading.title=Questions for questionnaire -question.label.addedLanguages=Added languages (To remove a language click on it) question.label.addLanguage=Add language +question.label.addedLanguages=Added languages (To remove a language click on it) question.label.answerActivated=This answer is active at initializaiton question.label.answerDelete=The last answer cannot be deleted question.label.answerOther=Append freetext if this answer is selected @@ -723,14 +762,15 @@ question.label.freetextLabel=Free text label question.label.imageType=Image of body part selection question.label.infotext=Info text question.label.isEnabled=Question is initially activated +question.label.isJustInfo=The uploaded image is for information purposes and deactivtes interaction elements question.label.isRequired=Necessary for completeness question.label.lastWarning=You did not get it -question.label.maximumText=text at maximum position question.label.maxNumberAnswers=Maximum number of Answers question.label.maxValue=Maximum -question.label.minimumText=text at minimum position +question.label.maximumText=text at maximum position question.label.minNumberAnswers=Minimum number of Answers question.label.minValue=Minimum +question.label.minimumText=text at minimum position question.label.modal.deleteLanguageContent=You are about to remove a language from this question. All content added for this language will be deleted as well. question.label.modal.deleteLanguageTitle=Remove language question.label.modal.remove=Remove @@ -758,10 +798,12 @@ question.table.question=Question questionnaire.button.add=Add questionnaire questionnaire.button.download.fhir=Download questionnaire in FHIR format questionnaire.button.download.mopat=Download questionnaire in MoPat format +questionnaire.button.download.mopatcomplete=Download questionnaire wth export templates in MoPat format questionnaire.button.download.odm=Download questionnaire in ODM format questionnaire.button.download.odmExportTemplate=Download questionnaire as ODM export template questionnaire.button.download.pdf=Download questionnaire in PDF format questionnaire.button.download=Download questionnaire +questionnaire.button.duplicateAndEdit=Duplicate and edit questions questionnaire.button.edit=Edit questionnaire.button.editConditions=Edit conditions questionnaire.button.editQuestions=Edit questions @@ -781,17 +823,21 @@ questionnaire.error.nameIsEmpty=The name shouldn't only consist of space charact questionnaire.heading.editQuestionnaire=Edit questionnaire questionnaire.heading.title=Questionnaires questionnaire.import.button.import=Upload & Import +questionnaire.import.failure.moreInfo=Click here to see more information. questionnaire.import.failure=Failed to upload file. questionnaire.import.fhir.infoText=Regarding FHIR files, please note:
      • The file needs to have the file extension 'xml'
      • The file needs to be compliant to the FHIR-STU-v3.0.1 standard
      • The file's resource needs to be of type questionnaire
      • Additional feedback will follow after the conversion
      questionnaire.import.fhir.urlText=As alternativ it is possible to import FHIR questionnaires based on their specific URL. Please also note in this case:
      • The server needs to be compliant with FHIR-STU-v3.0.1
      • The resource has to exist on the server
      In favor simply copy it into the following input field: questionnaire.import.heading=Import questionnaire from file questionnaire.import.label.file=File questionnaire.import.label.url=URL -questionnaire.import.mopat.infoText=Regarding files that were exported in MoPat format and will now be imported, please note:
      • The files need to have the file extension 'json'
      +questionnaire.import.mopat.infoText=Regarding files that were exported in MoPat format and will now be imported, please note:
      • The files need to have the file extension 'json'

      For files in MoPat format that contain export templates, one entry is created for each existing configuration per export template contained. You can then manually remove any unused templates. questionnaire.import.odm.infoText=Regarding ODM files, please note:
      • The file needs to have the file extension 'xml'
      • The file needs to be compliant to the ODM v1.3.2 standard
      • Only the first Study element will be considered
      • Within this, only the first MetaDataVersion element will be considered
      • Within this, only the first FormDef element will be considered
      • Additional feedback will follow after the conversion
      questionnaire.import.result.heading=Results of import questionnaire from file questionnaire.import.result.question.noMessages=No messages for this question. +questionnaire.import.uploadType.text=Please select the type of the uploaded file. +questionnaire.import.uploadType.title=Filetype questionnaire.label.containedInBundles=Contained in bundles +questionnaire.label.createdAt=Created At questionnaire.label.deleteLogo=Delete logo questionnaire.label.deleteQuestionnaireNotPossible=Questionnaire can not be deleted because the questionnaire is already answered in a survey. questionnaire.label.description=Description @@ -802,6 +848,9 @@ questionnaire.label.name=Name questionnaire.label.questionLanguages=Question languages questionnaire.label.questionnaire=Questionnaire questionnaire.label.welcomeText=Welcome text +questionnaire.message.enabledBundle=The questionnaire cannot be edited because it is part of an enabled bundle. You can duplicate it instead. +questionnaire.message.executedEncounters=The questionnaire cannot be edited because it has executed encounters. You can duplicate it instead. +questionnaire.message.executedEncountersAndEnabledBundle=The questionnaire cannot be edited because it has executed encounters and is part of an enabled bundle. You can duplicate it instead. questionnaire.questions.none=No questions created questionnaire.questions.reposition.conditionError=Questions could not be repositioned. A condition target was before its trigger. questionnaire.questions.reposition.error=Error! Questions could not be repositioned @@ -809,13 +858,8 @@ questionnaire.questions.reposition.success=Questions successfully repositioned questionnaire.scores.none=There are no scores within this questionnaire questionnaire.validator.finalText.notNull=If the questionnaire contains at least one language with a final text, it has to be set for every language. questionnaire.validator.welcomeText.notNull=If the questionnaire contains at least one language with a welcome text, it has to be set for every language. +questionnaire.warning.cloneConditions=Not all of the conditons could be cloned into the new questionnaire. Please re-check them manually questionnaire.warning.deleteQuestionnaireWithConditions=The questionnaire is associated with at least one condition. The corresponding conditions will also be deleted. Do you want to delete the questionnaire anyway? -REPEATEDLY=Multiple times -ROLE_ADMIN=Administrator -ROLE_EDITOR=Editor -ROLE_ENCOUNTERMANAGER=Encounter Manager -ROLE_MODERATOR=Moderator -ROLE_USER= Standard User score.add.heading.title=Add score for questionnaire score.button.addScore=Add score score.button.edit=Edit @@ -843,9 +887,7 @@ score.label.deleteScoreWithScoresWarning=The removal of the score will also dele score.label.name=Name score.label.numberOfMissingValues=Number of
      missing values   score.label.selectOperator=Select operator -SCORE=Score selectAnswer.validator.labelNotNull=The localized select answer's label is required -SLIDER=Slider sliderAnswer.validator.differenceMaxMinNotDivisibleByStepsize=The difference between max and min values is not divisible without remainder by the step size sliderAnswer.validator.freetextLabelNotNull=The localized text for the freetext label is required sliderAnswer.validator.maxValueNotNull=The answer's max value is required @@ -857,11 +899,10 @@ sliderAnswer.validator.stepsizeBiggerThanDifferenceMaxMin=The answer's step size sliderAnswer.validator.stepsizeLowerEqualZero=The answer's step size was <= 0 sliderAnswer.validator.stepsizeWrongPattern=The answer's step size does not match the required pattern. sliderAnswer.validator.tooManySteps=There are more than 200 steps available. Alternatively you can also use the question type number input. +sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters sliderIcon.validator.missingIconValue=An icon for every field has to be selected, if the feature is enabled. sliderIcon.validator.missingPosition=The icon's position is required. sliderIcon.validator.positionAlreadyInUse=The icon's position of one ore more icons is identical. Please select different values. -STANDARD=Default rounding -START_TIME=Start time statistic.button.calculate=Calculate statistic.button.export=Export statistics statistic.error.countGreaterThanDays=The number of days is greater than the period. @@ -872,6 +913,9 @@ statistic.error.noStatisticsAvailable=There are no statistics available so far. statistic.error.startdateOutOfRange=The start date is not within the predetermined period. statistic.export.name=Statistics statistic.heading.statistic=Statistics +statistic.label.HL7ExportCount=Number of HL7v2 exports (yesterday) +statistic.label.ODMExportCount=Number of ODM exports (yesterday) +statistic.label.ORBISExportCount=Number of ORBIS exports (yesterday) statistic.label.bundleCount=Number of Bundles statistic.label.clinicCount=Number of Clinics statistic.label.completeEncounterDeletedCount=Number of deleted complete encounters @@ -879,11 +923,8 @@ statistic.label.count=Number of days statistic.label.date=Date statistic.label.encounterCount=Number of encounters statistic.label.enddate=End of the period -statistic.label.HL7ExportCount=Number of HL7v2 exports (yesterday) statistic.label.incompleteEncounterCount=Number of incomplete encounters statistic.label.incompleteEncounterDeletedCount=Number of deleted incomplete encounters -statistic.label.ODMExportCount=Number of ODM exports (yesterday) -statistic.label.ORBISExportCount=Number of ORBIS exports (yesterday) statistic.label.period=Statistics are available for the time period from {0} to {1}. statistic.label.questionnaireCount=Number of Questionnaires statistic.label.startdate=Begin of the period @@ -896,10 +937,10 @@ statistic.onetimestatistic.label.encounterCountByCaseNumberInInterval=How many s statistic.onetimestatistic.label.enddate=Enddate: statistic.onetimestatistic.label.patient=Patient: statistic.onetimestatistic.label.startdate=Startdate: -STRING=String sum=Sum of survey.bundle.questionnaires=This bundle contains the following questionnaires survey.bundles.button.gotoCheck=Recheck case number +survey.bundles.button.gotoClinicSelect= Reselect clinic survey.bundles.button.startSurvey=Start survey survey.bundles.label.availableBundles=Available bundles survey.bundles.label.incompleteEncounter=Incomplete bundles @@ -912,6 +953,7 @@ survey.check.barcodereader.switchCamera=Switch camera survey.check.button.admnistration=Administration survey.check.button.generatePseudonym=Generate pseudonym survey.check.button.register=Register case number +survey.check.button.search2=Search patient ID survey.check.button.search=Search case number survey.check.button.showBundles=Show bundles survey.error.date=The specified birthdate doesn't accord to the specified format mm/DD/yyyy. @@ -933,6 +975,7 @@ survey.label.maleShort=m survey.label.notSpecified=Not specified survey.label.off=Off survey.label.on=On +survey.label.pid=Patient ID survey.label.pseudonym=Pseudonym survey.label.pseudonymizationService=Pseudonymization survey.label.questionnaireNavigationLanguage=Language of the navigation during the survey @@ -953,6 +996,11 @@ survey.question.image.button.undo=Undo survey.question.image.flipswitch.black=Black survey.question.image.flipswitch.white=White survey.question.infotext.hint=This text is just for your information. Click on "next Question" in the upper right corner to continue this survey. +survey.questionnaire.ExactAnswer=Choose exactly {min} answers. +survey.questionnaire.MaxAnswer=Choose up to {max} answers. +survey.questionnaire.MaxAnswerEqualsSizeOfAnswers=Choose at least {min} answers. +survey.questionnaire.MinAnswer=Choose at least {min} answers. +survey.questionnaire.MinMaxAnswer=Choose between {min} and {max} answers. survey.questionnaire.button.answerQuestionsMultiple=Answer questions survey.questionnaire.button.answerQuestionsSingle=Answer question survey.questionnaire.button.closeApplication=Close application @@ -968,7 +1016,6 @@ survey.questionnaire.button.returnToQuestionnaire=Return to questionnaire survey.questionnaire.button.startQuestionnaire=Start questionnaire survey.questionnaire.button.startSurvey=Start survey survey.questionnaire.dropDownNoSelect=Please choose -survey.questionnaire.ExactAnswer=Choose exactly {min} answers. survey.questionnaire.label.answeredQuestions={nameQuestionnaire}: Required Questions ({requiredQuestionsComplete}/{requiredQuestions}), Not required questions ({notRequiredQuestionsComplete}/{notRequiredQuestions}) survey.questionnaire.label.answeredQuestionsDescription=Duly completed Questions: survey.questionnaire.label.date.endDate=The maximal permitted date is {endDate}. @@ -998,19 +1045,18 @@ survey.questionnaire.label.required=This answer is required. Do you want to skip survey.questionnaire.label.returnDevice=You have finished the survey. Please return the device. survey.questionnaire.label.skipQuestionFalse=Do not skip question survey.questionnaire.label.skipQuestionTrue=Skip question -survey.questionnaire.MaxAnswer=Choose up to {max} answers. -survey.questionnaire.MaxAnswerEqualsSizeOfAnswers=Choose at least {min} answers. -survey.questionnaire.MinAnswer=Choose at least {min} answers. -survey.questionnaire.MinMaxAnswer=Choose between {min} and {max} answers. survey.title.fontSize=Select a font size survey.title.searchCaseNumber=Search for case number survey.title.selectBundle=Select bundle +survey.title.selectClinic=Select clinic typeMismatch.answers.maxValue=The maximum's value of the slider must be an integer value typeMismatch.answers.minValue=The minimum's value of the slider must be an integer value typeMismatch.answers.value=The score must be an integer value typeMismatch.maxNumberAnswers=The value for maximum number of answers must be an integer value typeMismatch.minNumberAnswers=The value for minimum number of answers must be an integer value -UNIQUELY=Uniquely +update.available=Update Available! +update.click.here=Click here for more information +update.message=A new version ({0}) is available. You are currently on version v{1}. user.button.add=Add User user.button.cancel=Cancel user.button.clinicRights=Edit clinic rights @@ -1025,6 +1071,7 @@ user.button.register=Sign up user.button.remove=Remove user.button.requestPassword=Request password user.button.resetPassword=Reset password +user.button.rights=Edit user rights user.button.save=Save user.button.send=Send user.error.badCredentials=Username and/or password was wrong or the system has send information by e-mail @@ -1037,6 +1084,7 @@ user.error.passwordNotCorrect=The current password was not correct user.error.passwordNotSet=The password should not be empty user.error.passwordSize=The user's password must be between {0} and {1} characters in length user.error.passwordsNotMatching=The given passwords did not match +user.error.pinActivatedButNull=The pin was activated, but has not been set. Please enter a valid pin. user.error.pinNotSecure=The entered pin is not secure. Please do not use the same digit (e.g. 000000) or consecutive numbers (e.g. 123456) user.error.pinTooShort=The entered pin is too short user.error.userDisabled=User is disabled @@ -1049,10 +1097,12 @@ user.heading.editProfile=Edit profile user.heading.editUser=Edit user user.heading.mailToAll=Send an email to all users user.heading.passwordReset=Reset password +user.heading.rights=Edit user rights user.heading.userInvitation=User invitation user.heading.userList=Users user.heading.userRegistration=User registration user.label.activatePin=Activate quick login with a pin +user.label.changePassword=Change the password of user "{0}" user.label.changeUser=Login with another account user.label.domainUser= Are you user of the domain "{0}"? user.label.email=E-mail @@ -1070,27 +1120,38 @@ user.label.newPasswordApprove=Enter new password again user.label.no=No user.label.oldPassword=Current password user.label.password=Password +user.label.pin.moreInfo=This function allows you to quickly log back in to MoPat. After activating the pin, you can quickly start a new survey. It is not necessary to log in again.
      Security note: If the pin is entered incorrectly three times, an account is automatically logged out. Otherwise, this function remains active until midnight unless you log out manually. +user.label.pin.requirements.length=The pin has to be at least 6 digits long +user.label.pin.requirements.sequence=A numerical sequence (123456) is not allowed +user.label.pin.requirements.uniqueness=The pin must consist of different digits +user.label.pin.requirements=Please make sure your pin meets the following requirements: user.label.pin=Pin user.label.preview=Preview user.label.role=Role user.label.status=Status user.label.subject=Subject +user.label.togglePassword=Click to show/hide password user.label.unlock=Unlock user.label.username=Username user.label.usertype=Usertype user.label.yes=Yes +user.list.userDeleteError=You tried to deactivate your own account. This is not allowed. If you want to deactivate this account, please log in to another admin account and try again. user.status.disabled=Disabled user.status.enabled=Enabled user.success.changed=The user has been saved user.success.forgotPassword=Information concerning your password reset request was sent to you by e-mail -user.table.noMoreClinics=There are no more clinics available user.table.UserClinicsEmpty=No clinics assigned +user.table.noMoreClinics=There are no more clinics available user.type.ldap=LDAP/AD user.type.local=Local value=Value -VALUE=Value valueOf=Value of question valueOfScore=Value of score -WEEKLY=Weekly (every 7 days) -configuration.label.FHIRViaHL7v2Host=The text is longer than 255 characters -sliderAnswer.validator.localizedMinMaxText=The text is longer than 255 characters \ No newline at end of file +questionnaire.download.mopatComplete=MoPat with Export Templates +configuration.label.exportFHIRViaHL7v2=Send FHIR export via HL7 communication server. +configuration.label.FHIRViaHL7v2Host=Send FHIR export via HL7 communication server. +configuration.label.FHIRViaHL7v2Port=Port of the HL7 communication server for FHIR export. +configuration.label.FHIRViaHL7v2SendingFacility= +configuration.description.exportFHIRViaHL7v2=For FHIR, export can be set up using an HL7v2 communication server. In this case, the FHIR resource is embedded as a blob in the HL7 message. +encounter.error.caseNumberInvalid=The case number was invalid. Please try again! +survey.questionnaire.button.completeQuestionnaireInBundle=Complete the survey section \ No newline at end of file From 0e56eb688e28f276a8e5d87d1e965f1d62c79c97 Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:17:58 +0200 Subject: [PATCH 08/16] Added demo flag to properties --- src/main/resources/mopat.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/mopat.properties b/src/main/resources/mopat.properties index 14d52639..07f980cc 100644 --- a/src/main/resources/mopat.properties +++ b/src/main/resources/mopat.properties @@ -18,4 +18,5 @@ de.imi.mopat.datasource.mopat_userDataSource.jdbc-url=${MYSQL_MOPAT_USER_URL:jdb de.imi.mopat.datasource.mopat_auditDataSource.jdbc-url=${MYSQL_MOPAT_AUDIT_URL:jdbc:mysql://localhost:3306/moPat_audit?autoReconnect=true&useUnicode=true&useEncoding=true&characterEncoding=UTF-8} de.imi.mopat.passwordPepper=${PEPPER:AdP5ktlaIVaon53yJg8zEZSnFr33Dinil69ZtZMTWXubKMUEpfyNvOgWLdwNLhedY3WT5TVcqgg} de.imi.mopat.config.name=config.properties -de.imi.mopat.config.path=/etc/mopat/ \ No newline at end of file +de.imi.mopat.config.path=/etc/mopat/ +de.imi.mopat.isDemoInstance=false \ No newline at end of file From 6d3ac2f8835746d8c18cdaaee5366be6ec6224cf Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:18:06 +0200 Subject: [PATCH 09/16] Added demo flag to root controller --- .../imi/mopat/controller/RootController.java | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/imi/mopat/controller/RootController.java b/src/main/java/de/imi/mopat/controller/RootController.java index 5aeb390c..c3b19a12 100644 --- a/src/main/java/de/imi/mopat/controller/RootController.java +++ b/src/main/java/de/imi/mopat/controller/RootController.java @@ -5,6 +5,7 @@ import jakarta.servlet.ServletContext; import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.InitBinder; @@ -36,7 +37,11 @@ public class RootController { @Autowired private ServletContext context; - + + @Value("${de.imi.mopat.isDemoInstance:false}") + private boolean isDemoInstance; + + /** * Globally set Form limit to more than 256 * @param binder @@ -126,33 +131,71 @@ public LocaleHelper localeHelper() { return localeHelper; } + /** + * Adds context path for request to frontend + * @param request to process + * @return context path + */ @ModelAttribute("contextPath") public String getRequestContextPath(HttpServletRequest request) { return request.getContextPath(); } + /** + * Adds query string for request to frontend + * @param request to process + * @return query string for request + */ @ModelAttribute("queryString") public String getQueryString(HttpServletRequest request) { return request.getQueryString(); } + /** + * Adds request URL to frontend + * @param request to add url for + * @return URL for request + */ @ModelAttribute("requestURL") public String getRequestURL(HttpServletRequest request) { return request.getRequestURL().toString(); } + /** + * Adds the real path for the application to frontend + * @return real path + */ @ModelAttribute("realPath") public String getRealPath() { return this.context.getRealPath(""); } + /** + * Adds requestURI to frontend + * @param request to process + * @return URI for request + */ @ModelAttribute("requestURI") public String getRequestURI(HttpServletRequest request) { return request.getRequestURI(); } + /** + * Adds servlet path to frontend + * @param request to process this for + * @return servlet path + */ @ModelAttribute("servletPath") public String getServletPath(HttpServletRequest request) { return request.getServletPath(); } + + /** + * Adds a flag for the demo instance of MoPat + * @return true if instance should run in demo mode + */ + @ModelAttribute("isDemoInstance") + public boolean isDemoInstance() { + return isDemoInstance; + } } From 9f025c298ba63216f0a000a99f16b30f4d1a2650 Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:18:18 +0200 Subject: [PATCH 10/16] Added disabled class --- src/main/resources/less/mobile/survey.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/less/mobile/survey.less b/src/main/resources/less/mobile/survey.less index bf3e456a..bdd3af4b 100644 --- a/src/main/resources/less/mobile/survey.less +++ b/src/main/resources/less/mobile/survey.less @@ -239,7 +239,7 @@ select.btn-lowEmphasis { } } - &:disabled { + &:disabled, &.disabled { background-color: @color-gray-lighter-darker !important; color: @color-gray !important; box-shadow: none !important; From a25cafd0eb778e2fbbda6df015ac0e7bf48c4eee Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:19:03 +0200 Subject: [PATCH 11/16] Added demo messages --- .../resources/message/messages.properties | 1 + .../message/messages_de_DE.properties | 25 +++++++++++-------- .../message/messages_en_GB.properties | 1 + .../message/messages_es_ES.properties | 1 + 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/resources/message/messages.properties b/src/main/resources/message/messages.properties index 77361b44..ae8b09f8 100644 --- a/src/main/resources/message/messages.properties +++ b/src/main/resources/message/messages.properties @@ -1147,6 +1147,7 @@ user.type.local=Local value=Value valueOf=Value of question valueOfScore=Value of score +login.demo.infoText=Welcome to MoPat Demo! This is a test installation with unrestricted access to the application. You can try out all the functions of MoPat here. If you need help, you can consult our manual, which contains detailed information on all functions.
      Please note: The data is reset regularly. Questionnaires and surveys you have created will be deleted and there is no way to restore them. Use this system for testing only. If you require further information, please contact us: mopat@uni-muenster.de questionnaire.download.mopatComplete=MoPat with Export Templates configuration.label.exportFHIRViaHL7v2=Send FHIR export via HL7 communication server. configuration.label.FHIRViaHL7v2Host=Send FHIR export via HL7 communication server. diff --git a/src/main/resources/message/messages_de_DE.properties b/src/main/resources/message/messages_de_DE.properties index 44b383cc..6274aaea 100644 --- a/src/main/resources/message/messages_de_DE.properties +++ b/src/main/resources/message/messages_de_DE.properties @@ -137,8 +137,8 @@ bundle.button.add=Fragebogenpaket hinzuf\u00fcgen bundle.button.edit=Editieren bundle.button.lock=Sperren bundle.button.publish=Freigeben -bundle.button.testExport=Zugewiesene Exporte testen bundle.button.remove=L\u00f6schen +bundle.button.testExport=Zugewiesene Exporte testen bundle.error.deleteNotPossible=Das Fragebogenpaket {0} kann nicht gel\u00f6scht werden, da mindestens eine Befragung mit diesem Fragebogenpaket durchgef\u00fchrt wurde. bundle.error.deletePossible=Das Fragebogenpaket {0} wurde gel\u00f6scht. bundle.error.firstQuestionnaireNotActive=Der erste Fragebogen dieses Pakets muss aktiviert sein. @@ -267,7 +267,9 @@ configuration.alert.uploadImagePath=WARNUNG: Wenn Sie den Pfad \u00e4ndern, sind configuration.button.add=Hinzuf\u00fcgen configuration.button.remove=Entfernen configuration.description.baseUrl=Dies ist die Base-URL einschlie\u00dflich des Kontextpfades der Anwendung. +configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. configuration.description.exportPath=Hierhin werden die beantworteten Frageb\u00f6gen exportiert. Der angegenbene Pfad muss ein Verzeichnis sein und deshalb mit einem Slash enden. +configuration.description.fileDeletionTimeWindowInMillis=Alle von MoPat exportierten Dateien, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 30 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.finishedEncounterMailaddressTimeWindowInMillis=Alle E-Mail Adressen von abgeschlossenen Befragungen, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 30 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.finishedEncounterScheduledTimeWindowInMillis=Alle abgeschlossenen Befragungsserien, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 90 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. configuration.description.finishedEncounterTimeWindowInMillis=Alle abgeschlossenen Befragungen, die \u00e4lter als das angegebene Zeitfenster sind, werden gel\u00f6scht (Standard: 30 Tage). Bei der Angabe von -1 wird das L\u00f6schen deaktiviert. @@ -283,6 +285,8 @@ configuration.error.wrongValidationSchemaType=Das Dateiformat entspricht nicht d configuration.file.notUploaded=Keine Datei hochgeladen configuration.file.path=Pfad der hochgeladenen Datei configuration.file.uploaded=Datei hochgeladen +configuration.label.FHIRViaHL7v2Host=Host des HL7 Kommunikationsservers f\u00fcr den FHIR Export. +configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr den FHIR Export. configuration.label.FHIRsystemURI=System URI f\u00fcr FHIR Export configuration.label.HL7v22PatientInformationRetrieverHostname=Host f\u00fcr den HL7v22PatientInformationRetriever configuration.label.HL7v22PatientInformationRetrieverPort=Port f\u00fcr den HL7v22PatientInformationRetriever @@ -305,6 +309,7 @@ configuration.label.caseNumberType=Typ der Fallnummer bei Fallnummerneingabe configuration.label.defaultLanguage=Standardsprache f\u00fcr die Anwendung configuration.label.enableGlobalPinAuth=Die Verwendung eines Pins erlauben, um Nutzern eine schnelle Anwendung zu ermöglichen. configuration.label.encounter.checkTimeActivated=Abgeschlossene Befragungen nach einer vorgegebenden Zeit l\u00f6schen +configuration.label.encounter.fileDeletionTimeWindowInMillis=Zeit nach der erstellte Dateien gel\u00f6scht werden (in ms) configuration.label.encounter.finishedEncounterMailaddressTimeWindowInMillis=Zeit, nach der die E-Mail Adressen der Patienten nach abgeschlossenen Befragungen gel\u00f6scht werden (in ms) configuration.label.encounter.finishedEncounterScheduledTimeWindowInMillis=Zeit, nach der abgeschlossene Befragungsserien gel\u00f6scht werden (in ms) configuration.label.encounter.finishedEncounterTimeWindowInMillis=Zeit, nach der abgeschlossene Befragungen gel\u00f6scht werden (in ms) @@ -315,6 +320,7 @@ configuration.label.exportFHIRInDirectory=Dateibasierten FHIR-Export nutzen. configuration.label.exportFHIRPath=Exportpfad f\u00fcr den dateibasierten FHIR-Export. Bitte geben Sie den absoluten Pfad (nicht den relativen Pfad) an. configuration.label.exportFHIRUrl=URL der REST-Schnittstelle f\u00fcr den FHIR-Export. configuration.label.exportFHIRViaCommunicationServer=FHIR-Export an REST Schnittstelle senden. +configuration.label.exportFHIRViaHL7v2=FHIR Export via HL7 Kommunikationsserver senden. configuration.label.exportHL7ClientPKCSPassword=Password f\u00fcr den privaten Schl\u00fcssel des Clients (der in der angegebenen Datei enthalten ist). configuration.label.exportHL7ClientPKCSPath=Client PKCS 12 Archiv (.p12 Datei), das den Client authorisiert und die Nachricht verschl\u00fcsselt. Bitte laden Sie ein valides PKCS Archiv hoch. configuration.label.exportHL7Host=Host des HL7 Kommunikationsservers. @@ -401,6 +407,7 @@ dateAnswer.validator.startLaterThanEnd=Das fr\u00fcheste Datum ist sp\u00e4ter a editor.welcome=Willkommen zur Mobilen Patientenbefragung (MoPat)!

      Dies ist die Administrationsoberfl\u00e4che von MoPat.
      Sie k\u00f6nnen von dieser Oberfl\u00e4che ausMoPat ist eine Entwicklung des Instituts f\u00fcr Medizinische Informatik, M\u00fcnster, unter Leitung von Univ.-Prof. Dr. rer. nat. Dominik Heider.
      Sie erreichen uns unter {1} oder {2}. encounter.button.encounterName=Name encounter.button.export=Exportieren +encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! encounter.error.caseNumberIsEmpty=Die Fallnummer darf nicht nur aus Leerzeichen bestehen. encounter.export.auto=Automatisch exportiert encounter.export.conflict=Konflikt @@ -699,10 +706,10 @@ maximum=Maximum von minimum=Minimum von modal.delete.cancel=Abbrechen modal.delete.confirm=L\u00f6schen -modal.delete.question.clinic=Sind Sie sicher, dass Sie die Klinik "{0}" l\u00f6schen m\u00f6chten? -modal.delete.question.questionnaire=Sind Sie sicher, dass Sie den Fragebogen "{0}" l\u00f6schen m\u00f6chten? modal.delete.question.bundle=Sind Sie sicher, dass Sie das Fragebogenpaket "{0}" l\u00f6schen m\u00f6chten? +modal.delete.question.clinic=Sind Sie sicher, dass Sie die Klinik "{0}" l\u00f6schen m\u00f6chten? modal.delete.question.question=Sind Sie sicher, dass Sie Frage {0} l\u00f6schen m\u00f6chten? +modal.delete.question.questionnaire=Sind Sie sicher, dass Sie den Fragebogen "{0}" l\u00f6schen m\u00f6chten? modal.delete.title=Best\u00e4tigung der L\u00f6schung modal.delete.warning=Diese Aktion kann nicht r\u00fcckg\u00e4ngig gemacht werden. numberInputAnswer.validator.differenceMaxMinNotDivisibleByStepsize=Der Abstand zwischen Minimum und Maximum ist nicht restlos durch die Schrittgr\u00f6\u00dfe teilbar @@ -815,6 +822,7 @@ questionnaire.button.remove=L\u00f6schen questionnaire.button.saveAndEdit=Speichern und Fragen bearbeiten questionnaire.button.showExportTemplates=Export-Templates bearbeiten questionnaire.displayName.notNull=Der Fragebogen ben\u00f6tigt einen lokalisierten Anzeigenamen +questionnaire.download.mopatComplete=MoPat mit Export-Templates questionnaire.error.deleteQuestionnaireNotPossible=Der Fragebogen {0} kann nicht gel\u00f6scht werden, da der Fragebogen w\u00e4hrend einer Befragung bereits beantwortet wurde. questionnaire.error.deleteQuestionnairePossible=Der Fragebogen {0} wurde gel\u00f6scht. questionnaire.error.editLastCondition=Dies ist die letzte Frage dieses Fragebogens. Daher k\u00f6nnen f\u00fcr diese Frage keine Bedingungen festgelegt werden. @@ -1005,6 +1013,7 @@ survey.questionnaire.MinMaxAnswer=Geben Sie zwischen {min} und {max} Antworten. survey.questionnaire.button.answerQuestionsMultiple=Fragen beantworten survey.questionnaire.button.answerQuestionsSingle=Frage beantworten survey.questionnaire.button.closeApplication=Anwendung beenden +survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes survey.questionnaire.button.completenessCheck=Vollst\u00e4ndigkeitspr\u00fcfung survey.questionnaire.button.completenessCheckTitlePartMultiple=Der Fragebogen enth\u00e4lt {numberQuestions} nicht vollst\u00e4ndig beantwortete Fragen. Wollen Sie diese nachtr\u00e4glich beantworten? survey.questionnaire.button.completenessCheckTitlePartSingle=Der Fragebogen enth\u00e4lt eine nicht vollst\u00e4ndig beantwortete Frage. Wollen Sie diese nachtr\u00e4glich beantworten? @@ -1148,11 +1157,5 @@ user.type.local=Lokal value=Wert valueOf=Wert der Frage valueOfScore=Wert des Scores -questionnaire.download.mopatComplete=MoPat mit Export-Templates -configuration.label.exportFHIRViaHL7v2=FHIR Export via HL7 Kommunikationsserver senden. -configuration.label.FHIRViaHL7v2Host=Host des HL7 Kommunikationsservers f\u00fcr den FHIR Export. -configuration.label.FHIRViaHL7v2Port=Port des HL7 Kommunikationsservers f\u00fcr den FHIR Export. -configuration.description.exportFHIRViaHL7v2=F\u00fcr FHIR kann der Export mittels eines HL7v2 Kommunikationsservers eingerichtet werden. In dem Fall wird die FHIR Ressource als Blob in die HL7 Nachricht eingebettet. -encounter.error.caseNumberInvalid=Die Fallnummer ist nicht g\u00FCltig. Bitte versuchen Sie es erneut! -survey.questionnaire.button.completeQuestionnaireInBundle=Abschluss des Befragungsabschnittes -sliderAnswer.validator.localizedMinMaxText=Der eingegebene Text hat mehr als 255 Zeichen. \ No newline at end of file +sliderAnswer.validator.localizedMinMaxText=Der eingegebene Text hat mehr als 255 Zeichen. +login.demo.infoText=Willkommen zu MoPat Demo!
      Dies ist eine Testinstallation mit uneingeschr\u00e4nktem Zugriff zur Anwendung. Sie k\u00f6nnen hier alle Funktionen von MoPat ausprobieren. Ben\u00f6tigen Sie Hilfe, k\u00f6nnen Sie unser Handbuch zurate ziehen, in welchem sich ausf\u00fchrliche Informationen zu allen Funktionen finden lassen.
      Achtung: Die Daten werden regelm\u00e4\u00dfig zur\u00fcckgesetzt. Von Ihnen angelegte Frageb\u00f6gen und Befragungen werden demnach gel\u00f6scht und es gibt keine M\u00f6glichkeit diese wiederherzustellen. Nutzen Sie dieses System ausschlie\u00dflich f\u00fcr Tests.
      Ben\u00f6tigen Sie weitere Informationen, kontaktieren Sie uns: mopat@uni-muenster.de \ No newline at end of file diff --git a/src/main/resources/message/messages_en_GB.properties b/src/main/resources/message/messages_en_GB.properties index 77361b44..ae8b09f8 100644 --- a/src/main/resources/message/messages_en_GB.properties +++ b/src/main/resources/message/messages_en_GB.properties @@ -1147,6 +1147,7 @@ user.type.local=Local value=Value valueOf=Value of question valueOfScore=Value of score +login.demo.infoText=Welcome to MoPat Demo! This is a test installation with unrestricted access to the application. You can try out all the functions of MoPat here. If you need help, you can consult our manual, which contains detailed information on all functions.
      Please note: The data is reset regularly. Questionnaires and surveys you have created will be deleted and there is no way to restore them. Use this system for testing only. If you require further information, please contact us: mopat@uni-muenster.de questionnaire.download.mopatComplete=MoPat with Export Templates configuration.label.exportFHIRViaHL7v2=Send FHIR export via HL7 communication server. configuration.label.FHIRViaHL7v2Host=Send FHIR export via HL7 communication server. diff --git a/src/main/resources/message/messages_es_ES.properties b/src/main/resources/message/messages_es_ES.properties index c6d6dd08..eb4fb911 100644 --- a/src/main/resources/message/messages_es_ES.properties +++ b/src/main/resources/message/messages_es_ES.properties @@ -1009,6 +1009,7 @@ user.type.local=Local value=Valor valueOf=Valor de la pregunta valueOfScore=Puntuaci\u00f3n +login.demo.infoText=\u00a1Bienvenido a la demo de MoPat!
      Esta es una instalaci\u00f3n de prueba con acceso sin restricciones a la aplicaci\u00f3n. Aqu\u00ed puede probar todas las funciones de MoPat. Si necesita ayuda, puede consultar nuestro manual, en el que encontrar\u00e1 informaci\u00f3n detallada sobre todas las funciones.
      Atenci\u00f3n: Los datos se restablecen peri\u00f3dicamente. Por lo tanto, los cuestionarios y encuestas que cree se eliminar\u00e1n y no habr\u00e1 posibilidad de restaurarlos. Utilice este sistema exclusivamente para pruebas.
      Si necesita m\u00e1s informaci\u00f3n, cont\u00e1ctenos: mopat@uni-muenster.de configuration.label.FHIRViaHL7v2Host=Host del servidor de comunicaciones HL7 para la exportaci\u00f3n FHIR. configuration.label.exportFHIRViaHL7v2=Enviar exportaci\u00f3n FHIR a trav\u00e9s del servidor de comunicaciones HL7. configuration.label.FHIRViaHL7v2Port=Puerto del servidor de comunicaciones HL7 para la exportaci\u00f3n FHIR. From 697d6df6df40d9e5943e82ff7824ca01f8200964 Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:19:25 +0200 Subject: [PATCH 12/16] Made login page pre-populated with demo flag --- .../webapp/WEB-INF/mobile/user/login.html | 271 +++++++++++------- 1 file changed, 163 insertions(+), 108 deletions(-) diff --git a/src/main/webapp/WEB-INF/mobile/user/login.html b/src/main/webapp/WEB-INF/mobile/user/login.html index b1a1effa..11c29d05 100644 --- a/src/main/webapp/WEB-INF/mobile/user/login.html +++ b/src/main/webapp/WEB-INF/mobile/user/login.html @@ -4,124 +4,179 @@ - -
      - -
      - +
      - + if (passwordField.attr("type") === "password") { + passwordField.attr("type", "text"); + passwordToggleIcon.attr("class", "bi bi-eye-slash"); + } else { + passwordField.attr("type", "password"); + passwordToggleIcon.attr("class", "bi bi-eye"); + } + }); + } + }); + From 9d4c7c2609c8614abe42ad4569c5347584e159f0 Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:19:35 +0200 Subject: [PATCH 13/16] Made configuration page empty with demo flag --- src/main/webapp/WEB-INF/configuration/edit.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/WEB-INF/configuration/edit.html b/src/main/webapp/WEB-INF/configuration/edit.html index 49a41435..7051ce6d 100644 --- a/src/main/webapp/WEB-INF/configuration/edit.html +++ b/src/main/webapp/WEB-INF/configuration/edit.html @@ -8,7 +8,9 @@ th:with="title=#{admin.navigation.configuration}" > -
      +
      Date: Wed, 27 May 2026 17:19:57 +0200 Subject: [PATCH 14/16] Hide password inputs with demo flag --- src/main/webapp/WEB-INF/mobile/user/edit.html | 533 +++++++++--------- src/main/webapp/WEB-INF/user/edit.html | 282 +++++---- 2 files changed, 401 insertions(+), 414 deletions(-) diff --git a/src/main/webapp/WEB-INF/mobile/user/edit.html b/src/main/webapp/WEB-INF/mobile/user/edit.html index c2e227a7..42757e90 100644 --- a/src/main/webapp/WEB-INF/mobile/user/edit.html +++ b/src/main/webapp/WEB-INF/mobile/user/edit.html @@ -2,317 +2,310 @@ * View for MoPats mobile user view. The user can adjust information here */--> - - -

      - - -
      - + +

      + + +
      + -
      -
      - + -
      -
      - + + /> +
      + + +
      +
      +
      + +
      -
      - - +
      +
      +
      + +
      -
      -
      -
      - -
      + +
      +
      -
      -
      -
      - -
      +
      + + +
      +
      +
      +
      + + - -
      -
      +
      + -
      - - -
      -
      -
      -
      - - - -
      - - -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      -
      -
      -
      -
      -
      +
        +
      • + +
      • +
      • + +
      • +
      • + +
      • +
      +
      + +
      +
      +
      - - -
      - +
      -
      -
      - +
      + - -
      -
      - +
      +
      + - -
      -
      - +
      +
      + - -
      -
      - -
      - - -
      - - + /> + +
      +
      + + +
      + + +
      + + - + if (first + 1 !== second && first - 1 !== second) { + return false; + } + } + return true; + } + diff --git a/src/main/webapp/WEB-INF/user/edit.html b/src/main/webapp/WEB-INF/user/edit.html index e6315319..41c49404 100644 --- a/src/main/webapp/WEB-INF/user/edit.html +++ b/src/main/webapp/WEB-INF/user/edit.html @@ -2,181 +2,175 @@ * View to edit an existing user */--> - -
      -
      - -
      -
      - + +
      + + +
      +
      + -
      - + -
      -
      - + -
      -
      - + -
      -
      - +
      -
      -
      - +
      + - -
      -
      - +
      +
      + - -
      -
      - +
      +
      + + +
      +
      + + - /> - -
      -
      -
      - - -
      -
      -
      - - - + function togglePasswordVisibility() { + if ($("#passwordContainer").hasClass("d-none")) { + $("#passwordContainer").removeClass("d-none"); + } else { + $("#passwordContainer").addClass("d-none"); + } + } + +
      From 2487d590f50bed5510c74f934d0f21640a34620d Mon Sep 17 00:00:00 2001 From: Yannik Warnecke Date: Wed, 27 May 2026 17:20:08 +0200 Subject: [PATCH 15/16] Hide configuration page from navigation with demo flag --- src/main/webapp/WEB-INF/navigation/admin.html | 4 +++- src/main/webapp/WEB-INF/navigation/mobileAdmin.html | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/WEB-INF/navigation/admin.html b/src/main/webapp/WEB-INF/navigation/admin.html index 7af008d9..969349f7 100644 --- a/src/main/webapp/WEB-INF/navigation/admin.html +++ b/src/main/webapp/WEB-INF/navigation/admin.html @@ -211,7 +211,9 @@
    -