Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.commons.collections4.CollectionUtils;
Expand Down Expand Up @@ -962,12 +964,17 @@ protected void addFields() {
+ I18nProperties.getDescription(Descriptions.descGdpr));
CssStyles.style(additionalDetails, CssStyles.CAPTION_HIDDEN);

addField(CaseDataDto.PREGNANT, NullableOptionGroup.class);
NullableOptionGroup pregnantField = addField(CaseDataDto.PREGNANT, NullableOptionGroup.class);

addField(CaseDataDto.POSTPARTUM, NullableOptionGroup.class);
NullableOptionGroup postpartumField = addField(CaseDataDto.POSTPARTUM, NullableOptionGroup.class);
addField(CaseDataDto.TRIMESTER, NullableOptionGroup.class);
FieldHelper.setVisibleWhen(getFieldGroup(), CaseDataDto.TRIMESTER, CaseDataDto.PREGNANT, Arrays.asList(YesNoUnknown.YES), true);

// Mutual exclusivity: Pregnancy and Postpartum
if (pregnantField != null && postpartumField != null) {
setupMutuallyExclusiveFields(pregnantField, postpartumField);
}

addField(CaseDataDto.VACCINATION_STATUS, TextField.class);
// getContent().addComponent(new Label("Debug vaccination"), CaseDataDto.VACCINATION_STATUS);
addFields(CaseDataDto.SMALLPOX_VACCINATION_SCAR, CaseDataDto.SMALLPOX_VACCINATION_RECEIVED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,31 @@ protected void addFields() {

FieldHelper.setVisibleWhen(getFieldGroup(), HIV_ART, HIV, Arrays.asList(YesNoUnknown.YES), true);

// Mutual exclusivity: Current smoker and Former smoker
NullableOptionGroup currentSmokerField = (NullableOptionGroup) getFieldGroup().getField(CURRENT_SMOKER);
NullableOptionGroup formerSmokerField = (NullableOptionGroup) getFieldGroup().getField(FORMER_SMOKER);
if (currentSmokerField != null && formerSmokerField != null) {
setupMutuallyExclusiveFields(currentSmokerField, formerSmokerField);
}

// Auto-check immunodeficiency when Asplenia is selected
NullableOptionGroup aspleniaField = (NullableOptionGroup) getFieldGroup().getField(ASPLENIA);
NullableOptionGroup immunodeficiencyField = (NullableOptionGroup) getFieldGroup().getField(IMMUNODEFICIENCY_OTHER_THAN_HIV);
if (aspleniaField != null) {
aspleniaField.addValueChangeListener(e -> {
Object rawValue = e.getProperty().getValue();
if (rawValue instanceof Set) {
@SuppressWarnings("unchecked")
Set<Object> aspleniaValue = (Set<Object>) rawValue;
if (aspleniaValue.contains(YesNoUnknown.YES)) {
if (immunodeficiencyField != null && immunodeficiencyField.isVisible()) {
immunodeficiencyField.setValue(new HashSet<>(Arrays.asList(YesNoUnknown.YES)));
}
}
}
});
}

//Below requirement (showing the treatment year and its compliances only applicable for LUX)
if (isConfiguredServer(CountryHelper.COUNTRY_CODE_LUXEMBOURG)) {
if (Disease.TUBERCULOSIS.equals(disease)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@
import static com.vaadin.v7.data.fieldgroup.DefaultFieldGroupFieldFactory.CAPTION_PROPERTY_ID;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand Down Expand Up @@ -209,7 +212,7 @@ protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDisease
* that makes sure the value that is about to be selected is added to the list of allowed values. This is intended
* to be used for Disease fields that might contain a disease that is no longer active in the system and thus will
* not be returned by DiseaseHelper.isActivePrimaryDisease(disease).
*
*
* @param showNonPrimaryDiseases
* Whether or not diseases that have been configured as non-primary should be included
* @param setServerDiseaseAsDefault
Expand Down Expand Up @@ -621,7 +624,7 @@ public void setHeading(String heading) {

/**
* List of editable allowed fields,
*
*
* @return
*/
public List<Field<?>> editableAllowedFields() {
Expand Down Expand Up @@ -685,4 +688,29 @@ protected <T> T safeSetFieldValue(String propertyId, T value) {
}
return safeSetFieldValue(field, value);
}

/**
* Sets up mutually exclusive behavior between two YesNoUnknown fields.
* When one field is set to YES, the other is automatically set to NO.
*
* @param field1
* First field
* @param field2
* Second field (mutually exclusive with field1)
*/
@SuppressWarnings("unchecked")
protected void setupMutuallyExclusiveFields(NullableOptionGroup field1, NullableOptionGroup field2) {
field1.addValueChangeListener(e -> {
Set<Object> value = (Set<Object>) e.getProperty().getValue();
if (value != null && value.contains(de.symeda.sormas.api.utils.YesNoUnknown.YES)) {
field2.setValue(new HashSet<>(Arrays.asList(de.symeda.sormas.api.utils.YesNoUnknown.NO)));
}
});
field2.addValueChangeListener(e -> {
Set<Object> value = (Set<Object>) e.getProperty().getValue();
if (value != null && value.contains(de.symeda.sormas.api.utils.YesNoUnknown.YES)) {
field1.setValue(new HashSet<>(Arrays.asList(de.symeda.sormas.api.utils.YesNoUnknown.NO)));
}
});
}
}
Loading