Skip to content

Commit 21743b9

Browse files
committed
#13426 - Fixes Male case has unnecessary information as Pregnancy
1 parent af6249b commit 21743b9

File tree

5 files changed

+84
-17
lines changed

5 files changed

+84
-17
lines changed

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditFragment.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
import java.util.Optional;
2727

2828
import android.webkit.WebView;
29-
3029
import androidx.fragment.app.FragmentActivity;
31-
3230
import de.symeda.sormas.api.CountryHelper;
3331
import de.symeda.sormas.api.Disease;
3432
import de.symeda.sormas.api.caze.CaseClassification;
@@ -55,6 +53,7 @@
5553
import de.symeda.sormas.api.event.TypeOfPlace;
5654
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
5755
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
56+
import de.symeda.sormas.api.person.Sex;
5857
import de.symeda.sormas.api.user.JurisdictionLevel;
5958
import de.symeda.sormas.api.user.UserRight;
6059
import de.symeda.sormas.api.utils.YesNoUnknown;
@@ -213,6 +212,12 @@ private void setUpFieldVisibilities(final FragmentCaseEditLayoutBinding contentB
213212
}
214213

215214
contentBinding.caseDataDiseaseVariant.setVisibility(DataUtils.emptyOrWithOneNullItem(diseaseVariantList) ? GONE : VISIBLE);
215+
216+
if (record.getPerson() != null && Sex.MALE.equals(record.getPerson().getSex())) {
217+
contentBinding.caseDataPregnant.setVisibility(GONE);
218+
contentBinding.caseDataPostpartum.setVisibility(GONE);
219+
contentBinding.caseDataTrimester.setVisibility(GONE);
220+
}
216221
}
217222

