Search in sources :

Example 1 with MeansOfImmunization

use of de.symeda.sormas.api.immunization.MeansOfImmunization in project SORMAS-Project by hzi-braunschweig.

the class ImmunizationDataForm method addFields.

@SuppressWarnings("deprecation")
@Override
protected void addFields() {
    TextField immunizationUuuidField = addField(ImmunizationDto.UUID, TextField.class);
    immunizationUuuidField.setReadOnly(true);
    TextField externalIdField = addField(ImmunizationDto.EXTERNAL_ID, TextField.class);
    style(externalIdField, ERROR_COLOR_PRIMARY);
    addField(ImmunizationDto.REPORT_DATE, DateField.class);
    addField(ImmunizationDto.REPORTING_USER, ComboBox.class);
    ComboBox cbDisease = addDiseaseField(ImmunizationDto.DISEASE, false);
    addField(ImmunizationDto.DISEASE_DETAILS, TextField.class);
    ComboBox meansOfImmunizationField = addField(ImmunizationDto.MEANS_OF_IMMUNIZATION, ComboBox.class);
    addField(ImmunizationDto.MEANS_OF_IMMUNIZATION_DETAILS, TextField.class);
    overwriteImmunizationManagementStatus = addCustomField(OVERWRITE_IMMUNIZATION_MANAGEMENT_STATUS, Boolean.class, CheckBox.class);
    overwriteImmunizationManagementStatus.addStyleName(VSPACE_3);
    ComboBox managementStatusField = addField(ImmunizationDto.IMMUNIZATION_MANAGEMENT_STATUS, ComboBox.class);
    managementStatusField.setNullSelectionAllowed(false);
    managementStatusField.setEnabled(false);
    ComboBox immunizationStatusField = addField(ImmunizationDto.IMMUNIZATION_STATUS, ComboBox.class);
    immunizationStatusField.setEnabled(false);
    addField(ImmunizationDto.PREVIOUS_INFECTION, NullableOptionGroup.class);
    addField(ImmunizationDto.LAST_INFECTION_DATE, DateField.class);
    ComboBox country = addInfrastructureField(ImmunizationDto.COUNTRY);
    country.addItems(FacadeProvider.getCountryFacade().getAllActiveAsReference());
    TextArea descriptionField = addField(ImmunizationDto.ADDITIONAL_DETAILS, TextArea.class, new ResizableTextAreaWrapper<>());
    descriptionField.setRows(2);
    descriptionField.setDescription(I18nProperties.getPrefixDescription(ImmunizationDto.I18N_PREFIX, ImmunizationDto.ADDITIONAL_DETAILS, "") + "\n" + I18nProperties.getDescription(Descriptions.descGdpr));
    Label jurisdictionHeadingLabel = new Label(I18nProperties.getString(Strings.headingResponsibleJurisdiction));
    jurisdictionHeadingLabel.addStyleName(H3);
    getContent().addComponent(jurisdictionHeadingLabel, RESPONSIBLE_JURISDICTION_HEADING_LOC);
    ComboBox responsibleRegion = addInfrastructureField(ImmunizationDto.RESPONSIBLE_REGION);
    responsibleRegion.setRequired(true);
    ComboBox responsibleDistrictCombo = addInfrastructureField(ImmunizationDto.RESPONSIBLE_DISTRICT);
    responsibleDistrictCombo.setRequired(true);
    ComboBox responsibleCommunityCombo = addInfrastructureField(ImmunizationDto.RESPONSIBLE_COMMUNITY);
    responsibleCommunityCombo.setNullSelectionAllowed(true);
    responsibleCommunityCombo.addStyleName(SOFT_REQUIRED);
    InfrastructureFieldsHelper.initInfrastructureFields(responsibleRegion, responsibleDistrictCombo, responsibleCommunityCombo);
    facilityTypeGroup = ComboBoxHelper.createComboBoxV7();
    facilityTypeGroup.setId("typeGroup");
    facilityTypeGroup.setCaption(I18nProperties.getCaption(Captions.Facility_typeGroup));
    facilityTypeGroup.setWidth(100, Unit.PERCENTAGE);
    facilityTypeGroup.addItems(FacilityTypeGroup.values());
    getContent().addComponent(facilityTypeGroup, FACILITY_TYPE_GROUP_LOC);
    ComboBox facilityType = addField(ImmunizationDto.FACILITY_TYPE);
    ComboBox facilityCombo = addInfrastructureField(ImmunizationDto.HEALTH_FACILITY);
    facilityCombo.setImmediate(true);
    TextField facilityDetails = addField(ImmunizationDto.HEALTH_FACILITY_DETAILS, TextField.class);
    facilityDetails.setVisible(false);
    DateField startDate = addField(ImmunizationDto.START_DATE, DateField.class);
    DateField endDate = addDateField(ImmunizationDto.END_DATE, DateField.class, -1);
    DateComparisonValidator.addStartEndValidators(startDate, endDate);
    DateField validFrom = addDateField(ImmunizationDto.VALID_FROM, DateField.class, -1);
    DateField validUntil = addDateField(ImmunizationDto.VALID_UNTIL, DateField.class, -1);
    DateComparisonValidator.addStartEndValidators(validFrom, validUntil);
    MeansOfImmunization meansOfImmunizationValue = (MeansOfImmunization) meansOfImmunizationField.getValue();
    boolean isVaccinationVisibleInitial = shouldShowVaccinationFields(meansOfImmunizationValue);
    Label vaccinationHeadingLabel = new Label(I18nProperties.getString(Strings.headingVaccination));
    vaccinationHeadingLabel.addStyleName(H3);
    getContent().addComponent(vaccinationHeadingLabel, VACCINATION_HEADING_LOC);
    vaccinationHeadingLabel.setVisible(isVaccinationVisibleInitial);
    Field numberOfDosesField = addField(ImmunizationDto.NUMBER_OF_DOSES);
    numberOfDosesField.addValidator(new NumberValidator(I18nProperties.getValidationError(Validations.vaccineDosesFormat), 1, 10, false));
    numberOfDosesField.setVisible(isVaccinationVisibleInitial);
    Field numberOfDosesDetailsField = addField(ImmunizationDto.NUMBER_OF_DOSES_DETAILS);
    numberOfDosesDetailsField.setReadOnly(true);
    numberOfDosesDetailsField.setVisible(isVaccinationVisibleInitial && getValue().getNumberOfDosesDetails() != null);
    VaccinationsField vaccinationsField = addField(ImmunizationDto.VACCINATIONS, VaccinationsField.class);
    FieldHelper.setVisibleWhen(getFieldGroup(), ImmunizationDto.VACCINATIONS, ImmunizationDto.MEANS_OF_IMMUNIZATION, Arrays.asList(MeansOfImmunization.VACCINATION, MeansOfImmunization.VACCINATION_RECOVERY), false);
    cbDisease.addValueChangeListener(e -> vaccinationsField.setDisease((Disease) cbDisease.getValue()));
    Label recoveryHeadingLabel = new Label(I18nProperties.getString(Strings.headingRecovery));
    recoveryHeadingLabel.addStyleName(H3);
    getContent().addComponent(recoveryHeadingLabel, RECOVERY_HEADING_LOC);
    recoveryHeadingLabel.setVisible(shouldShowRecoveryFields(meansOfImmunizationValue));
    DateField positiveTestResultDate = addField(ImmunizationDto.POSITIVE_TEST_RESULT_DATE, DateField.class);
    DateField recoveryDate = addField(ImmunizationDto.RECOVERY_DATE, DateField.class);
    Button linkImmunizationToCaseButton;
    if (relatedCase != null) {
        linkImmunizationToCaseButton = ButtonHelper.createButton(Captions.openLinkedCaseToImmunizationButton, e -> ControllerProvider.getCaseController().navigateToCase(relatedCase.getUuid()), ValoTheme.BUTTON_PRIMARY, FORCE_CAPTION);
    } else {
        linkImmunizationToCaseButton = ButtonHelper.createButton(Captions.linkImmunizationToCaseButton, e -> buildAndOpenSearchSpecificCaseWindow(), ValoTheme.BUTTON_PRIMARY, FORCE_CAPTION);
    }
    getContent().addComponent(linkImmunizationToCaseButton, LINK_IMMUNIZATION_TO_CASE_BTN_LOC);
    linkImmunizationToCaseButton.setVisible(shouldShowRecoveryFields(meansOfImmunizationValue));
    // Set initial visibilities & accesses
    initializeVisibilitiesAndAllowedVisibilities();
    setRequired(true, ImmunizationDto.REPORT_DATE, ImmunizationDto.DISEASE, ImmunizationDto.MEANS_OF_IMMUNIZATION);
    FieldHelper.setVisibleWhen(getFieldGroup(), Arrays.asList(ImmunizationDto.DISEASE_DETAILS), ImmunizationDto.DISEASE, Arrays.asList(Disease.OTHER), true);
    FieldHelper.setRequiredWhen(getFieldGroup(), ImmunizationDto.DISEASE, Arrays.asList(ImmunizationDto.DISEASE_DETAILS), Arrays.asList(Disease.OTHER));
    FieldHelper.setVisibleWhen(getFieldGroup(), Collections.singletonList(ImmunizationDto.MEANS_OF_IMMUNIZATION_DETAILS), ImmunizationDto.MEANS_OF_IMMUNIZATION, Collections.singletonList(MeansOfImmunization.OTHER), true);
    overwriteImmunizationManagementStatus.addValueChangeListener(valueChangeEvent -> {
        boolean selectedValue = (boolean) valueChangeEvent.getProperty().getValue();
        if (!selectedValue) {
            ImmunizationManagementStatus value = getValue().getImmunizationManagementStatus();
            managementStatusField.setValue(value);
        }
        managementStatusField.setEnabled(selectedValue);
        ignoreMeansOfImmunizationChange = selectedValue;
    });
    meansOfImmunizationField.addValueChangeListener(valueChangeEvent -> {
        MeansOfImmunization meansOfImmunization = (MeansOfImmunization) valueChangeEvent.getProperty().getValue();
        boolean isVaccinationVisible = shouldShowVaccinationFields(meansOfImmunization);
        boolean isRecoveryVisible = shouldShowRecoveryFields(meansOfImmunization);
        if (!ignoreMeansOfImmunizationChange) {
            if (MeansOfImmunization.RECOVERY.equals(meansOfImmunization) || MeansOfImmunization.OTHER.equals(meansOfImmunization)) {
                managementStatusField.setValue(ImmunizationManagementStatus.COMPLETED);
                if (CollectionUtils.isNotEmpty(vaccinationsField.getValue())) {
                    VaadinUiUtil.showConfirmationPopup(I18nProperties.getString(Strings.headingDeleteVaccinations), new Label(I18nProperties.getString(Strings.messageDeleteImmunizationVaccinations)), questionWindow -> {
                        ConfirmationComponent confirmationComponent = new ConfirmationComponent(false) {

                            private static final long serialVersionUID = 1L;

                            @Override
                            protected void onConfirm() {
                                vaccinationsField.clear();
                                previousMeansOfImmunization = meansOfImmunization;
                                if (!isVaccinationVisible) {
                                    numberOfDosesField.setValue(null);
                                }
                                questionWindow.close();
                            }

                            @Override
                            protected void onCancel() {
                                ignoreMeansOfImmunizationChange = true;
                                meansOfImmunizationField.setValue(previousMeansOfImmunization);
                                ignoreMeansOfImmunizationChange = false;
                                questionWindow.close();
                            }
                        };
                        confirmationComponent.getConfirmButton().setCaption(I18nProperties.getCaption(Captions.actionConfirm));
                        confirmationComponent.getCancelButton().setCaption(I18nProperties.getCaption(Captions.actionCancel));
                        return confirmationComponent;
                    }, null);
                } else {
                    previousMeansOfImmunization = meansOfImmunization;
                }
            } else {
                previousMeansOfImmunization = meansOfImmunization;
            }
        }
        vaccinationHeadingLabel.setVisible(isVaccinationVisible);
        numberOfDosesField.setVisible(isVaccinationVisible);
        numberOfDosesDetailsField.setVisible(isVaccinationVisible && getValue().getNumberOfDosesDetails() != null);
        recoveryHeadingLabel.setVisible(isRecoveryVisible);
        positiveTestResultDate.setVisible(isRecoveryVisible);
        recoveryDate.setVisible(isRecoveryVisible);
    });
    managementStatusField.addValueChangeListener(valueChangeEvent -> {
        ImmunizationManagementStatus managementStatusValue = (ImmunizationManagementStatus) valueChangeEvent.getProperty().getValue();
        switch(managementStatusValue) {
            case SCHEDULED:
            case ONGOING:
                immunizationStatusField.setValue(ImmunizationStatus.PENDING);
                break;
            case COMPLETED:
                immunizationStatusField.setValue(ImmunizationStatus.ACQUIRED);
                break;
            case CANCELED:
                immunizationStatusField.setValue(ImmunizationStatus.NOT_ACQUIRED);
                break;
            default:
                break;
        }
    });
    setReadOnly(true, ImmunizationDto.REPORTING_USER);
    FieldHelper.setVisibleWhen(getFieldGroup(), ImmunizationDto.LAST_INFECTION_DATE, ImmunizationDto.PREVIOUS_INFECTION, Collections.singletonList(YesNoUnknown.YES), true);
    meansOfImmunizationField.addValueChangeListener(e -> {
        if (shouldShowRecoveryFields((MeansOfImmunization) e.getProperty().getValue())) {
            positiveTestResultDate.setVisible(true);
            recoveryDate.setVisible(true);
            linkImmunizationToCaseButton.setVisible(true);
        } else {
            positiveTestResultDate.setVisible(false);
            recoveryDate.setVisible(false);
            linkImmunizationToCaseButton.setVisible(false);
        }
    });
    responsibleDistrictCombo.addValueChangeListener(e -> {
        FieldHelper.removeItems(facilityCombo);
        DistrictReferenceDto districtDto = (DistrictReferenceDto) e.getProperty().getValue();
        if (districtDto != null && facilityType.getValue() != null) {
            FieldHelper.updateItems(facilityCombo, FacadeProvider.getFacilityFacade().getActiveFacilitiesByDistrictAndType(districtDto, (FacilityType) facilityType.getValue(), true, false));
        }
    });
    responsibleCommunityCombo.addValueChangeListener(e -> {
        FieldHelper.removeItems(facilityCombo);
        CommunityReferenceDto communityDto = (CommunityReferenceDto) e.getProperty().getValue();
        if (facilityType.getValue() != null) {
            FieldHelper.updateItems(facilityCombo, communityDto != null ? FacadeProvider.getFacilityFacade().getActiveFacilitiesByCommunityAndType(communityDto, (FacilityType) facilityType.getValue(), true, false) : responsibleDistrictCombo.getValue() != null ? FacadeProvider.getFacilityFacade().getActiveFacilitiesByDistrictAndType((DistrictReferenceDto) responsibleDistrictCombo.getValue(), (FacilityType) facilityType.getValue(), true, false) : null);
        }
    });
    facilityTypeGroup.addValueChangeListener(e -> {
        if (facilityTypeGroup.getValue() == null) {
            facilityType.clear();
        }
        FieldHelper.updateEnumData(facilityType, facilityTypeGroup.getValue() != null ? FacilityType.getTypes((FacilityTypeGroup) facilityTypeGroup.getValue()) : Arrays.stream(FacilityType.values()).collect(Collectors.toList()));
    });
    facilityType.addValueChangeListener(e -> {
        FieldHelper.removeItems(facilityCombo);
        if (facilityType.getValue() != null && responsibleDistrictCombo.getValue() != null) {
            if (responsibleCommunityCombo.getValue() != null) {
                FieldHelper.updateItems(facilityCombo, FacadeProvider.getFacilityFacade().getActiveFacilitiesByCommunityAndType((CommunityReferenceDto) responsibleCommunityCombo.getValue(), (FacilityType) facilityType.getValue(), true, false));
            } else {
                FieldHelper.updateItems(facilityCombo, FacadeProvider.getFacilityFacade().getActiveFacilitiesByDistrictAndType((DistrictReferenceDto) responsibleDistrictCombo.getValue(), (FacilityType) facilityType.getValue(), true, false));
            }
        }
    });
    facilityCombo.addValueChangeListener(e -> {
        updateFacilityFields(facilityCombo, facilityDetails);
    });
    addValueChangeListener(e -> {
        FacilityType facilityTypeValue = getValue().getFacilityType();
        if (facilityTypeValue != null) {
            facilityTypeGroup.setValue(facilityTypeValue.getFacilityTypeGroup());
            facilityCombo.setValue(getValue().getHealthFacility());
            facilityDetails.setValue(getValue().getHealthFacilityDetails());
        }
    });
}
Also used : AbstractEditForm(de.symeda.sormas.ui.utils.AbstractEditForm) ImmunizationManagementStatus(de.symeda.sormas.api.immunization.ImmunizationManagementStatus) H3(de.symeda.sormas.ui.utils.CssStyles.H3) Arrays(java.util.Arrays) CheckBox(com.vaadin.v7.ui.CheckBox) I18nProperties(de.symeda.sormas.api.i18n.I18nProperties) UI(com.vaadin.ui.UI) Window(com.vaadin.ui.Window) MeansOfImmunization(de.symeda.sormas.api.immunization.MeansOfImmunization) InfrastructureFieldsHelper(de.symeda.sormas.ui.utils.InfrastructureFieldsHelper) ControllerProvider(de.symeda.sormas.ui.ControllerProvider) YesNoUnknown(de.symeda.sormas.api.utils.YesNoUnknown) ComboBoxHelper(de.symeda.sormas.ui.utils.ComboBoxHelper) VSPACE_3(de.symeda.sormas.ui.utils.CssStyles.VSPACE_3) FORCE_CAPTION(de.symeda.sormas.ui.utils.CssStyles.FORCE_CAPTION) LayoutUtil.fluidRow(de.symeda.sormas.ui.utils.LayoutUtil.fluidRow) ValoTheme(com.vaadin.ui.themes.ValoTheme) ConfirmationComponent(de.symeda.sormas.ui.utils.ConfirmationComponent) ComboBox(com.vaadin.v7.ui.ComboBox) FacilityType(de.symeda.sormas.api.infrastructure.facility.FacilityType) Field(com.vaadin.v7.ui.Field) FieldHelper(de.symeda.sormas.ui.utils.FieldHelper) Collectors(java.util.stream.Collectors) CommunityReferenceDto(de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto) LayoutUtil.fluidColumnLoc(de.symeda.sormas.ui.utils.LayoutUtil.fluidColumnLoc) TextField(com.vaadin.v7.ui.TextField) Descriptions(de.symeda.sormas.api.i18n.Descriptions) ImmunizationDto(de.symeda.sormas.api.immunization.ImmunizationDto) UiFieldAccessCheckers(de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers) VaccinationsField(de.symeda.sormas.ui.vaccination.VaccinationsField) FacilityDto(de.symeda.sormas.api.infrastructure.facility.FacilityDto) DateComparisonValidator(de.symeda.sormas.ui.utils.DateComparisonValidator) VaadinUiUtil(de.symeda.sormas.ui.utils.VaadinUiUtil) SearchSpecificLayout(de.symeda.sormas.ui.SearchSpecificLayout) FacadeProvider(de.symeda.sormas.api.FacadeProvider) Converter(com.vaadin.v7.data.util.converter.Converter) CaseReferenceDto(de.symeda.sormas.api.caze.CaseReferenceDto) CollectionUtils(org.apache.commons.collections.CollectionUtils) SormasUI(de.symeda.sormas.ui.SormasUI) Label(com.vaadin.ui.Label) ERROR_COLOR_PRIMARY(de.symeda.sormas.ui.utils.CssStyles.ERROR_COLOR_PRIMARY) NullableOptionGroup(de.symeda.sormas.ui.utils.NullableOptionGroup) LayoutUtil.fluidRowLocs(de.symeda.sormas.ui.utils.LayoutUtil.fluidRowLocs) DateField(com.vaadin.v7.ui.DateField) ButtonHelper(de.symeda.sormas.ui.utils.ButtonHelper) CssStyles.style(de.symeda.sormas.ui.utils.CssStyles.style) Validations(de.symeda.sormas.api.i18n.Validations) DistrictReferenceDto(de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto) ResizableTextAreaWrapper(de.symeda.sormas.ui.utils.ResizableTextAreaWrapper) SOFT_REQUIRED(de.symeda.sormas.ui.utils.CssStyles.SOFT_REQUIRED) Captions(de.symeda.sormas.api.i18n.Captions) FacilityReferenceDto(de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto) Button(com.vaadin.ui.Button) Disease(de.symeda.sormas.api.Disease) TextArea(com.vaadin.v7.ui.TextArea) FacilityTypeGroup(de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup) ImmunizationStatus(de.symeda.sormas.api.immunization.ImmunizationStatus) FieldVisibilityCheckers(de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers) NumberValidator(de.symeda.sormas.ui.utils.NumberValidator) Strings(de.symeda.sormas.api.i18n.Strings) Collections(java.util.Collections) Disease(de.symeda.sormas.api.Disease) TextArea(com.vaadin.v7.ui.TextArea) ComboBox(com.vaadin.v7.ui.ComboBox) Label(com.vaadin.ui.Label) MeansOfImmunization(de.symeda.sormas.api.immunization.MeansOfImmunization) VaccinationsField(de.symeda.sormas.ui.vaccination.VaccinationsField) DistrictReferenceDto(de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto) ImmunizationManagementStatus(de.symeda.sormas.api.immunization.ImmunizationManagementStatus) Field(com.vaadin.v7.ui.Field) TextField(com.vaadin.v7.ui.TextField) VaccinationsField(de.symeda.sormas.ui.vaccination.VaccinationsField) DateField(com.vaadin.v7.ui.DateField) CommunityReferenceDto(de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto) NumberValidator(de.symeda.sormas.ui.utils.NumberValidator) Button(com.vaadin.ui.Button) CheckBox(com.vaadin.v7.ui.CheckBox) TextField(com.vaadin.v7.ui.TextField) DateField(com.vaadin.v7.ui.DateField) ConfirmationComponent(de.symeda.sormas.ui.utils.ConfirmationComponent) FacilityType(de.symeda.sormas.api.infrastructure.facility.FacilityType)

