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 @@ -26,9 +26,7 @@
import java.util.Optional;

import android.webkit.WebView;

import androidx.fragment.app.FragmentActivity;

import de.symeda.sormas.api.CountryHelper;
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.caze.CaseClassification;
Expand All @@ -55,6 +53,7 @@
import de.symeda.sormas.api.event.TypeOfPlace;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.user.JurisdictionLevel;
import de.symeda.sormas.api.user.UserRight;
import de.symeda.sormas.api.utils.YesNoUnknown;
Expand Down Expand Up @@ -213,6 +212,12 @@ private void setUpFieldVisibilities(final FragmentCaseEditLayoutBinding contentB
}

contentBinding.caseDataDiseaseVariant.setVisibility(DataUtils.emptyOrWithOneNullItem(diseaseVariantList) ? GONE : VISIBLE);

if (record.getPerson() != null && Sex.MALE.equals(record.getPerson().getSex())) {
contentBinding.caseDataPregnant.setVisibility(GONE);
contentBinding.caseDataPostpartum.setVisibility(GONE);
contentBinding.caseDataTrimester.setVisibility(GONE);
}
}

private void updateCaseConfirmationBasis(FragmentCaseEditLayoutBinding contentBinding) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;

import de.symeda.sormas.api.CountryHelper;
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.caze.CaseClassification;
Expand All @@ -30,6 +29,7 @@
import de.symeda.sormas.api.caze.CaseOrigin;
import de.symeda.sormas.api.event.TypeOfPlace;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.utils.YesNoUnknown;
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
Expand Down Expand Up @@ -133,6 +133,12 @@ private void setUpFieldVisibilities(FragmentCaseReadLayoutBinding contentBinding
if (isVisibleAllowed(CaseDataDto.class, contentBinding.caseDataDiseaseVariant)) {
contentBinding.caseDataDiseaseVariant.setVisibility(record.getDiseaseVariant() != null ? VISIBLE : GONE);
}

if (record.getPerson() != null && Sex.MALE.equals(record.getPerson().getSex())) {
contentBinding.caseDataPregnant.setVisibility(GONE);
contentBinding.caseDataPostpartum.setVisibility(GONE);
contentBinding.caseDataTrimester.setVisibility(GONE);
}
}

