Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 6c7609d

Browse files
ChristopherRiedelMateStrysewske
authored andcommitted
1 parent a685879 commit 6c7609d

4 files changed

Lines changed: 62 additions & 34 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseFacadeEjb.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,11 @@ public void onCaseChanged(CaseDataDto existingCase, Case newCase) {
14181418
}
14191419
}
14201420

1421+
// Clear facility type if no facility or home was selected
1422+
if (newCase.getHealthFacility() == null || FacilityDto.NONE_FACILITY_UUID.equals(newCase.getHealthFacility().getUuid())) {
1423+
newCase.setFacilityType(null);
1424+
}
1425+
14211426
// Generate epid number if missing or incomplete
14221427
if (!CaseLogic.isCompleteEpidNumber(newCase.getEpidNumber())) {
14231428
newCase.setEpidNumber(generateEpidNumber(newCase));

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.ui.caze;
1919

20+
import java.util.Collection;
21+
import java.util.Date;
22+
import java.util.List;
23+
import java.util.function.Consumer;
24+
2025
import com.vaadin.navigator.Navigator;
2126
import com.vaadin.server.ExternalResource;
2227
import com.vaadin.server.Page;
@@ -35,6 +40,7 @@
3540
import com.vaadin.ui.Window.CloseEvent;
3641
import com.vaadin.ui.Window.CloseListener;
3742
import com.vaadin.ui.themes.ValoTheme;
43+
3844
import de.symeda.sormas.api.Disease;
3945
import de.symeda.sormas.api.FacadeProvider;
4046
import de.symeda.sormas.api.caze.CaseCriteria;
@@ -98,11 +104,6 @@
98104
import de.symeda.sormas.ui.utils.VaadinUiUtil;
99105
import de.symeda.sormas.ui.utils.ViewMode;
100106

101-
import java.util.Collection;
102-
import java.util.Date;
103-
import java.util.List;
104-
import java.util.function.Consumer;
105-
106107
public class CaseController {
107108

108109
public CaseController() {
@@ -374,6 +375,10 @@ public CommitDiscardWrapperComponent<CaseCreateForm> getCaseCreateComponent(
374375
if (!createForm.getFieldGroup().isModified()) {
375376
final CaseDataDto dto = createForm.getValue();
376377

378+
if (dto.getHealthFacility() == null || FacilityDto.NONE_FACILITY_UUID.equals(dto.getHealthFacility().getUuid())) {
379+
dto.setFacilityType(null);
380+
}
381+
377382
if (convertedContact != null) {
378383
dto.getSymptoms().setOnsetDate(createForm.getOnsetDate());
379384
dto.getSymptoms().setUuid(DataHelper.createUuid());

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

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import java.time.Month;
3030
import java.util.Arrays;
31+
import java.util.Collections;
3132
import java.util.Date;
3233

3334
import com.vaadin.ui.themes.ValoTheme;
@@ -175,13 +176,10 @@ protected void addFields() {
175176
facilityTypeGroup.setCaption(I18nProperties.getCaption(Captions.Facility_typeGroup));
176177
facilityTypeGroup.setWidth(100, Unit.PERCENTAGE);
177178
facilityTypeGroup.addItems(FacilityTypeGroup.getAccomodationGroups());
178-
facilityTypeGroup.setVisible(false);
179179
getContent().addComponent(facilityTypeGroup, FACILITY_TYPE_GROUP_LOC);
180180
facilityType = addField(CaseDataDto.FACILITY_TYPE);
181-
facilityType.setVisible(false);
182181
ComboBox facility = addInfrastructureField(CaseDataDto.HEALTH_FACILITY);
183182
facility.setImmediate(true);
184-
facility.setVisible(false);
185183
TextField facilityDetails = addField(CaseDataDto.HEALTH_FACILITY_DETAILS, TextField.class);
186184
facilityDetails.setVisible(false);
187185
ComboBox cbPointOfEntry = addInfrastructureField(CaseDataDto.POINT_OF_ENTRY);
@@ -195,7 +193,9 @@ protected void addFields() {
195193
.updateItems(district, regionDto != null ? FacadeProvider.getDistrictFacade().getAllActiveByRegion(regionDto.getUuid()) : null);
196194
});
197195
district.addValueChangeListener(e -> {
198-
FieldHelper.removeItems(facility);
196+
if (!TypeOfPlace.HOME.equals(facilityOrHome.getValue())) {
197+
FieldHelper.removeItems(facility);
198+
}
199199
FieldHelper.removeItems(community);
200200
DistrictReferenceDto districtDto = (DistrictReferenceDto) e.getProperty().getValue();
201201
FieldHelper.updateItems(
@@ -212,7 +212,9 @@ protected void addFields() {
212212
districtDto != null ? FacadeProvider.getPointOfEntryFacade().getAllActiveByDistrict(districtDto.getUuid(), true) : null);
213213
});
214214
community.addValueChangeListener(e -> {
215-
FieldHelper.removeItems(facility);
215+
if (!TypeOfPlace.HOME.equals(facilityOrHome.getValue())) {
216+
FieldHelper.removeItems(facility);
217+
}
216218
CommunityReferenceDto communityDto = (CommunityReferenceDto) e.getProperty().getValue();
217219
if (facilityType.getValue() != null) {
218220
FieldHelper.updateItems(
@@ -233,10 +235,6 @@ protected void addFields() {
233235
facilityOrHome.addValueChangeListener(e -> {
234236
FieldHelper.removeItems(facility);
235237
if (TypeOfPlace.FACILITY.equals(facilityOrHome.getValue())) {
236-
facilityTypeGroup.setVisible(true);
237-
facilityType.setVisible(true);
238-
facility.setVisible(true);
239-
240238
if (facilityTypeGroup.getValue() == null) {
241239
facilityTypeGroup.setValue(FacilityTypeGroup.MEDICAL_FACILITY);
242240
}
@@ -251,19 +249,12 @@ protected void addFields() {
251249
if (CaseOrigin.IN_COUNTRY.equals(ogCaseOrigin.getValue())) {
252250
facility.setRequired(true);
253251
}
252+
updateFacilityFields(facility, facilityDetails);
254253
} else {
255-
facilityTypeGroup.setVisible(false);
256-
facilityType.setVisible(false);
257-
facility.setVisible(false);
258-
facility.setRequired(false);
259-
260-
if (TypeOfPlace.HOME.equals(facilityOrHome.getValue())) {
261-
FacilityReferenceDto noFacilityRef = FacadeProvider.getFacilityFacade().getByUuid(FacilityDto.NONE_FACILITY_UUID).toReference();
262-
facility.addItem(noFacilityRef);
263-
facility.setValue(noFacilityRef);
264-
}
254+
FacilityReferenceDto noFacilityRef = FacadeProvider.getFacilityFacade().getByUuid(FacilityDto.NONE_FACILITY_UUID).toReference();
255+
facility.addItem(noFacilityRef);
256+
facility.setValue(noFacilityRef);
265257
}
266-
updateFacilityFields(facility, facilityDetails);
267258
});
268259
facilityTypeGroup.addValueChangeListener(e -> {
269260
FieldHelper.removeItems(facility);
@@ -342,6 +333,17 @@ protected void addFields() {
342333
FieldHelper
343334
.setVisibleWhen(getFieldGroup(), Arrays.asList(CaseDataDto.DENGUE_FEVER_TYPE), CaseDataDto.DISEASE, Arrays.asList(Disease.DENGUE), true);
344335
FieldHelper.setVisibleWhen(getFieldGroup(), Arrays.asList(CaseDataDto.RABIES_TYPE), CaseDataDto.DISEASE, Arrays.asList(Disease.RABIES), true);
336+
FieldHelper.setVisibleWhen(
337+
facilityOrHome,
338+
Arrays.asList(facilityTypeGroup, facilityType, facility),
339+
Collections.singletonList(TypeOfPlace.FACILITY),
340+
false);
341+
FieldHelper.setRequiredWhen(
342+
facilityOrHome,
343+
Arrays.asList(facilityTypeGroup, facilityType, facility),
344+
Collections.singletonList(TypeOfPlace.FACILITY),
345+
false,
346+
null);
345347

346348
facility.addValueChangeListener(e -> {
347349
updateFacilityFields(facility, facilityDetails);

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

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import static de.symeda.sormas.ui.utils.LayoutUtil.locs;
3636

3737
import java.util.Arrays;
38+
import java.util.Collections;
3839
import java.util.Date;
3940
import java.util.List;
4041

@@ -439,6 +440,7 @@ protected void addFields() {
439440
facility);
440441
});
441442
facilityOrHome.addValueChangeListener(e -> {
443+
FieldHelper.removeItems(facility);
442444
if (TypeOfPlace.FACILITY.equals(facilityOrHome.getValue())) {
443445
facilityTypeGroup.setVisible(true);
444446
facilityType.setVisible(true);
@@ -453,19 +455,24 @@ protected void addFields() {
453455
&& !facilityType.isReadOnly()) {
454456
facilityType.setValue(FacilityType.HOSPITAL);
455457
}
458+
if (facilityType.getValue() != null) {
459+
updateFacility(
460+
(DistrictReferenceDto) district.getValue(),
461+
(CommunityReferenceDto) community.getValue(),
462+
(FacilityType) facilityType.getValue(),
463+
facility);
464+
}
456465

457466
if (CaseOrigin.IN_COUNTRY.equals(getField(CaseDataDto.CASE_ORIGIN).getValue())) {
458467
facility.setRequired(true);
459468
}
469+
updateFacilityDetails(facility, facilityDetails);
460470
} else {
461471

462-
facilityTypeGroup.clear();
463-
facilityTypeGroup.setVisible(false);
464-
facilityType.setVisible(false);
465-
facility.setVisible(false);
466-
facility.setRequired(false);
472+
FacilityReferenceDto noFacilityRef = FacadeProvider.getFacilityFacade().getByUuid(FacilityDto.NONE_FACILITY_UUID).toReference();
473+
facility.addItem(noFacilityRef);
474+
facility.setValue(noFacilityRef);
467475
}
468-
updateFacilityDetails(facility, facilityDetails);
469476
});
470477
facilityTypeGroup.addValueChangeListener(e -> {
471478
FieldHelper.updateEnumData(facilityType, FacilityType.getAccommodationTypes((FacilityTypeGroup) facilityTypeGroup.getValue()));
@@ -494,7 +501,7 @@ protected void addFields() {
494501
tfReportLat.setConverter(new StringToAngularLocationConverter());
495502
TextField tfReportLon = addField(CaseDataDto.REPORT_LON, TextField.class);
496503
tfReportLon.setConverter(new StringToAngularLocationConverter());
497-
TextField tfReportAccuracy = addField(CaseDataDto.REPORT_LAT_LON_ACCURACY, TextField.class);
504+
addField(CaseDataDto.REPORT_LAT_LON_ACCURACY, TextField.class);
498505

499506
DateField dfFollowUpUntil = null;
500507
if (caseFollowUpEnabled) {
@@ -696,6 +703,17 @@ protected void addFields() {
696703
Arrays.asList(HospitalWardType.OTHER),
697704
true);
698705
}
706+
FieldHelper.setVisibleWhen(
707+
facilityOrHome,
708+
Arrays.asList(facilityTypeGroup, facilityType, facility),
709+
Collections.singletonList(TypeOfPlace.FACILITY),
710+
false);
711+
FieldHelper.setRequiredWhen(
712+
facilityOrHome,
713+
Arrays.asList(facilityTypeGroup, facilityType, facility),
714+
Collections.singletonList(TypeOfPlace.FACILITY),
715+
false,
716+
null);
699717

700718
/// CLINICIAN FIELDS
701719
if (UserProvider.getCurrent().hasUserRight(UserRight.CASE_MANAGEMENT_ACCESS)) {
@@ -791,9 +809,7 @@ protected void addFields() {
791809
setEpidNumberError(epidField, assignNewEpidNumberButton, epidNumberWarningLabel, (String) f.getProperty().getValue());
792810
});
793811

794-
// Set health facility details visibility and caption
795812
if (getValue().getHealthFacility() != null) {
796-
boolean otherHealthFacility = getValue().getHealthFacility().getUuid().equals(FacilityDto.OTHER_FACILITY_UUID);
797813
boolean noneHealthFacility = getValue().getHealthFacility().getUuid().equals(FacilityDto.NONE_FACILITY_UUID);
798814

799815
FacilityType caseFacilityType = getValue().getFacilityType();

0 commit comments

Comments
 (0)