diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/BulkCaseDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/BulkCaseDataForm.java index 1df2dc6f717..4cdcf912dd1 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/BulkCaseDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/BulkCaseDataForm.java @@ -169,7 +169,7 @@ protected void addFields() { diseaseCheckBox = new CheckBox(I18nProperties.getCaption(Captions.bulkDisease)); diseaseCheckBox.setReadOnly(!UiUtil.permitted(UserRight.CASE_CHANGE_DISEASE)); getContent().addComponent(diseaseCheckBox, DISEASE_CHECKBOX); - ComboBox diseaseField = addDiseaseField(CaseBulkEditData.DISEASE, false); + ComboBox diseaseField = addDiseaseField(CaseBulkEditData.DISEASE, false, false); diseaseField.setEnabled(false); addField(CaseBulkEditData.DISEASE_DETAILS, TextField.class); addField(CaseBulkEditData.PLAGUE_TYPE, NullableOptionGroup.class); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseCreateForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseCreateForm.java index d118187e0f1..5554342567e 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseCreateForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseCreateForm.java @@ -192,7 +192,7 @@ protected void addFields() { addField(CaseDataDto.CASE_REFERENCE_NUMBER, TextField.class); addField(CaseDataDto.REPORT_DATE, DateField.class); - ComboBox diseaseField = addDiseaseField(CaseDataDto.DISEASE, false, true); + ComboBox diseaseField = addDiseaseField(CaseDataDto.DISEASE, false, true, false); diseaseVariantField = addField(CaseDataDto.DISEASE_VARIANT, ComboBox.class); diseaseVariantDetailsField = addField(CaseDataDto.DISEASE_VARIANT_DETAILS, TextField.class); diseaseVariantDetailsField.setVisible(false); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java index 8b23e63c822..c30e6cb8328 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java @@ -453,7 +453,7 @@ protected void addFields() { Collections.singletonList(CaseIdentificationSource.SCREENING), true); - ComboBox diseaseField = addDiseaseField(CaseDataDto.DISEASE, false); + ComboBox diseaseField = addDiseaseField(CaseDataDto.DISEASE, false, false); ComboBox diseaseVariantField = addCustomizableEnumField(CaseDataDto.DISEASE_VARIANT); TextField diseaseVariantDetailsField = addField(CaseDataDto.DISEASE_VARIANT_DETAILS, TextField.class); diseaseVariantDetailsField.setVisible(false); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java index bb00efe417d..715ea4072f3 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactCreateForm.java @@ -151,7 +151,7 @@ protected void addFields() { reportDate = addField(ContactDto.REPORT_DATE_TIME, DateField.class); addField(CaseDataDto.CASE_REFERENCE_NUMBER, TextField.class); - ComboBox cbDisease = addDiseaseField(ContactDto.DISEASE, false, true); + ComboBox cbDisease = addDiseaseField(ContactDto.DISEASE, false, true, true); addField(ContactDto.DISEASE_DETAILS, TextField.class); personCreateForm = new PersonCreateForm(false, false, false, showPersonSearchButton); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java index e76a5f9ad9b..e981850aca6 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataForm.java @@ -299,7 +299,7 @@ protected void addFields() { } ComboBox relationToCase = addField(ContactDto.RELATION_TO_CASE, ComboBox.class); addField(ContactDto.RELATION_DESCRIPTION, TextField.class); - cbDisease = addDiseaseField(ContactDto.DISEASE, false); + cbDisease = addDiseaseField(ContactDto.DISEASE, false, true); cbDisease.setNullSelectionAllowed(false); addField(ContactDto.DISEASE_DETAILS, TextField.class); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventDataForm.java index 6fdfd864d4b..b75bfbe3bcc 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventDataForm.java @@ -222,7 +222,7 @@ protected void addFields() { getContent().addComponent(locationHeadingLabel, LOCATION_HEADING_LOC); addField(EventDto.UUID, TextField.class); - ComboBox diseaseField = addDiseaseField(EventDto.DISEASE, false, isCreateForm); + ComboBox diseaseField = addDiseaseField(EventDto.DISEASE, false, isCreateForm, false); addField(EventDto.DISEASE_DETAILS, TextField.class); ComboBox diseaseVariantField = addCustomizableEnumField(EventDto.DISEASE_VARIANT); diseaseVariantField.setNullSelectionAllowed(true); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationCreationForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationCreationForm.java index f8d955c3ee1..d71f82c6f1f 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationCreationForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationCreationForm.java @@ -125,7 +125,7 @@ protected void addFields() { TextField externalIdField = addField(ImmunizationDto.EXTERNAL_ID, TextField.class); style(externalIdField, ERROR_COLOR_PRIMARY); - ComboBox diseaseField = addDiseaseField(ImmunizationDto.DISEASE, false, true); + ComboBox diseaseField = addDiseaseField(ImmunizationDto.DISEASE, false, true, false); addField(ImmunizationDto.DISEASE_DETAILS, TextField.class); ComboBox meansOfImmunizationField = addField(ImmunizationDto.MEANS_OF_IMMUNIZATION, ComboBox.class); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationDataForm.java index fbe86c47094..09baebb7a43 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/immunization/components/form/ImmunizationDataForm.java @@ -164,7 +164,7 @@ protected void addFields() { UserField reportingUser = addField(ImmunizationDto.REPORTING_USER, UserField.class); reportingUser.setParentPseudonymizedSupplier(() -> getValue().isPseudonymized()); - ComboBox cbDisease = addDiseaseField(ImmunizationDto.DISEASE, false); + ComboBox cbDisease = addDiseaseField(ImmunizationDto.DISEASE, false, false); addField(ImmunizationDto.DISEASE_DETAILS, TextField.class); ComboBox meansOfImmunizationField = addField(ImmunizationDto.MEANS_OF_IMMUNIZATION, ComboBox.class); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonEditForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonEditForm.java index 4367a571630..c223d42ccba 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonEditForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonEditForm.java @@ -407,7 +407,7 @@ protected void addFields() { TextField tfPlaceOfBirthFacilityDetails = addField(PersonDto.PLACE_OF_BIRTH_FACILITY_DETAILS, TextField.class); causeOfDeathField = addField(PersonDto.CAUSE_OF_DEATH, ComboBox.class); - causeOfDeathDiseaseField = addDiseaseField(PersonDto.CAUSE_OF_DEATH_DISEASE, true); + causeOfDeathDiseaseField = addDiseaseField(PersonDto.CAUSE_OF_DEATH_DISEASE, true, false); causeOfDeathDetailsField = addField(PersonDto.CAUSE_OF_DEATH_DETAILS, TextField.class); // Set requirements that don't need visibility changes and read only status diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java index 281313c0b50..0d21235cd02 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java @@ -253,7 +253,7 @@ protected void addFields() { typingIdField.setVisible(false); // Tested Desease or Tested Pathogen, depending on sample type - ComboBox diseaseField = addDiseaseField(PathogenTestDto.TESTED_DISEASE, true, create); + ComboBox diseaseField = addDiseaseField(PathogenTestDto.TESTED_DISEASE, true, create, false); addField(PathogenTestDto.TESTED_DISEASE_DETAILS, TextField.class); ComboBox diseaseVariantField = addCustomizableEnumField(PathogenTestDto.TESTED_DISEASE_VARIANT); diseaseVariantField.setNullSelectionAllowed(true); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/selfreport/SelfReportDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/selfreport/SelfReportDataForm.java index 870f42355e0..902941e6a3b 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/selfreport/SelfReportDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/selfreport/SelfReportDataForm.java @@ -114,7 +114,7 @@ protected void addFields() { addField(SelfReportDto.CASE_REFERENCE); //disease related fieldss - ComboBox diseaseField = addDiseaseField(SelfReportDto.DISEASE, false); + ComboBox diseaseField = addDiseaseField(SelfReportDto.DISEASE, false, false); addField(SelfReportDto.DISEASE_DETAILS, TextField.class); diseaseField.setRequired(true); ComboBox diseaseVariantField = addCustomizableEnumField(SelfReportDto.DISEASE_VARIANT); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataForm.java index 3c0f0d024d9..f73ced0d30d 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/TravelEntryDataForm.java @@ -153,7 +153,7 @@ protected void addFields() { TextField externalIdField = addField(TravelEntryDto.EXTERNAL_ID, TextField.class); style(externalIdField, ERROR_COLOR_PRIMARY); - ComboBox diseaseField = addDiseaseField(TravelEntryDto.DISEASE, false); + ComboBox diseaseField = addDiseaseField(TravelEntryDto.DISEASE, false, false); ComboBox diseaseVariantField = addCustomizableEnumField(TravelEntryDto.DISEASE_VARIANT); diseaseVariantField.setNullSelectionAllowed(true); diseaseVariantField.setVisible(false); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/components/TravelEntryCreateForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/components/TravelEntryCreateForm.java index cbf92e0a21f..f515eba3dfd 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/components/TravelEntryCreateForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/travelentry/components/TravelEntryCreateForm.java @@ -113,7 +113,7 @@ protected void addFields() { TextField externalIdField = addField(TravelEntryDto.EXTERNAL_ID, TextField.class); style(externalIdField, ERROR_COLOR_PRIMARY); - ComboBox diseaseField = addDiseaseField(TravelEntryDto.DISEASE, false, true); + ComboBox diseaseField = addDiseaseField(TravelEntryDto.DISEASE, false, true, false); ComboBox diseaseVariantField = addField(TravelEntryDto.DISEASE_VARIANT, ComboBox.class); diseaseVariantField.setNullSelectionAllowed(true); diseaseVariantField.setVisible(false); diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractEditForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractEditForm.java index d5db8ba4ae1..fb3e4203bac 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractEditForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractEditForm.java @@ -15,6 +15,8 @@ package de.symeda.sormas.ui.utils; +import static com.vaadin.v7.data.fieldgroup.DefaultFieldGroupFieldFactory.CAPTION_PROPERTY_ID; + import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -197,8 +199,8 @@ public void discard() throws SourceException { super.discard(); } - protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDiseases) { - return addDiseaseField(fieldId, showNonPrimaryDiseases, false); + protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDiseases, boolean hideFollowUpDisabledDiseases) { + return addDiseaseField(fieldId, showNonPrimaryDiseases, false, hideFollowUpDisabledDiseases); } /** @@ -213,10 +215,19 @@ protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDisease * If only a single diseases is active on the server, set it as the default value */ @SuppressWarnings("unchecked") - protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDiseases, boolean setServerDiseaseAsDefault) { + protected ComboBox addDiseaseField( + String fieldId, + boolean showNonPrimaryDiseases, + boolean setServerDiseaseAsDefault, + boolean hideFollowUpDisabledDiseases) { diseaseField = addField(fieldId, ComboBox.class); this.setServerDiseaseAsDefault = setServerDiseaseAsDefault; + + if (hideFollowUpDisabledDiseases) { + removeFollowUpDisabledDiseases(diseaseField); + } + if (showNonPrimaryDiseases) { addNonPrimaryDiseasesTo(diseaseField); } @@ -230,9 +241,10 @@ protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDisease Object value = e.getProperty().getValue(); if (value != null && !diseaseField.containsId(value)) { Item newItem = diseaseField.addItem(value); - newItem.getItemProperty(SormasFieldGroupFieldFactory.CAPTION_PROPERTY_ID).setValue(value.toString()); + newItem.getItemProperty(CAPTION_PROPERTY_ID).setValue(value.toString()); } }); + return diseaseField; } @@ -499,7 +511,16 @@ protected void addNonPrimaryDiseasesTo(ComboBox diseaseField) { } Item newItem = diseaseField.addItem(disease); - newItem.getItemProperty(SormasFieldGroupFieldFactory.CAPTION_PROPERTY_ID).setValue(disease.toString()); + newItem.getItemProperty(CAPTION_PROPERTY_ID).setValue(disease.toString()); + } + } + + protected void removeFollowUpDisabledDiseases(ComboBox diseaseField) { + List allDiseasesWithFollowUp = FacadeProvider.getDiseaseConfigurationFacade().getAllDiseasesWithFollowUp(true, true, true); + diseaseField.removeAllItems(); + for (Object r : allDiseasesWithFollowUp) { + Item newItem = diseaseField.addItem(r); + newItem.getItemProperty(CAPTION_PROPERTY_ID).setValue(r.toString()); } }