Example 2 with MeansOfImmunization

use of de.symeda.sormas.api.immunization.MeansOfImmunization in project SORMAS-Project by hzi-braunschweig.

the class ImmunizationEditFragment method onAfterLayoutBinding.

@Override
public void onAfterLayoutBinding(final FragmentImmunizationEditLayoutBinding contentBinding) {
    InfrastructureDaoHelper.initializeHealthFacilityDetailsFieldVisibility(contentBinding.immunizationHealthFacility, contentBinding.immunizationHealthFacilityDetails);
    // Initialize ControlSpinnerFields
    contentBinding.immunizationDisease.initializeSpinner(diseaseList);
    contentBinding.immunizationImmunizationStatus.initializeSpinner(immunizationStatusList);
    contentBinding.immunizationImmunizationStatus.setEnabled(false);
    contentBinding.immunizationImmunizationManagementStatus.initializeSpinner(immunizationManagementStatusList);
    contentBinding.immunizationMeansOfImmunization.initializeSpinner(meansOfImmunizationList);
    // Initialize ControlDateFields
    contentBinding.immunizationReportDate.initializeDateField(getFragmentManager());
    contentBinding.immunizationRecoveryDate.initializeDateField(getFragmentManager());
    contentBinding.immunizationPositiveTestResultDate.initializeDateField(getFragmentManager());
    contentBinding.immunizationStartDate.initializeDateField(getFragmentManager());
    contentBinding.immunizationEndDate.initializeDateField(getFragmentManager());
    ValidationHelper.initDateIntervalValidator(contentBinding.immunizationStartDate, contentBinding.immunizationEndDate);
    contentBinding.immunizationValidFrom.initializeDateField(getFragmentManager());
    contentBinding.immunizationValidUntil.initializeDateField(getFragmentManager());
    ValidationHelper.initDateIntervalValidator(contentBinding.immunizationValidFrom, contentBinding.immunizationValidUntil);
    contentBinding.immunizationLastInfectionDate.initializeDateField(getFragmentManager());
    updateMeansOfImmunizationFields(contentBinding);
    contentBinding.immunizationMeansOfImmunization.addValueChangedListener(e -> {
        MeansOfImmunization meansOfImmunization = (MeansOfImmunization) e.getValue();
        if (currentMeansOfImmunization != meansOfImmunization) {
            if ((meansOfImmunization == MeansOfImmunization.OTHER || meansOfImmunization == MeansOfImmunization.RECOVERY) && CollectionUtils.isNotEmpty(record.getVaccinations())) {
                removeVaccinationsConfirmation(contentBinding);
            } else {
                updateMeansOfImmunizationFields(contentBinding);
                updateImmunizationStatus(contentBinding);
            }
        }
    });
    contentBinding.overwriteImmunizationManagementStatusCheckBox.addValueChangedListener(e -> contentBinding.immunizationImmunizationManagementStatus.setEnabled(Boolean.TRUE.equals(e.getValue())));
    contentBinding.immunizationImmunizationManagementStatus.addValueChangedListener(e -> {
        if (e.getValue() == ImmunizationManagementStatus.SCHEDULED || e.getValue() == ImmunizationManagementStatus.ONGOING) {
            contentBinding.immunizationImmunizationStatus.setValue(ImmunizationStatus.PENDING);
        }
        if (e.getValue() == ImmunizationManagementStatus.COMPLETED) {
            contentBinding.immunizationImmunizationStatus.setValue(ImmunizationStatus.ACQUIRED);
        }
        if (e.getValue() == ImmunizationManagementStatus.CANCELED) {
            contentBinding.immunizationImmunizationStatus.setValue(ImmunizationStatus.NOT_ACQUIRED);
        }
    });
    contentBinding.immunizationImmunizationManagementStatus.setEnabled(false);
    if (!(record.getHealthFacility() == null || (record.getHealthFacility() != null && FacilityDto.NONE_FACILITY_UUID.equals(record.getHealthFacility().getUuid())))) {
        final FacilityType facilityType = record.getFacilityType();
        if (facilityType != null) {
            contentBinding.facilityTypeGroup.setValue(facilityType.getFacilityTypeGroup());
        }
    }
    if (record.getMeansOfImmunization() == MeansOfImmunization.RECOVERY || record.getMeansOfImmunization() == MeansOfImmunization.VACCINATION_RECOVERY) {
        if (record.getRelatedCase() != null) {
            contentBinding.linkCase.setVisibility(View.GONE);
        } else {
            contentBinding.openLinkedCase.setVisibility(View.GONE);
        }
    } else {
        contentBinding.immunizationRecoveryLayout.setVisibility(View.GONE);
        contentBinding.linkCase.setVisibility(View.GONE);
        contentBinding.openLinkedCase.setVisibility(View.GONE);
    }
}
Also used : MeansOfImmunization(de.symeda.sormas.api.immunization.MeansOfImmunization) FacilityType(de.symeda.sormas.api.infrastructure.facility.FacilityType)

