Skip to content

Commit

Permalink
#5496 - Applied logic to additional fields, cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
MateStrysewske committed Aug 31, 2021
1 parent 9b924f9 commit f4f05fb
Show file tree
Hide file tree
Showing 12 changed files with 78 additions and 37 deletions.
Expand Up @@ -25,6 +25,8 @@
import com.j256.ormlite.stmt.Where;

import android.util.Log;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.event.EventInvestigationStatus;
import de.symeda.sormas.api.event.EventStatus;
import de.symeda.sormas.app.backend.caze.Case;
Expand All @@ -35,6 +37,7 @@
import de.symeda.sormas.app.backend.config.ConfigProvider;
import de.symeda.sormas.app.backend.location.Location;
import de.symeda.sormas.app.backend.task.Task;
import de.symeda.sormas.app.util.DiseaseConfigurationCache;
import de.symeda.sormas.app.util.LocationService;

public class EventDao extends AbstractAdoDao<Event> {
Expand Down Expand Up @@ -80,6 +83,11 @@ public Event build() {
event.setEventStatus(EventStatus.SIGNAL);
event.setEventInvestigationStatus(EventInvestigationStatus.PENDING);

Disease defaultDisease = DiseaseConfigurationCache.getInstance().getDefaultDisease();
if (defaultDisease != null) {
event.setDisease(defaultDisease);
}

return event;
}

Expand Down
Expand Up @@ -25,10 +25,12 @@

import android.util.Log;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.sample.SamplePurpose;
import de.symeda.sormas.app.backend.common.AbstractAdoDao;
import de.symeda.sormas.app.backend.common.AbstractDomainObject;
import de.symeda.sormas.app.backend.config.ConfigProvider;
import de.symeda.sormas.app.util.DiseaseConfigurationCache;

public class PathogenTestDao extends AbstractAdoDao<PathogenTest> {

Expand Down Expand Up @@ -56,6 +58,10 @@ public PathogenTest build(Sample associatedSample) {
if (associatedSample.getSamplePurpose() == SamplePurpose.INTERNAL) {
pathogenTest.setTestResultVerified(true);
}
Disease defaultDisease = DiseaseConfigurationCache.getInstance().getDefaultDisease();
if (defaultDisease != null) {
pathogenTest.setTestedDisease(defaultDisease);
}
return pathogenTest;
}

Expand Down
Expand Up @@ -28,6 +28,7 @@

import androidx.annotation.NonNull;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.contact.ContactClassification;
import de.symeda.sormas.api.contact.ContactRelation;
import de.symeda.sormas.api.contact.ContactStatus;
Expand All @@ -52,6 +53,7 @@
import de.symeda.sormas.app.person.SelectOrCreatePersonDialog;
import de.symeda.sormas.app.util.Bundler;
import de.symeda.sormas.app.util.Consumer;
import de.symeda.sormas.app.util.DiseaseConfigurationCache;
import de.symeda.sormas.app.util.NavigationHelper;

public class ContactNewActivity extends BaseEditActivity<Contact> {
Expand Down Expand Up @@ -97,6 +99,11 @@ protected Contact buildRootEntity() {
_contact.setCaseUuid(caseUuid);
_contact.setDisease(contactCase.getDisease());
_contact.setDiseaseDetails(contactCase.getDiseaseDetails());
} else {
Disease defaultDisease = DiseaseConfigurationCache.getInstance().getDefaultDisease();
if (defaultDisease != null) {
_contact.setDisease(defaultDisease);
}
}

_contact.setPerson(_person);
Expand Down
Expand Up @@ -55,21 +55,21 @@
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.event.TypeOfPlace;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.i18n.Captions;
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.i18n.Validations;
import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.infrastructure.pointofentry.PointOfEntryReferenceDto;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.PresentCondition;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.symptoms.SymptomsDto;
import de.symeda.sormas.api.user.JurisdictionLevel;
import de.symeda.sormas.api.user.UserRole;
Expand Down Expand Up @@ -163,7 +163,7 @@ protected void addFields() {
}

addField(CaseDataDto.REPORT_DATE, DateField.class);
ComboBox diseaseField = addDiseaseField(CaseDataDto.DISEASE, false);
ComboBox diseaseField = addDiseaseField(CaseDataDto.DISEASE, false, true);
ComboBox diseaseVariantField = addField(CaseDataDto.DISEASE_VARIANT, ComboBox.class);
diseaseVariantField.setNullSelectionAllowed(true);
diseaseVariantField.setVisible(false);
Expand Down
Expand Up @@ -92,10 +92,6 @@
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.event.TypeOfPlace;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.feature.FeatureType;
import de.symeda.sormas.api.followup.FollowUpLogic;
import de.symeda.sormas.api.followup.FollowUpPeriodDto;
Expand All @@ -104,11 +100,15 @@
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.i18n.Validations;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.symptoms.SymptomsDto;
import de.symeda.sormas.api.user.JurisdictionLevel;
import de.symeda.sormas.api.user.UserRight;
Expand Down
Expand Up @@ -25,15 +25,15 @@
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.FacadeProvider;
import de.symeda.sormas.api.caze.CaseDataDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.i18n.Captions;
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.symptoms.SymptomsDto;
import de.symeda.sormas.api.user.UserRight;
Expand Down Expand Up @@ -332,6 +332,11 @@ private CaseLineLayout buildNewLine(VerticalLayout lineComponent) {
newLineDto.setFacilityDetails(lastLineDto.getFacilityDetails());

setEpidNumberPrefix(newLine, lastLineDto.getDateOfReport());
} else {
Disease defaultDisease = FacadeProvider.getDiseaseConfigurationFacade().getDefaultDisease();
if (defaultDisease != null) {
newLineDto.setDisease(defaultDisease);
}
}

newLine.setBean(newLineDto);
Expand Down
Expand Up @@ -58,10 +58,10 @@
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.i18n.Validations;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.utils.DataHelper;
import de.symeda.sormas.api.utils.DateHelper;
import de.symeda.sormas.ui.ControllerProvider;
Expand Down Expand Up @@ -144,7 +144,7 @@ protected void addFields() {
}

addField(ContactDto.REPORT_DATE_TIME, DateField.class);
ComboBox cbDisease = addDiseaseField(ContactDto.DISEASE, false);
ComboBox cbDisease = addDiseaseField(ContactDto.DISEASE, false, true);
addField(ContactDto.DISEASE_DETAILS, TextField.class);
TextField firstName = addCustomField(PersonDto.FIRST_NAME, String.class, TextField.class);
TextField lastName = addCustomField(PersonDto.LAST_NAME, String.class, TextField.class);
Expand Down
Expand Up @@ -64,15 +64,15 @@
import de.symeda.sormas.api.event.ParenteralTransmissionMode;
import de.symeda.sormas.api.event.SpecificRisk;
import de.symeda.sormas.api.event.TypeOfPlace;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
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;
import de.symeda.sormas.api.i18n.Validations;
import de.symeda.sormas.api.location.LocationDto;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.location.LocationDto;
import de.symeda.sormas.api.user.UserReferenceDto;
import de.symeda.sormas.api.user.UserRole;
import de.symeda.sormas.api.utils.YesNoUnknown;
Expand Down Expand Up @@ -214,7 +214,7 @@ protected void addFields() {
getContent().addComponent(locationHeadingLabel, LOCATION_HEADING_LOC);

addField(EventDto.UUID, TextField.class);
diseaseField = addDiseaseField(EventDto.DISEASE, false);
diseaseField = addDiseaseField(EventDto.DISEASE, false, isCreateForm);
addField(EventDto.DISEASE_DETAILS, TextField.class);
diseaseVariantField = addField(EventDto.DISEASE_VARIANT, ComboBox.class);
diseaseVariantField.setNullSelectionAllowed(true);
Expand Down
Expand Up @@ -105,7 +105,7 @@ protected void addFields() {
TextField externalIdField = addField(ImmunizationDto.EXTERNAL_ID, TextField.class);
style(externalIdField, ERROR_COLOR_PRIMARY);

addDiseaseField(ImmunizationDto.DISEASE, false);
addDiseaseField(ImmunizationDto.DISEASE, false, true);
addField(ImmunizationDto.DISEASE_DETAILS, TextField.class);

ComboBox meansOfImmunizationField = addField(ImmunizationDto.MEANS_OF_IMMUNIZATION, ComboBox.class);
Expand Down
Expand Up @@ -38,10 +38,10 @@
import de.symeda.sormas.api.FacadeProvider;
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Validations;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.sample.PathogenTestDto;
import de.symeda.sormas.api.sample.PathogenTestResultType;
import de.symeda.sormas.api.sample.PathogenTestType;
Expand Down Expand Up @@ -79,6 +79,7 @@ public class PathogenTestForm extends AbstractEditForm<PathogenTestDto> {

private final SampleDto sample;
private int caseSampleCount;
private boolean create;

public PathogenTestForm(SampleDto sample, boolean create, int caseSampleCount, boolean isPseudonymized) {
super(
Expand All @@ -90,6 +91,7 @@ public PathogenTestForm(SampleDto sample, boolean create, int caseSampleCount, b

this.sample = sample;
this.caseSampleCount = caseSampleCount;
this.create = create;
setWidth(600, Unit.PIXELS);

addFields();
Expand Down Expand Up @@ -128,7 +130,7 @@ protected void addFields() {
labDetails.setVisible(false);
TextField typingIdField = addField(PathogenTestDto.TYPING_ID, TextField.class);
typingIdField.setVisible(false);
ComboBox diseaseField = addDiseaseField(PathogenTestDto.TESTED_DISEASE, true);
ComboBox diseaseField = addDiseaseField(PathogenTestDto.TESTED_DISEASE, true, create);
ComboBox diseaseVariantField = addField(PathogenTestDto.TESTED_DISEASE_VARIANT, ComboBox.class);
diseaseVariantField.setNullSelectionAllowed(true);
addField(PathogenTestDto.TESTED_DISEASE_DETAILS, TextField.class);
Expand Down
Expand Up @@ -17,13 +17,11 @@
import java.util.Date;
import java.util.List;

import com.vaadin.v7.data.util.converter.Converter;
import de.symeda.sormas.api.travelentry.DeaContentEntry;
import de.symeda.sormas.ui.travelentry.DEAFormBuilder;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;

import com.vaadin.ui.Label;
import com.vaadin.v7.data.util.converter.Converter;
import com.vaadin.v7.data.validator.EmailValidator;
import com.vaadin.v7.ui.AbstractSelect;
import com.vaadin.v7.ui.CheckBox;
Expand All @@ -40,20 +38,22 @@
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.i18n.Validations;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.pointofentry.PointOfEntryReferenceDto;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.person.PersonDto;
import de.symeda.sormas.api.person.PresentCondition;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
import de.symeda.sormas.api.symptoms.SymptomsDto;
import de.symeda.sormas.api.travelentry.DeaContentEntry;
import de.symeda.sormas.api.travelentry.TravelEntryDto;
import de.symeda.sormas.api.user.JurisdictionLevel;
import de.symeda.sormas.api.user.UserRole;
import de.symeda.sormas.api.utils.DateHelper;
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
import de.symeda.sormas.ui.ControllerProvider;
import de.symeda.sormas.ui.UserProvider;
import de.symeda.sormas.ui.travelentry.DEAFormBuilder;
import de.symeda.sormas.ui.utils.AbstractEditForm;
import de.symeda.sormas.ui.utils.FieldHelper;
import de.symeda.sormas.ui.utils.InfrastructureFieldsHelper;
Expand Down Expand Up @@ -115,7 +115,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, true);
ComboBox diseaseVariantField = addField(TravelEntryDto.DISEASE_VARIANT, ComboBox.class);
diseaseVariantField.setNullSelectionAllowed(true);
diseaseVariantField.setVisible(false);
Expand Down
Expand Up @@ -56,6 +56,7 @@ public abstract class AbstractEditForm<DTO> extends AbstractForm<DTO> implements
private boolean fieldAccessesInitialized;

private ComboBox diseaseField;
private boolean setServerDiseaseAsDefault;

protected AbstractEditForm(Class<DTO> type, String propertyI18nPrefix) {
this(type, propertyI18nPrefix, true, null, null);
Expand Down Expand Up @@ -92,7 +93,7 @@ protected AbstractEditForm(
public void setValue(DTO newFieldValue) throws com.vaadin.v7.data.Property.ReadOnlyException, ConversionException {
super.setValue(newFieldValue);
// this method should only be called once upon initializing the form, thus allowing us to set the default disease here
if (diseaseField != null && diseaseField.getValue() == null) {
if (diseaseField != null && diseaseField.getValue() == null && setServerDiseaseAsDefault) {
setDefaultDiseaseValue();
}
}
Expand Down Expand Up @@ -164,21 +165,33 @@ public void discard() throws SourceException {
super.discard();
}

protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDiseases) {
return addDiseaseField(fieldId, showNonPrimaryDiseases, false);
}

/**
* Adds the field to the form by using addField(fieldId, fieldType), but additionally sets up a ValueChangeListener
* 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
* 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) {
protected ComboBox addDiseaseField(String fieldId, boolean showNonPrimaryDiseases, boolean setServerDiseaseAsDefault) {

diseaseField = addField(fieldId, ComboBox.class);
this.setServerDiseaseAsDefault = setServerDiseaseAsDefault;
if (showNonPrimaryDiseases) {
addNonPrimaryDiseasesTo(diseaseField);
}

setDefaultDiseaseValue();
if (setServerDiseaseAsDefault) {
setDefaultDiseaseValue();
}

// Make sure that the ComboBox still contains a pre-selected inactive disease
diseaseField.addValueChangeListener(e -> {
Expand Down

0 comments on commit f4f05fb

Please sign in to comment.