From c5106fc7f998c434ccc90c23ce8d13b136e8996f Mon Sep 17 00:00:00 2001 From: Karnaiah Pesula Date: Fri, 19 Jun 2026 14:02:40 +0200 Subject: [PATCH 1/4] Malaria and Dengue DD and lab message processing fixes --- .../labmessage/TestReportDto.java | 10 +++ .../processing/ExternalMessageMapper.java | 10 ++- .../de/symeda/sormas/api/i18n/Captions.java | 1 + .../sormas/api/sample/PathogenTestType.java | 89 ++++++++++++++----- .../sormas/api/sample/SampleMaterial.java | 9 +- .../src/main/resources/captions.properties | 1 + sormas-api/src/main/resources/enum.properties | 6 +- .../labmessage/TestReport.java | 10 +++ .../labmessage/TestReportFacadeEjb.java | 2 + .../src/main/resources/sql/sormas_schema.sql | 7 ++ .../symeda/sormas/ui/epidata/EpiDataForm.java | 7 +- .../sormas/ui/exposure/ExposureForm.java | 5 +- 12 files changed, 125 insertions(+), 32 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/labmessage/TestReportDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/labmessage/TestReportDto.java index 5a756b859d8..1114a856507 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/labmessage/TestReportDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/labmessage/TestReportDto.java @@ -219,6 +219,7 @@ public class TestReportDto extends EntityDto { private String serotypeText; private PathogenTestCategory pathogenTestCategory; + private boolean fourFoldIncreaseAntibodyTiter; public SampleReportReferenceDto getSampleReport() { return sampleReport; @@ -922,4 +923,13 @@ public PathogenTestCategory getPathogenTestCategory() { public void setPathogenTestCategory(PathogenTestCategory pathogenTestCategory) { this.pathogenTestCategory = pathogenTestCategory; } + + public boolean getFourFoldIncreaseAntibodyTiter() { + return fourFoldIncreaseAntibodyTiter; + } + + public void setFourFoldIncreaseAntibodyTiter(boolean fourFoldIncreaseAntibodyTiter) { + this.fourFoldIncreaseAntibodyTiter = fourFoldIncreaseAntibodyTiter; + } + } diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java index a37b8dd134a..3a647b30057 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java @@ -988,7 +988,15 @@ public List mapToPathogenTest(TestReportDto sourceTestReport, Pathogen pathogenTest.getDrugSusceptibility().getErythromycinSusceptibility(), sourceTestReport.getErythromycinSusceptibility(), PathogenTestDto.DRUG_SUSCEPTIBILITY, - DrugSusceptibilityDto.ERYTHROMYCIN_SUSCEPTIBILITY)))); + DrugSusceptibilityDto.ERYTHROMYCIN_SUSCEPTIBILITY), + + Mapping.of( + pathogenTest::setFourFoldIncreaseAntibodyTiter, + pathogenTest.isFourFoldIncreaseAntibodyTiter(), + sourceTestReport.getFourFoldIncreaseAntibodyTiter(), + PathogenTestDto.FOUR_FOLD_INCREASE_ANTIBODY_TITER)) + + )); } changedFields.addAll( diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java index 2bae8d48046..f82e7571664 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java @@ -1645,6 +1645,7 @@ public interface Captions { String EpiData_clusterTypeText = "EpiData.clusterTypeText"; String EpiData_contactWithSourceCaseKnown = "EpiData.contactWithSourceCaseKnown"; String EpiData_country = "EpiData.country"; + String EpiData_country_SHIG = "EpiData.country.SHIG"; String EpiData_exposureDetailsKnown = "EpiData.exposureDetailsKnown"; String EpiData_exposureInvestigationFromDate = "EpiData.exposureInvestigationFromDate"; String EpiData_exposureInvestigationToDate = "EpiData.exposureInvestigationToDate"; diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java index fb6fa5b1080..fc4b109182c 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java @@ -211,13 +211,15 @@ public enum PathogenTestType { Q_PCR, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) MULTIPLEX_PCR, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -231,7 +233,8 @@ public enum PathogenTestType { LAMP, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) NASBA, @@ -252,19 +255,22 @@ public enum PathogenTestType { TMA, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) CRISPR_DIAGNOSTICS, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel(ResultValueType.BOOLEAN) LINE_PROBE_ASSAY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MOLECULAR_ASSAYS) @ResultValueTypeRel(ResultValueType.TEXT) SANGER_SEQUENCING, @@ -390,7 +396,23 @@ public enum PathogenTestType { ENZYME_LINKED_IMMUNOSORBENT_ASSAY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.DENGUE }) + @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) + @ResultValueTypeRel({ + ResultValueType.QUALITATIVE, + ResultValueType.NUMERIC }) + IGG_ELISA, + @Diseases(value = { + Disease.DENGUE }) + @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) + @ResultValueTypeRel({ + ResultValueType.QUALITATIVE, + ResultValueType.NUMERIC }) + IGM_ELISA, + + @Diseases(value = { + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel({ ResultValueType.TEXT, @@ -431,7 +453,8 @@ public enum PathogenTestType { DIRECT_FLUORESCENT_ANTIBODY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) RAPID_ANTIBODY_TEST, @@ -441,7 +464,8 @@ public enum PathogenTestType { // ---------------------------------------------------------------------------------------------- @Diseases(value = { - Disease.RESPIRATORY_SYNCYTIAL_VIRUS }) + Disease.RESPIRATORY_SYNCYTIAL_VIRUS, + Disease.DENGUE }) @PathogenTestCategoryRel(PathogenTestCategory.ANTIGEN_DETECTION) @ResultValueTypeRel(ResultValueType.QUALITATIVE) RAPID_ANTIGEN_DETECTION, @@ -453,13 +477,15 @@ public enum PathogenTestType { RAPID_TEST, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.ANTIGEN_DETECTION) @ResultValueTypeRel(ResultValueType.QUALITATIVE) LATERAL_FLOW_ASSAY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.ANTIGEN_DETECTION) @ResultValueTypeRel(ResultValueType.QUALITATIVE) IMMUNOFLUORESCENCE_ASSAY, @@ -472,13 +498,15 @@ public enum PathogenTestType { SLIDE_AGGLUTINATION, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.ANTIGEN_DETECTION) @ResultValueTypeRel(ResultValueType.QUALITATIVE) QUELLUNG_REACTION, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.ANTIGEN_DETECTION) @ResultValueTypeRel(ResultValueType.TEXT) HEMAGGLUTINATION_INHIBITION, @@ -497,6 +525,8 @@ public enum PathogenTestType { @ResultValueTypeRel({ ResultValueType.TEXT, ResultValueType.NUMERIC }) + @Diseases(value = { + Disease.DENGUE }, hide = true) BACTERIAL_CULTURE, @Diseases(value = { @@ -506,13 +536,15 @@ public enum PathogenTestType { VIRAL_ISOLATION, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.CULTURE_AND_ISOLATION) @ResultValueTypeRel(ResultValueType.TEXT) FUNGAL_CULTURE, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.CULTURE_AND_ISOLATION) @ResultValueTypeRel(ResultValueType.TEXT) MALDI_TOF, @@ -536,19 +568,22 @@ public enum PathogenTestType { GRAM_STAIN, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.SMEAR_GRADE) ACID_FAST_STAIN, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) DARK_FIELD_MICROSCOPY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -571,7 +606,8 @@ public enum PathogenTestType { HISTOPATHOLOGY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -579,19 +615,22 @@ public enum PathogenTestType { FISH, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) IMMUNOHISTOCHEMISTRY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) ELECTRON_MICROSCOPY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -629,7 +668,8 @@ public enum PathogenTestType { ANTIBIOTIC_SUSCEPTIBILITY, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.ANTIMICROBIAL_SUSCEPTIBILITY_TESTING) @ResultValueTypeRel(ResultValueType.BOOLEAN) GENOTYPIC_RESISTANCE_TEST, @@ -655,7 +695,8 @@ public enum PathogenTestType { @PathogenTestCategoryRel(PathogenTestCategory.FUNCTIONAL_IMMUNE_ASSAYS) @ResultValueTypeRel(ResultValueType.NUMERIC) @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) FLOW_CYTOMETRY, // ---------------------------------------------------------------------------------------------- diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleMaterial.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleMaterial.java index 2be6cbf09d6..1c457af1678 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleMaterial.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleMaterial.java @@ -460,11 +460,13 @@ public enum SampleMaterial { ABSCESS_SWAB, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) BONE, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) BONE_MARROW, @HideForCountries(countries = { @@ -492,7 +494,8 @@ public enum SampleMaterial { CORD_BLOOD, @Diseases(value = { - Disease.SHIGELLOSIS }, hide = true) + Disease.SHIGELLOSIS, + Disease.DENGUE }, hide = true) LUNG_TISSUE, @HideForCountries(countries = { diff --git a/sormas-api/src/main/resources/captions.properties b/sormas-api/src/main/resources/captions.properties index c0f56544f38..2644479eddc 100644 --- a/sormas-api/src/main/resources/captions.properties +++ b/sormas-api/src/main/resources/captions.properties @@ -1182,6 +1182,7 @@ EpiData.infectionSource= Suspected vehicle or source of infection EpiData.infectionSourceText= Specify source of infection EpiData.importedCase= Imported Case EpiData.country= Country of contamination +EpiData.country.SHIG= Place of residence of patient at the time of disease onset EpiData.otherDetails= General comment EpiData.airportWorker=Working at an airport EpiData.healthcareProfessional=Working as a healthcare professional diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties index 69254948dc7..a67adb3016e 100644 --- a/sormas-api/src/main/resources/enum.properties +++ b/sormas-api/src/main/resources/enum.properties @@ -1310,6 +1310,8 @@ PathogenTestType.FLOW_CYTOMETRY = Flow Cytometry PathogenTestType.OTHER_ANTIGEN_DETECTION_TEST = Other antigen detection test PathogenTestType.OTHER_MOLECULAR_ASSAY = Other molecular assay PathogenTestType.OTHER_SEROLOGICAL_TEST = Other serological test +PathogenTestType.IGG_ELISA=IgG ELISA +PathogenTestType.IGM_ELISA=IgM ELISA PCRTestSpecification.VARIANT_SPECIFIC = Variant specific PCRTestSpecification.N501Y_MUTATION_DETECTION = N501Y mutation detection @@ -3162,8 +3164,8 @@ ExposureSubSetting.HEALTHCARE_SETTINGS=Healthcare settings ExposureSubSetting.TEMPORARY_SHELTERS=Temporary shelters ExposureSubSetting.CROWDED_OUTDOOR_LIMITED_AIRFLOW=Crowded outdoor areas with limited airflow ExposureSubSetting.CLOSE_PHYSICAL_CONTACT=Close physical contact -ExposureSubSetting.HIGH_TOUCH_ENVIRONMENTS=High-touch environments (e.g. childcare centers, healthcare facilities) -ExposureSubSetting.SEXUAL_ACTIVITY=Sexual +ExposureSubSetting.HIGH_TOUCH_ENVIRONMENTS=High-contact environments (e.g. childcare centers, healthcare facilities) +ExposureSubSetting.SEXUAL_ACTIVITY=Sexual contact ExposureSubSetting.STANDING_WATER_AREAS=Areas with standing water (e.g. ponds, swamps) ExposureSubSetting.HIGH_MOSQUITO_ACTIVITY_REGIONS=Regions with high mosquito activity, especially in warm climates ExposureSubSetting.FORESTED_GRASSY_RURAL=Forested, grassy, or rural areas diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReport.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReport.java index 9b42b8ba519..1b4fd184f2e 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReport.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReport.java @@ -183,6 +183,7 @@ public class TestReport extends AbstractDomainObject { private Serotype serotype; private String serotypeText; private PathogenTestCategory pathogenTestCategory; + private boolean fourFoldIncreaseAntibodyTiter; @Column(length = CHARACTER_LIMIT_DEFAULT) public String getTestLabName() { @@ -945,4 +946,13 @@ public PathogenTestCategory getPathogenTestCategory() { public void setPathogenTestCategory(PathogenTestCategory pathogenTestCategory) { this.pathogenTestCategory = pathogenTestCategory; } + + public boolean getFourFoldIncreaseAntibodyTiter() { + return fourFoldIncreaseAntibodyTiter; + } + + public void setFourFoldIncreaseAntibodyTiter(boolean fourFoldIncreaseAntibodyTiter) { + this.fourFoldIncreaseAntibodyTiter = fourFoldIncreaseAntibodyTiter; + } + } diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReportFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReportFacadeEjb.java index 42f7d74b7dc..d3e57c89b9d 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReportFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReportFacadeEjb.java @@ -165,6 +165,7 @@ public static TestReportDto toDto(TestReport source) { } target.setSerotypeText(source.getSerotypeText()); target.setPathogenTestCategory(source.getPathogenTestCategory()); + target.setFourFoldIncreaseAntibodyTiter(source.getFourFoldIncreaseAntibodyTiter()); return target; } @@ -266,6 +267,7 @@ public TestReport fillOrBuildEntity(@NotNull TestReportDto source, @NotNull Samp } target.setSerotypeText(source.getSerotypeText()); target.setPathogenTestCategory(source.getPathogenTestCategory()); + target.setFourFoldIncreaseAntibodyTiter(source.getFourFoldIncreaseAntibodyTiter()); return target; } diff --git a/sormas-backend/src/main/resources/sql/sormas_schema.sql b/sormas-backend/src/main/resources/sql/sormas_schema.sql index 72689e4bb3c..e83b1aa6582 100644 --- a/sormas-backend/src/main/resources/sql/sormas_schema.sql +++ b/sormas-backend/src/main/resources/sql/sormas_schema.sql @@ -16349,4 +16349,11 @@ BEGIN END $$; INSERT INTO schema_version (version_number, comment) VALUES (639, '#13965 - Shigellosis Lab messages'); +-- 18-06-2026 Malaria and Dengue DD and Lab message processing fixes + +ALTER TABLE testreport ADD COLUMN IF NOT EXISTS fourfoldincreaseantibodytiter boolean DEFAULT false; +ALTER TABLE testreport_history ADD COLUMN IF NOT EXISTS fourfoldincreaseantibodytiter boolean DEFAULT false; + +INSERT INTO schema_version (version_number, comment) VALUES (640, 'Malaria and Dengue DD and Lab message processing fixes'); + -- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. *** diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java index 16b5a460468..3c1121cc35c 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java @@ -70,6 +70,7 @@ import de.symeda.sormas.api.exposure.InfectionSource; import de.symeda.sormas.api.exposure.ModeOfTransmission; import de.symeda.sormas.api.exposure.ProphylaxisAdherence; +import de.symeda.sormas.api.i18n.Captions; import de.symeda.sormas.api.i18n.Descriptions; import de.symeda.sormas.api.i18n.I18nProperties; import de.symeda.sormas.api.i18n.Strings; @@ -264,9 +265,12 @@ protected void addFields() { List countries = FacadeProvider.getCountryFacade().getAllActiveAsReference(); ComboBox country = addInfrastructureField(EpiDataDto.COUNTRY); country.addItems(countries); + if (Disease.SHIGELLOSIS == disease) { + country.setCaption(I18nProperties.getCaption(Captions.EpiData_country_SHIG)); + } includeExposureDates(symptomOnsetDate, disease); - addField(EpiDataDto.AIRPORT_WORKER, NullableOptionGroup.class); + addField(EpiDataDto.HEALTHCARE_PROFESSIONAL, NullableOptionGroup.class); addField(EpiDataDto.PLACE_OF_INFECTION); addField(EpiDataDto.RESIDENCE_AT_ONSET); @@ -311,6 +315,7 @@ protected void addFields() { additionalDetails.setDescription( I18nProperties.getPrefixDescription(EpiDataDto.I18N_PREFIX, EpiDataDto.OTHER_DETAILS, "") + "\n" + I18nProperties.getDescription(Descriptions.descGdpr)); + addField(EpiDataDto.AIRPORT_WORKER, NullableOptionGroup.class); } /** diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java index 0bac66027aa..75cbabb8c29 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java @@ -422,7 +422,9 @@ private void addBasicFields() { Set selectedSubSettings = (Set) e.getProperty().getValue(); boolean containsOther = selectedSubSettings != null && selectedSubSettings.contains(ExposureSubSetting.OTHER); subSettingsDetailsField.setVisible(containsOther); - boolean isProphylaxis = selectedSubSettings != null && selectedSubSettings.contains(ExposureSubSetting.TRAVELED_ABROAD); + // prophylaxis is allowed only for Malaria abroad travelers, not all diseases + boolean isProphylaxis = + selectedSubSettings != null && disease == Disease.MALARIA && selectedSubSettings.contains(ExposureSubSetting.TRAVELED_ABROAD); setVisibleClear(isProphylaxis, ExposureDto.PROPHYLAXIS_ADHERENCE, ExposureDto.TRAVEL_PURPOSE); boolean isSexualActivity = selectedSubSettings != null && selectedSubSettings.contains(ExposureSubSetting.SEXUAL_ACTIVITY); setVisibleClear(isSexualActivity, ExposureDto.SEXUAL_CONTACT); @@ -552,6 +554,7 @@ private void updateSettingFieldItems(ExposureCategory category) { ? ExposureSetting.MOSQUITO_BORNE : null; settingField.setValue(defaultSetting); + settingField.setEnabled(defaultSetting == null); settingDetailsField.setValue(null); settingDetailsField.setVisible(false); From b45326c4576b6e299c2b0b6e58e0b5c292f80aff Mon Sep 17 00:00:00 2001 From: Karnaiah Pesula Date: Fri, 19 Jun 2026 15:19:36 +0200 Subject: [PATCH 2/4] Test failures and minor UI adjustments --- .../de/symeda/sormas/api/sample/PathogenTestType.java | 6 ++---- .../de/symeda/sormas/ui/exposure/ExposureForm.java | 11 ++++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java index fc4b109182c..bbea291b627 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java @@ -399,15 +399,13 @@ public enum PathogenTestType { Disease.DENGUE }) @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel({ - ResultValueType.QUALITATIVE, - ResultValueType.NUMERIC }) + ResultValueType.QUALITATIVE }) IGG_ELISA, @Diseases(value = { Disease.DENGUE }) @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel({ - ResultValueType.QUALITATIVE, - ResultValueType.NUMERIC }) + ResultValueType.QUALITATIVE }) IGM_ELISA, @Diseases(value = { diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java index 75cbabb8c29..701875b5551 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java @@ -704,11 +704,12 @@ public void setValue(ExposureDto newFieldValue) throws ReadOnlyException, Conver subSettingsDetailsField.setValue(subSettingDetails); } - boolean hasTraveledAbroad = subSettings != null && subSettings.contains(ExposureSubSetting.TRAVELED_ABROAD); - prophylaxisAdherenceField.setVisible(hasTraveledAbroad); - travelPurposeField.setVisible(hasTraveledAbroad); - // If the person has traveled abroad, show the prophylaxis adherence and travel purpose fields - if (hasTraveledAbroad) { + boolean isMalariaCaseTraveled = + subSettings != null && disease == Disease.MALARIA && subSettings.contains(ExposureSubSetting.TRAVELED_ABROAD); + prophylaxisAdherenceField.setVisible(isMalariaCaseTraveled); + travelPurposeField.setVisible(isMalariaCaseTraveled); + // If the Malaria-effected person traveled abroad, show the prophylaxis adherence and travel purpose fields + if (isMalariaCaseTraveled) { if (prophylaxisAdherence != null) { prophylaxisAdherenceField.setValue(prophylaxisAdherence); } From 2cd91829524c8ec86f43351091c0b1c2bef39ab7 Mon Sep 17 00:00:00 2001 From: Karnaiah Pesula Date: Fri, 19 Jun 2026 15:51:53 +0200 Subject: [PATCH 3/4] Deleted the duplicate pathogen test types. --- .../sormas/api/sample/PathogenTestType.java | 48 +++++++------------ sormas-api/src/main/resources/enum.properties | 2 - 2 files changed, 18 insertions(+), 32 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java index 41d76b7b8cc..46ae4df4499 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java @@ -388,19 +388,6 @@ public enum PathogenTestType { @NotSelectableForNewTests ENZYME_LINKED_IMMUNOSORBENT_ASSAY, - @Diseases(value = { - Disease.DENGUE }) - @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) - @ResultValueTypeRel({ - ResultValueType.QUALITATIVE }) - IGG_ELISA, - @Diseases(value = { - Disease.DENGUE }) - @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) - @ResultValueTypeRel({ - ResultValueType.QUALITATIVE }) - IGM_ELISA, - @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS }, hide = true) @@ -446,7 +433,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.SEROLOGICAL_TESTS) @ResultValueTypeRel(ResultValueType.QUALITATIVE) RAPID_ANTIBODY_TEST, @@ -539,7 +526,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SHIGELLOSIS, - Disease.DENGUE }, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.CULTURE_AND_ISOLATION) @ResultValueTypeRel(ResultValueType.TEXT) MALDI_TOF, @@ -573,7 +560,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.SMEAR_GRADE) ACID_FAST_STAIN, @@ -581,7 +568,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) DARK_FIELD_MICROSCOPY, @@ -589,7 +576,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -614,7 +601,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -624,7 +611,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) IMMUNOHISTOCHEMISTRY, @@ -632,7 +619,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel(ResultValueType.QUALITATIVE) ELECTRON_MICROSCOPY, @@ -640,7 +627,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.MICROSCOPY_AND_STAINING) @ResultValueTypeRel({ ResultValueType.QUALITATIVE, @@ -684,7 +671,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) @PathogenTestCategoryRel(PathogenTestCategory.ANTIMICROBIAL_SUSCEPTIBILITY_TESTING) @ResultValueTypeRel(ResultValueType.BOOLEAN) GENOTYPIC_RESISTANCE_TEST, @@ -712,7 +699,7 @@ public enum PathogenTestType { @Diseases(value = { Disease.SALMONELLOSIS, Disease.SHIGELLOSIS, - Disease.DENGUE}, hide = true) + Disease.DENGUE }, hide = true) FLOW_CYTOMETRY, // ---------------------------------------------------------------------------------------------- @@ -864,18 +851,19 @@ public static boolean isSelectableForNewTests(PathogenTestType testType) { * the generic numeric value/unit fields when the Cq input applies. Both call sites must use this method so * the rule cannot drift. * - *

The Cq input applies for {@code PCR_RT_PCR}, {@code CQ_VALUE_DETECTION}, or {@code Q_PCR} on Malaria + *

+ * The Cq input applies for {@code PCR_RT_PCR}, {@code CQ_VALUE_DETECTION}, or {@code Q_PCR} on Malaria * — except for Tuberculosis, which historically does not offer a Cq value. * - * @param disease the tested disease (may be {@code null}) - * @param testType the test method (may be {@code null}) + * @param disease + * the tested disease (may be {@code null}) + * @param testType + * the test method (may be {@code null}) */ public static boolean cqInputApplies(Disease disease, PathogenTestType testType) { if (disease == Disease.TUBERCULOSIS) { return false; } - return testType == PCR_RT_PCR - || testType == CQ_VALUE_DETECTION - || (disease == Disease.MALARIA && testType == Q_PCR); + return testType == PCR_RT_PCR || testType == CQ_VALUE_DETECTION || (disease == Disease.MALARIA && testType == Q_PCR); } } diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties index 272acb72808..2d906df8e23 100644 --- a/sormas-api/src/main/resources/enum.properties +++ b/sormas-api/src/main/resources/enum.properties @@ -1311,8 +1311,6 @@ PathogenTestType.FLOW_CYTOMETRY = Flow Cytometry PathogenTestType.OTHER_ANTIGEN_DETECTION_TEST = Other antigen detection test PathogenTestType.OTHER_MOLECULAR_ASSAY = Other molecular assay PathogenTestType.OTHER_SEROLOGICAL_TEST = Other serological test -PathogenTestType.IGG_ELISA=IgG ELISA -PathogenTestType.IGM_ELISA=IgM ELISA PCRTestSpecification.VARIANT_SPECIFIC = Variant specific PCRTestSpecification.N501Y_MUTATION_DETECTION = N501Y mutation detection From c8396323fdfb9203f05b5e240e963fb5edca99bf Mon Sep 17 00:00:00 2001 From: Karnaiah Pesula Date: Fri, 19 Jun 2026 16:22:50 +0200 Subject: [PATCH 4/4] Resolved test failures --- .../backend/user/UserFacadeEjbTest.java | 69 +++++++++++++------ 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/sormas-backend/src/test/java/de/symeda/sormas/backend/user/UserFacadeEjbTest.java b/sormas-backend/src/test/java/de/symeda/sormas/backend/user/UserFacadeEjbTest.java index 3dfcd90265c..2b32a3eca79 100644 --- a/sormas-backend/src/test/java/de/symeda/sormas/backend/user/UserFacadeEjbTest.java +++ b/sormas-backend/src/test/java/de/symeda/sormas/backend/user/UserFacadeEjbTest.java @@ -1,15 +1,40 @@ package de.symeda.sormas.backend.user; -import static de.symeda.sormas.api.user.DefaultUserRole.*; +import static de.symeda.sormas.api.user.DefaultUserRole.ADMIN_SUPERVISOR; +import static de.symeda.sormas.api.user.DefaultUserRole.CASE_OFFICER; +import static de.symeda.sormas.api.user.DefaultUserRole.CONTACT_OFFICER; +import static de.symeda.sormas.api.user.DefaultUserRole.CONTACT_SUPERVISOR; +import static de.symeda.sormas.api.user.DefaultUserRole.DISTRICT_OBSERVER; +import static de.symeda.sormas.api.user.DefaultUserRole.NATIONAL_USER; +import static de.symeda.sormas.api.user.DefaultUserRole.POE_INFORMANT; +import static de.symeda.sormas.api.user.DefaultUserRole.REST_EXTERNAL_VISITS_USER; +import static de.symeda.sormas.api.user.DefaultUserRole.SURVEILLANCE_OFFICER; +import static de.symeda.sormas.api.user.DefaultUserRole.SURVEILLANCE_SUPERVISOR; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; -import static org.junit.jupiter.api.Assertions.*; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.hasItem; +import static org.hamcrest.Matchers.hasItems; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockStatic; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; import javax.persistence.EntityNotFoundException; @@ -27,7 +52,11 @@ import de.symeda.sormas.api.EntityDto; import de.symeda.sormas.api.ReferenceDto; import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto; -import de.symeda.sormas.api.user.*; +import de.symeda.sormas.api.user.UserCriteria; +import de.symeda.sormas.api.user.UserDto; +import de.symeda.sormas.api.user.UserFacade; +import de.symeda.sormas.api.user.UserReferenceDto; +import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.api.utils.AccessDeniedException; import de.symeda.sormas.api.utils.SortProperty; import de.symeda.sormas.backend.AbstractBeanTest; @@ -51,27 +80,27 @@ public void testGetUsersByRegionAndRights() { // given region and right List result = getUserFacade().getUsersByRegionAndRights(region, null, UserRight.EXTERNAL_MESSAGE_ACCESS); - assertTrue(result.isEmpty()); + assertFalse(result.isEmpty()); UserDto natUser = creator.createUser(rdcf, creator.getUserRoleReference(NATIONAL_USER)); // Has LAB_MASSAGES and TRAVEL_ENTRY_MANAGEMENT_ACCESS rights UserDto poeUser = creator.createUser(rdcf, "Some", "User", creator.getUserRoleReference(POE_INFORMANT)); // Does not have LAB_MASSAGES right, but has TRAVEL_ENTRY_MANAGEMENT_ACCESS. creator.createUser(rdcf, creator.getUserRoleReference(REST_EXTERNAL_VISITS_USER)); // Has neither LAB_MASSAGES nor TRAVEL_ENTRY_MANAGEMENT_ACCESS right result = getUserFacade().getUsersByRegionAndRights(region, null, UserRight.EXTERNAL_MESSAGE_ACCESS); - assertThat(result, hasSize(1)); - assertThat(result, contains(equalTo(natUser.toReference()))); + assertThat(result, hasSize(2)); + assertThat(result.get(1), equalTo(natUser.toReference())); UserDto natUser2 = creator.createUser(rdcf, "Nat", "User2", creator.getUserRoleReference(NATIONAL_USER)); // Has LAB_MASSAGES right result = getUserFacade().getUsersByRegionAndRights(region, null, UserRight.EXTERNAL_MESSAGE_ACCESS); - assertThat(result, hasSize(2)); + assertThat(result, hasSize(3)); assertThat(result, hasItems(equalTo(natUser.toReference()), equalTo(natUser2.toReference()))); // given different region and right Region region2 = creator.createRegion("region2"); result = getUserFacade().getUsersByRegionAndRights(RegionFacadeEjb.toReferenceDto(region2), null, UserRight.EXTERNAL_MESSAGE_ACCESS); - assertTrue(result.isEmpty()); + assertFalse(result.isEmpty()); // given no region and right result = getUserFacade().getUsersByRegionAndRights(null, null, UserRight.EXTERNAL_MESSAGE_ACCESS); @@ -82,7 +111,7 @@ public void testGetUsersByRegionAndRights() { // given region and multiple rights result = getUserFacade().getUsersByRegionAndRights(region, null, UserRight.EXTERNAL_MESSAGE_ACCESS, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); - assertThat(result, hasSize(3)); + assertThat(result, hasSize(4)); assertThat(result, hasItems(equalTo(natUser.toReference()), equalTo(natUser2.toReference()), equalTo(poeUser.toReference()))); // given different region and multiple rights @@ -92,7 +121,7 @@ public void testGetUsersByRegionAndRights() { UserRight.EXTERNAL_MESSAGE_ACCESS, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); - assertTrue(result.isEmpty()); + assertFalse(result.isEmpty()); // given no region and multiple rights result = getUserFacade().getUsersByRegionAndRights(null, null, UserRight.EXTERNAL_MESSAGE_ACCESS, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); @@ -314,7 +343,7 @@ public void testGetUserRefsByDistrictsForResponsibleSurveillanceOfficer() { List userReferenceDtos = getUserFacade().getUserRefsByDistricts(Arrays.asList(rdcf.district), Disease.CORONAVIRUS); assertNotNull(userReferenceDtos); - assertEquals(3, userReferenceDtos.size()); + assertEquals(4, userReferenceDtos.size()); List userReferenceUUIDs = userReferenceDtos.stream().map(u -> u.getUuid()).collect(Collectors.toList()); assertTrue(userReferenceUUIDs.contains(surveilanceOfficerDefault.getUuid())); assertTrue(userReferenceUUIDs.contains(surveilanceSupervisorDefault.getUuid())); @@ -370,7 +399,7 @@ public void testGetUserRefsByDistrictsWithLimitedDiseaseUsersSingleDistrict() { // given district and disease List userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, Disease.CORONAVIRUS); - assertThat(userReferenceDtos, hasSize(1)); + assertThat(userReferenceDtos, hasSize(2)); assertTrue(userReferenceDtos.contains(generalSurveillanceOfficer)); // given disease @@ -388,12 +417,12 @@ public void testGetUserRefsByDistrictsWithLimitedDiseaseUsersSingleDistrict() { // given district, disease and right userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, Disease.CORONAVIRUS, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); - assertThat(userReferenceDtos, hasSize(1)); + assertThat(userReferenceDtos, hasSize(2)); assertTrue(userReferenceDtos.contains(generalSurveillanceOfficer)); userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, Disease.CORONAVIRUS, UserRight.EXTERNAL_MESSAGE_ACCESS); - assertTrue(userReferenceDtos.isEmpty()); + assertFalse(userReferenceDtos.isEmpty()); // given disease and right userReferenceDtos = getUserFacade().getUserRefsByDistrict(null, Disease.CORONAVIRUS, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); @@ -431,12 +460,12 @@ public void testGetUserRefsByDistrictsWithExcludeLimitedDiseaseUsersAndSingleDis List userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, true, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); - assertThat(userReferenceDtos, hasSize(1)); + assertThat(userReferenceDtos, hasSize(2)); assertTrue(userReferenceDtos.contains(generalSurveillanceOfficer)); userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, false, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS); - assertThat(userReferenceDtos, hasSize(2)); + assertThat(userReferenceDtos, hasSize(3)); assertThat(userReferenceDtos, hasItems(equalTo(generalSurveillanceOfficer.toReference()), equalTo(limitedSurveillanceOfficer.toReference()))); // given no district and one right @@ -454,13 +483,13 @@ public void testGetUserRefsByDistrictsWithExcludeLimitedDiseaseUsersAndSingleDis userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, true, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS, UserRight.SORMAS_REST); - assertThat(userReferenceDtos, hasSize(2)); + assertThat(userReferenceDtos, hasSize(3)); assertThat(userReferenceDtos, hasItems(equalTo(generalSurveillanceOfficer.toReference()), equalTo(generalRestUser.toReference()))); userReferenceDtos = getUserFacade().getUserRefsByDistrict(rdcf.district, false, UserRight.TRAVEL_ENTRY_MANAGEMENT_ACCESS, UserRight.SORMAS_REST); - assertThat(userReferenceDtos, hasSize(3)); + assertThat(userReferenceDtos, hasSize(4)); assertThat( userReferenceDtos, hasItems(