Example 3 with MeansOfImmunization

use of de.symeda.sormas.api.immunization.MeansOfImmunization in project SORMAS-Project by hzi-braunschweig.

the class ImmunizationEditFragment method updateMeansOfImmunizationFields.

private void updateMeansOfImmunizationFields(FragmentImmunizationEditLayoutBinding contentBinding) {
    MeansOfImmunization meansOfImmunizationValue = (MeansOfImmunization) contentBinding.immunizationMeansOfImmunization.getValue();
    boolean isVaccination = MeansOfImmunization.isVaccination(meansOfImmunizationValue);
    contentBinding.immunizationVaccinationLayout.setVisibility(isVaccination ? View.VISIBLE : View.GONE);
    contentBinding.immunizationNumberOfDoses.setEnabled(isVaccination);
    if (!isVaccination) {
        contentBinding.immunizationNumberOfDoses.setValue(null);
    }
    boolean isRecovery = MeansOfImmunization.isRecovery(meansOfImmunizationValue);
    contentBinding.immunizationRecoveryLayout.setVisibility(isRecovery ? View.VISIBLE : View.GONE);
    contentBinding.immunizationRecoveryDate.setEnabled(isRecovery);
    contentBinding.immunizationPositiveTestResultDate.setEnabled(isRecovery);
    if (isRecovery) {
        boolean isCaseLinked = record.getRelatedCase() != null;
        contentBinding.openLinkedCase.setVisibility(isCaseLinked ? View.VISIBLE : View.GONE);
        contentBinding.linkCase.setVisibility(isCaseLinked ? View.GONE : View.VISIBLE);
    } else {
        contentBinding.immunizationRecoveryDate.setValue(null);
        contentBinding.immunizationPositiveTestResultDate.setValue(null);
    }
    meansOfImmunizationChange.accept(meansOfImmunizationValue);
    currentMeansOfImmunization = meansOfImmunizationValue;
}
Also used : MeansOfImmunization(de.symeda.sormas.api.immunization.MeansOfImmunization)