private void updateCaseConfirmationFields(FragmentCaseReadLayoutBinding contentBinding) {
Expand Down Expand Up @@ -208,7 +214,7 @@ public void onAfterLayoutBinding(FragmentCaseReadLayoutBinding contentBinding) {
contentBinding.caseDataClassifiedBy.setValue(getResources().getString(R.string.system));
}

if(!isFieldAccessible(CaseDataDto.class, contentBinding.caseDataHealthFacility)){
if (!isFieldAccessible(CaseDataDto.class, contentBinding.caseDataHealthFacility)) {
FieldVisibilityAndAccessHelper.setFieldInaccessibleValue(contentBinding.facilityOrHome);
FieldVisibilityAndAccessHelper.setFieldInaccessibleValue(contentBinding.facilityTypeGroup);
} else if (record.getHealthFacility() == null) {
Expand Down
18 changes: 13 additions & 5 deletions sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

import org.apache.commons.collections4.CollectionUtils;
Expand Down Expand Up @@ -113,6 +114,7 @@
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.sample.PathogenTestDto;
import de.symeda.sormas.api.sample.SampleDto;
import de.symeda.sormas.api.symptoms.SymptomsDto;
Expand Down Expand Up @@ -280,7 +282,7 @@ public class CaseDataForm extends AbstractEditForm<CaseDataDto> {
fluidRowLocs(CaseDataDto.FOLLOW_UP_STATUS_CHANGE_DATE, CaseDataDto.FOLLOW_UP_STATUS_CHANGE_USER) +
fluidRowLocs(CaseDataDto.FOLLOW_UP_UNTIL, EXPECTED_FOLLOW_UP_UNTIL_DATE_LOC, CaseDataDto.OVERWRITE_FOLLOW_UP_UNTIL) +
fluidRowLocs(CaseDataDto.FOLLOW_UP_COMMENT);

private static final String PAPER_FORM_DATES_AND_HEALTH_CONDITIONS_HTML_LAYOUT =
fluidRowLocs(6, CaseDataDto.SURVEILLANCE_OFFICER) +
loc(PAPER_FORM_DATES_LOC) +
Expand Down Expand Up @@ -965,8 +967,13 @@ protected void addFields() {
addField(CaseDataDto.PREGNANT, NullableOptionGroup.class);

addField(CaseDataDto.POSTPARTUM, NullableOptionGroup.class);
addField(CaseDataDto.TRIMESTER, NullableOptionGroup.class);
FieldHelper.setVisibleWhen(getFieldGroup(), CaseDataDto.TRIMESTER, CaseDataDto.PREGNANT, Arrays.asList(YesNoUnknown.YES), true);
Field<?> trimesterField = addField(CaseDataDto.TRIMESTER, NullableOptionGroup.class);
boolean isMale = Sex.MALE.equals(person.getSex());
if (!isMale) {
FieldHelper.setVisibleWhen(getFieldGroup(), CaseDataDto.TRIMESTER, CaseDataDto.PREGNANT, Arrays.asList(YesNoUnknown.YES), true);
} else {
trimesterField.setVisible(false);
}

addField(CaseDataDto.VACCINATION_STATUS, TextField.class);
// getContent().addComponent(new Label("Debug vaccination"), CaseDataDto.VACCINATION_STATUS);
Expand Down Expand Up @@ -1441,10 +1448,11 @@ public String getFormattedHtmlMessage() {
}

});

boolean isNotMale = Objects.isNull(person.getSex()) || !Sex.MALE.equals(person.getSex());
setVisible(!isLuxTuberculosisDisease() && isNotMale, CaseDataDto.POSTPARTUM, CaseDataDto.PREGNANT, CaseDataDto.TRIMESTER);
setVisible(
!isLuxTuberculosisDisease(),
CaseDataDto.POSTPARTUM,
CaseDataDto.PREGNANT,
CaseDataDto.SURVEILLANCE_OFFICER,
CaseDataDto.CLINICIAN_NAME,
CaseDataDto.CLINICIAN_PHONE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,13 @@
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.immunization.ImmunizationDto;
import de.symeda.sormas.api.immunization.ImmunizationReferenceDto;
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.PersonReferenceDto;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.user.UserRight;
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
import de.symeda.sormas.api.vaccination.VaccinationDto;
Expand Down Expand Up @@ -89,7 +92,8 @@ public CommitDiscardWrapperComponent<VaccinationEditForm> getVaccinationCreateCo
UiFieldAccessCheckers fieldAccessCheckers,
boolean doSave,
Consumer<VaccinationDto> commitCallback) {
VaccinationEditForm form = new VaccinationEditForm(true, disease, fieldAccessCheckers);
Sex personSex = getPersonSex(person, immunization);
VaccinationEditForm form = new VaccinationEditForm(true, disease, personSex, fieldAccessCheckers);
VaccinationDto vaccination = VaccinationDto.build(UiUtil.getUserReference());
if (immunization != null) {
vaccination.setImmunization(immunization);
Expand Down Expand Up @@ -127,7 +131,8 @@ public void edit(
boolean isEditAllowed,
boolean isDeleteAllowed) {

VaccinationEditForm form = new VaccinationEditForm(true, disease, fieldAccessCheckers);
Sex personSex = getPersonSexFromVaccination(vaccination);
VaccinationEditForm form = new VaccinationEditForm(true, disease, personSex, fieldAccessCheckers);
form.setValue(vaccination);

boolean isEditOrDeleteAllowed = isEditAllowed || isDeleteAllowed;
Expand Down Expand Up @@ -187,6 +192,37 @@ public static void updateVaccinationStatus(CaseDataDto caseDataDto) {
getCaseFacade().updateVaccinationStatus(caseDataDto.toReference(), null);
}

private Sex getPersonSex(PersonReferenceDto person, ImmunizationReferenceDto immunization) {
if (person != null) {
PersonDto personDto = FacadeProvider.getPersonFacade().getByUuid(person.getUuid());
if (personDto != null) {
return personDto.getSex();
}
} else if (immunization != null) {
ImmunizationDto immunizationDto = FacadeProvider.getImmunizationFacade().getByUuid(immunization.getUuid());
if (immunizationDto != null && immunizationDto.getPerson() != null) {
PersonDto personDto = FacadeProvider.getPersonFacade().getByUuid(immunizationDto.getPerson().getUuid());
if (personDto != null) {
return personDto.getSex();
}
}
}
return null;
}

private Sex getPersonSexFromVaccination(VaccinationDto vaccination) {
if (vaccination != null && vaccination.getImmunization() != null) {
ImmunizationDto immunization = FacadeProvider.getImmunizationFacade().getByUuid(vaccination.getImmunization().getUuid());
if (immunization != null && immunization.getPerson() != null) {
PersonDto person = FacadeProvider.getPersonFacade().getByUuid(immunization.getPerson().getUuid());
if (person != null) {
return person.getSex();
}
}
}
return null;
}

public CommitDiscardWrapperComponent<VaccinationEditForm> getVaccinationEditComponent(
VaccinationDto vaccination,
Disease disease,
Expand All @@ -197,7 +233,8 @@ public CommitDiscardWrapperComponent<VaccinationEditForm> getVaccinationEditComp
boolean isDeleteAllowed) {

boolean isEditOrDeleteAllowed = isEditAllowed || isDeleteAllowed;
VaccinationEditForm form = new VaccinationEditForm(true, disease, fieldAccessCheckers);
Sex personSex = getPersonSexFromVaccination(vaccination);
VaccinationEditForm form = new VaccinationEditForm(true, disease, personSex, fieldAccessCheckers);
form.setValue(vaccination);

final CommitDiscardWrapperComponent<VaccinationEditForm> editComponent =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,15 @@

import java.util.Collections;

import org.apache.commons.lang3.StringUtils;

import com.vaadin.v7.ui.Field;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.FacadeProvider;
import de.symeda.sormas.api.caze.Vaccine;
import de.symeda.sormas.api.caze.VaccineManufacturer;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.utils.YesNoUnknown;
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
Expand All @@ -35,7 +38,6 @@
import de.symeda.sormas.ui.utils.AbstractEditForm;
import de.symeda.sormas.ui.utils.FieldHelper;
import de.symeda.sormas.ui.utils.UserField;
import org.apache.commons.lang3.StringUtils;

public class VaccinationEditForm extends AbstractEditForm<VaccinationDto> {

Expand All @@ -50,7 +52,9 @@ public class VaccinationEditForm extends AbstractEditForm<VaccinationDto> {
+ fluidRowLocs(VaccinationDto.PREGNANT, VaccinationDto.TRIMESTER)
+ fluidRowLocs(VaccinationDto.HEALTH_CONDITIONS);

public VaccinationEditForm(boolean create, Disease disease, UiFieldAccessCheckers fieldAccessCheckers) {
private final Sex personSex;

public VaccinationEditForm(boolean create, Disease disease, Sex personSex, UiFieldAccessCheckers fieldAccessCheckers) {
super(
VaccinationDto.class,
VaccinationDto.I18N_PREFIX,
Expand All @@ -60,6 +64,8 @@ public VaccinationEditForm(boolean create, Disease disease, UiFieldAccessChecker
.andWithFeatureType(FacadeProvider.getFeatureConfigurationFacade().getActiveServerFeatureConfigurations()),
fieldAccessCheckers);

this.personSex = personSex;

setWidth(800, Unit.PIXELS);

if (create) {
Expand Down Expand Up @@ -119,13 +125,18 @@ protected void addFields() {
Collections.singletonList(VaccineManufacturer.OTHER),
true);

addField(VaccinationDto.PREGNANT);
addField(VaccinationDto.TRIMESTER);
Field<?> pregnantField = addField(VaccinationDto.PREGNANT);
Field<?> trimesterField = addField(VaccinationDto.TRIMESTER);
addField(VaccinationDto.HEALTH_CONDITIONS, HealthConditionsForm.class).setCaption(null);

initializeVisibilitiesAndAllowedVisibilities();

if (isVisibleAllowed(VaccinationDto.PREGNANT)) {
boolean isMale = Sex.MALE.equals(this.personSex);

if (isMale) {
pregnantField.setVisible(false);
trimesterField.setVisible(false);
} else if (isVisibleAllowed(VaccinationDto.PREGNANT)) {
FieldHelper.setVisibleWhen(
getFieldGroup(),
VaccinationDto.TRIMESTER,
Expand Down
Loading