218223
private void updateCaseConfirmationBasis(FragmentCaseEditLayoutBinding contentBinding) {

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/read/CaseReadFragment.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import android.os.Bundle;
2222
import android.view.View;
2323
import android.webkit.WebView;
24-
2524
import de.symeda.sormas.api.CountryHelper;
2625
import de.symeda.sormas.api.Disease;
2726
import de.symeda.sormas.api.caze.CaseClassification;
@@ -30,6 +29,7 @@
3029
import de.symeda.sormas.api.caze.CaseOrigin;
3130
import de.symeda.sormas.api.event.TypeOfPlace;
3231
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
32+
import de.symeda.sormas.api.person.Sex;
3333
import de.symeda.sormas.api.utils.YesNoUnknown;
3434
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
3535
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
@@ -133,6 +133,12 @@ private void setUpFieldVisibilities(FragmentCaseReadLayoutBinding contentBinding
133133
if (isVisibleAllowed(CaseDataDto.class, contentBinding.caseDataDiseaseVariant)) {
134134
contentBinding.caseDataDiseaseVariant.setVisibility(record.getDiseaseVariant() != null ? VISIBLE : GONE);
135135
}
136+
137+
if (record.getPerson() != null && Sex.MALE.equals(record.getPerson().getSex())) {
138+
contentBinding.caseDataPregnant.setVisibility(GONE);
139+
contentBinding.caseDataPostpartum.setVisibility(GONE);
140+
contentBinding.caseDataTrimester.setVisibility(GONE);
141+
}
136142
}
137143

138144
private void updateCaseConfirmationFields(FragmentCaseReadLayoutBinding contentBinding) {
@@ -208,7 +214,7 @@ public void onAfterLayoutBinding(FragmentCaseReadLayoutBinding contentBinding) {
208214
contentBinding.caseDataClassifiedBy.setValue(getResources().getString(R.string.system));
209215
}
210216

211-
if(!isFieldAccessible(CaseDataDto.class, contentBinding.caseDataHealthFacility)){
217+
if (!isFieldAccessible(CaseDataDto.class, contentBinding.caseDataHealthFacility)) {
212218
FieldVisibilityAndAccessHelper.setFieldInaccessibleValue(contentBinding.facilityOrHome);
213219
FieldVisibilityAndAccessHelper.setFieldInaccessibleValue(contentBinding.facilityTypeGroup);
214220
} else if (record.getHealthFacility() == null) {

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataForm.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.util.Collections;
3939
import java.util.Date;
4040
import java.util.List;
41+
import java.util.Objects;
4142
import java.util.stream.Collectors;
4243

4344
import org.apache.commons.collections4.CollectionUtils;
@@ -113,6 +114,7 @@
113114
import de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup;
114115
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
115116
import de.symeda.sormas.api.person.PersonDto;
117+
import de.symeda.sormas.api.person.Sex;
116118
import de.symeda.sormas.api.sample.PathogenTestDto;
117119
import de.symeda.sormas.api.sample.SampleDto;
118120
import de.symeda.sormas.api.symptoms.SymptomsDto;
@@ -280,7 +282,7 @@ public class CaseDataForm extends AbstractEditForm<CaseDataDto> {
280282
fluidRowLocs(CaseDataDto.FOLLOW_UP_STATUS_CHANGE_DATE, CaseDataDto.FOLLOW_UP_STATUS_CHANGE_USER) +
281283
fluidRowLocs(CaseDataDto.FOLLOW_UP_UNTIL, EXPECTED_FOLLOW_UP_UNTIL_DATE_LOC, CaseDataDto.OVERWRITE_FOLLOW_UP_UNTIL) +
282284
fluidRowLocs(CaseDataDto.FOLLOW_UP_COMMENT);
283-
285+
284286
private static final String PAPER_FORM_DATES_AND_HEALTH_CONDITIONS_HTML_LAYOUT =
285287
fluidRowLocs(6, CaseDataDto.SURVEILLANCE_OFFICER) +
286288
loc(PAPER_FORM_DATES_LOC) +
@@ -965,8 +967,13 @@ protected void addFields() {
965967
addField(CaseDataDto.PREGNANT, NullableOptionGroup.class);
966968

967969
addField(CaseDataDto.POSTPARTUM, NullableOptionGroup.class);
968-
addField(CaseDataDto.TRIMESTER, NullableOptionGroup.class);
969-
FieldHelper.setVisibleWhen(getFieldGroup(), CaseDataDto.TRIMESTER, CaseDataDto.PREGNANT, Arrays.asList(YesNoUnknown.YES), true);
970+
Field<?> trimesterField = addField(CaseDataDto.TRIMESTER, NullableOptionGroup.class);
971+
boolean isMale = Sex.MALE.equals(person.getSex());
972+
if (!isMale) {
973+
FieldHelper.setVisibleWhen(getFieldGroup(), CaseDataDto.TRIMESTER, CaseDataDto.PREGNANT, Arrays.asList(YesNoUnknown.YES), true);
974+
} else {
975+
trimesterField.setVisible(false);
976+
}
970977

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

14431450
});
1451+
1452+
boolean isNotMale = Objects.isNull(person.getSex()) || !Sex.MALE.equals(person.getSex());
1453+
setVisible(!isLuxTuberculosisDisease() && isNotMale, CaseDataDto.POSTPARTUM, CaseDataDto.PREGNANT, CaseDataDto.TRIMESTER);
14441454
setVisible(
14451455
!isLuxTuberculosisDisease(),
1446-
CaseDataDto.POSTPARTUM,
1447-
CaseDataDto.PREGNANT,
14481456
CaseDataDto.SURVEILLANCE_OFFICER,
14491457
CaseDataDto.CLINICIAN_NAME,
14501458
CaseDataDto.CLINICIAN_PHONE,

sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/VaccinationController.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,13 @@
3030
import de.symeda.sormas.api.i18n.Captions;
3131
import de.symeda.sormas.api.i18n.I18nProperties;
3232
import de.symeda.sormas.api.i18n.Strings;
33+
import de.symeda.sormas.api.immunization.ImmunizationDto;
3334
import de.symeda.sormas.api.immunization.ImmunizationReferenceDto;
3435
import de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto;
3536
import de.symeda.sormas.api.infrastructure.region.RegionReferenceDto;
37+
import de.symeda.sormas.api.person.PersonDto;
3638
import de.symeda.sormas.api.person.PersonReferenceDto;
39+
import de.symeda.sormas.api.person.Sex;
3740
import de.symeda.sormas.api.user.UserRight;
3841
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
3942
import de.symeda.sormas.api.vaccination.VaccinationDto;
@@ -89,7 +92,8 @@ public CommitDiscardWrapperComponent<VaccinationEditForm> getVaccinationCreateCo
8992
UiFieldAccessCheckers fieldAccessCheckers,
9093
boolean doSave,
9194
Consumer<VaccinationDto> commitCallback) {
92-
VaccinationEditForm form = new VaccinationEditForm(true, disease, fieldAccessCheckers);
95+
Sex personSex = getPersonSex(person, immunization);
96+
VaccinationEditForm form = new VaccinationEditForm(true, disease, personSex, fieldAccessCheckers);
9397
VaccinationDto vaccination = VaccinationDto.build(UiUtil.getUserReference());
9498
if (immunization != null) {
9599
vaccination.setImmunization(immunization);
@@ -127,7 +131,8 @@ public void edit(
127131
boolean isEditAllowed,
128132
boolean isDeleteAllowed) {
129133

130-
VaccinationEditForm form = new VaccinationEditForm(true, disease, fieldAccessCheckers);
134+
Sex personSex = getPersonSexFromVaccination(vaccination);
135+
VaccinationEditForm form = new VaccinationEditForm(true, disease, personSex, fieldAccessCheckers);
131136
form.setValue(vaccination);
132137

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

195+
private Sex getPersonSex(PersonReferenceDto person, ImmunizationReferenceDto immunization) {
196+
if (person != null) {
197+
PersonDto personDto = FacadeProvider.getPersonFacade().getByUuid(person.getUuid());
198+
if (personDto != null) {
199+
return personDto.getSex();
200+
}
201+
} else if (immunization != null) {
202+
ImmunizationDto immunizationDto = FacadeProvider.getImmunizationFacade().getByUuid(immunization.getUuid());
203+
if (immunizationDto != null && immunizationDto.getPerson() != null) {
204+
PersonDto personDto = FacadeProvider.getPersonFacade().getByUuid(immunizationDto.getPerson().getUuid());
205+
if (personDto != null) {
206+
return personDto.getSex();
207+
}
208+
}
209+
}
210+
return null;
211+
}
212+
213+
private Sex getPersonSexFromVaccination(VaccinationDto vaccination) {
214+
if (vaccination != null && vaccination.getImmunization() != null) {
215+
ImmunizationDto immunization = FacadeProvider.getImmunizationFacade().getByUuid(vaccination.getImmunization().getUuid());
216+
if (immunization != null && immunization.getPerson() != null) {
217+
PersonDto person = FacadeProvider.getPersonFacade().getByUuid(immunization.getPerson().getUuid());
218+
if (person != null) {
219+
return person.getSex();
220+
}
221+
}
222+
}
223+
return null;
224+
}
225+
190226
public CommitDiscardWrapperComponent<VaccinationEditForm> getVaccinationEditComponent(
191227
VaccinationDto vaccination,
192228
Disease disease,
@@ -197,7 +233,8 @@ public CommitDiscardWrapperComponent<VaccinationEditForm> getVaccinationEditComp
197233
boolean isDeleteAllowed) {
198234

199235
boolean isEditOrDeleteAllowed = isEditAllowed || isDeleteAllowed;
200-
VaccinationEditForm form = new VaccinationEditForm(true, disease, fieldAccessCheckers);
236+
Sex personSex = getPersonSexFromVaccination(vaccination);
237+
VaccinationEditForm form = new VaccinationEditForm(true, disease, personSex, fieldAccessCheckers);
201238
form.setValue(vaccination);
202239

203240
final CommitDiscardWrapperComponent<VaccinationEditForm> editComponent =

sormas-ui/src/main/java/de/symeda/sormas/ui/vaccination/VaccinationEditForm.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@
2121

2222
import java.util.Collections;
2323

24+
import org.apache.commons.lang3.StringUtils;
25+
2426
import com.vaadin.v7.ui.Field;
2527

2628
import de.symeda.sormas.api.Disease;
2729
import de.symeda.sormas.api.FacadeProvider;
2830
import de.symeda.sormas.api.caze.Vaccine;
2931
import de.symeda.sormas.api.caze.VaccineManufacturer;
32+
import de.symeda.sormas.api.person.Sex;
3033
import de.symeda.sormas.api.utils.YesNoUnknown;
3134
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
3235
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
@@ -35,7 +38,6 @@
3538
import de.symeda.sormas.ui.utils.AbstractEditForm;
3639
import de.symeda.sormas.ui.utils.FieldHelper;
3740
import de.symeda.sormas.ui.utils.UserField;
38-
import org.apache.commons.lang3.StringUtils;
3941

4042
public class VaccinationEditForm extends AbstractEditForm<VaccinationDto> {
4143

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

53-
public VaccinationEditForm(boolean create, Disease disease, UiFieldAccessCheckers fieldAccessCheckers) {
55+
private final Sex personSex;
56+
57+
public VaccinationEditForm(boolean create, Disease disease, Sex personSex, UiFieldAccessCheckers fieldAccessCheckers) {
5458
super(
5559
VaccinationDto.class,
5660
VaccinationDto.I18N_PREFIX,
@@ -60,6 +64,8 @@ public VaccinationEditForm(boolean create, Disease disease, UiFieldAccessChecker
6064
.andWithFeatureType(FacadeProvider.getFeatureConfigurationFacade().getActiveServerFeatureConfigurations()),
6165
fieldAccessCheckers);
6266

67+
this.personSex = personSex;
68+
6369
setWidth(800, Unit.PIXELS);
6470

6571
if (create) {
@@ -119,13 +125,18 @@ protected void addFields() {
119125
Collections.singletonList(VaccineManufacturer.OTHER),
120126
true);
121127

122-
addField(VaccinationDto.PREGNANT);
123-
addField(VaccinationDto.TRIMESTER);
128+
Field<?> pregnantField = addField(VaccinationDto.PREGNANT);
129+
Field<?> trimesterField = addField(VaccinationDto.TRIMESTER);
124130
addField(VaccinationDto.HEALTH_CONDITIONS, HealthConditionsForm.class).setCaption(null);
125131

126132
initializeVisibilitiesAndAllowedVisibilities();
127133

128-
if (isVisibleAllowed(VaccinationDto.PREGNANT)) {
134+
boolean isMale = Sex.MALE.equals(this.personSex);
135+
136+
if (isMale) {
137+
pregnantField.setVisible(false);
138+
trimesterField.setVisible(false);
139+
} else if (isVisibleAllowed(VaccinationDto.PREGNANT)) {
129140
FieldHelper.setVisibleWhen(
130141
getFieldGroup(),
131142
VaccinationDto.TRIMESTER,

0 commit comments

Comments
 (0)