Example 4 with MeansOfImmunization

use of de.symeda.sormas.api.immunization.MeansOfImmunization in project SORMAS-Project by hzi-braunschweig.

the class ImmunizationEditFragment method updateImmunizationStatus.

private void updateImmunizationStatus(FragmentImmunizationEditLayoutBinding contentBinding) {
    if (Boolean.TRUE.equals(contentBinding.overwriteImmunizationManagementStatusCheckBox.getValue())) {
        return;
    }
    MeansOfImmunization meansOfImmunizationValue = (MeansOfImmunization) contentBinding.immunizationMeansOfImmunization.getValue();
    if (meansOfImmunizationValue == MeansOfImmunization.OTHER || meansOfImmunizationValue == MeansOfImmunization.RECOVERY) {
        contentBinding.immunizationImmunizationManagementStatus.setValue(ImmunizationManagementStatus.COMPLETED);
        contentBinding.overwriteImmunizationManagementStatusCheckBox.setValue(false);
        contentBinding.immunizationImmunizationManagementStatus.setEnabled(false);
    }
    if (MeansOfImmunization.isVaccination(meansOfImmunizationValue)) {
        ImmunizationStatus immunizationStatus = (ImmunizationStatus) contentBinding.immunizationImmunizationStatus.getValue();
        if (immunizationStatus != ImmunizationStatus.NOT_ACQUIRED && immunizationStatus != ImmunizationStatus.EXPIRED) {
            Integer numberOfDoses = null;
            try {
                numberOfDoses = Integer.valueOf(contentBinding.immunizationNumberOfDoses.getValue());
            } catch (Exception e) {
                numberOfDoses = null;
            }
            if (numberOfDoses != null && CollectionUtils.isNotEmpty(record.getVaccinations())) {
                if (record.getVaccinations().size() >= numberOfDoses) {
                    contentBinding.immunizationImmunizationManagementStatus.setValue(ImmunizationManagementStatus.COMPLETED);
                } else {
                    contentBinding.immunizationImmunizationManagementStatus.setValue(ImmunizationManagementStatus.ONGOING);
                }
            }
        }
    }
}
Also used : ImmunizationStatus(de.symeda.sormas.api.immunization.ImmunizationStatus) MeansOfImmunization(de.symeda.sormas.api.immunization.MeansOfImmunization)

Example 5 with MeansOfImmunization

use of de.symeda.sormas.api.immunization.MeansOfImmunization in project SORMAS-Project by hzi-braunschweig.

the class ImmunizationEditActivity method buildEditFragment.

@Override
protected BaseEditFragment buildEditFragment(PageMenuItem menuItem, Immunization activityRootData) {
    ImmunizationSection section = ImmunizationSection.fromOrdinal(menuItem.getPosition());
    BaseEditFragment fragment;
    switch(section) {
        case PERSON_INFO:
            fragment = PersonEditFragment.newInstance(activityRootData);
            break;
        case IMMUNIZATION_INFO:
            fragment = ImmunizationEditFragment.newInstance(activityRootData, meansOfImmunization -> {
                this.updatePageMenuItems(meansOfImmunization);
                updatePageMenu();
            });
            break;
        case VACCINATIONS:
            fragment = ImmunizationEditVaccinationListFragment.newInstance(activityRootData);
            break;
        default:
            throw new IndexOutOfBoundsException(DataHelper.toStringNullable(section));
    }
    return fragment;
}
Also used : Context(android.content.Context) AsyncTaskResult(de.symeda.sormas.app.core.async.AsyncTaskResult) PageMenuItem(de.symeda.sormas.app.component.menu.PageMenuItem) MeansOfImmunization(de.symeda.sormas.api.immunization.MeansOfImmunization) TaskResultHolder(de.symeda.sormas.app.core.async.TaskResultHolder) ImmunizationEditAuthorization(de.symeda.sormas.app.backend.immunization.ImmunizationEditAuthorization) DaoException(de.symeda.sormas.app.backend.common.DaoException) ImmunizationSection(de.symeda.sormas.app.immunization.ImmunizationSection) ERROR(de.symeda.sormas.app.core.notification.NotificationType.ERROR) NotificationHelper(de.symeda.sormas.app.core.notification.NotificationHelper) PersonEditFragment(de.symeda.sormas.app.person.edit.PersonEditFragment) BaseEditActivity(de.symeda.sormas.app.BaseEditActivity) ImmunizationCriteria(de.symeda.sormas.app.backend.immunization.ImmunizationCriteria) Bundler(de.symeda.sormas.app.util.Bundler) DataHelper(de.symeda.sormas.api.utils.DataHelper) AsyncTask(android.os.AsyncTask) VaccinationNewActivity(de.symeda.sormas.app.immunization.vaccination.VaccinationNewActivity) ValidationException(de.symeda.sormas.api.utils.ValidationException) BaseActivity(de.symeda.sormas.app.BaseActivity) R(de.symeda.sormas.app.R) FragmentValidator(de.symeda.sormas.app.component.validation.FragmentValidator) ImmunizationSimilarityCriteria(de.symeda.sormas.app.backend.immunization.ImmunizationSimilarityCriteria) List(java.util.List) Disease(de.symeda.sormas.api.Disease) Immunization(de.symeda.sormas.app.backend.immunization.Immunization) DatabaseHelper(de.symeda.sormas.app.backend.common.DatabaseHelper) BaseEditFragment(de.symeda.sormas.app.BaseEditFragment) WARNING(de.symeda.sormas.app.core.notification.NotificationType.WARNING) SavingAsyncTask(de.symeda.sormas.app.core.async.SavingAsyncTask) ImmunizationSection(de.symeda.sormas.app.immunization.ImmunizationSection) BaseEditFragment(de.symeda.sormas.app.BaseEditFragment)

Aggregations

MeansOfImmunization (de.symeda.sormas.api.immunization.MeansOfImmunization)8 ImmunizationManagementStatus (de.symeda.sormas.api.immunization.ImmunizationManagementStatus)3 Cursor (android.database.Cursor)2 Disease (de.symeda.sormas.api.Disease)2 ImmunizationStatus (de.symeda.sormas.api.immunization.ImmunizationStatus)2 FacilityType (de.symeda.sormas.api.infrastructure.facility.FacilityType)2 ActivityAsCase (de.symeda.sormas.app.backend.activityascase.ActivityAsCase)2 Campaign (de.symeda.sormas.app.backend.campaign.Campaign)2 CampaignFormData (de.symeda.sormas.app.backend.campaign.data.CampaignFormData)2 CampaignFormMeta (de.symeda.sormas.app.backend.campaign.form.CampaignFormMeta)2 Case (de.symeda.sormas.app.backend.caze.Case)2 MaternalHistory (de.symeda.sormas.app.backend.caze.maternalhistory.MaternalHistory)2 PortHealthInfo (de.symeda.sormas.app.backend.caze.porthealthinfo.PortHealthInfo)2 DiseaseClassificationCriteria (de.symeda.sormas.app.backend.classification.DiseaseClassificationCriteria)2 ClinicalCourse (de.symeda.sormas.app.backend.clinicalcourse.ClinicalCourse)2 ClinicalVisit (de.symeda.sormas.app.backend.clinicalcourse.ClinicalVisit)2 HealthConditions (de.symeda.sormas.app.backend.clinicalcourse.HealthConditions)2 Contact (de.symeda.sormas.app.backend.contact.Contact)2 CustomizableEnumValue (de.symeda.sormas.app.backend.customizableenum.CustomizableEnumValue)2 DiseaseConfiguration (de.symeda.sormas.app.backend.disease.DiseaseConfiguration)2