Search in sources :

Example 1 with FragmentCaseNewLayoutBinding

use of de.symeda.sormas.app.databinding.FragmentCaseNewLayoutBinding in project SORMAS-Project by hzi-braunschweig.

the class CaseNewFragment method onAfterLayoutBinding.

@Override
public void onAfterLayoutBinding(final FragmentCaseNewLayoutBinding contentBinding) {
    InfrastructureDaoHelper.initializeHealthFacilityDetailsFieldVisibility(contentBinding.caseDataHealthFacility, contentBinding.caseDataHealthFacilityDetails);
    InfrastructureDaoHelper.initializePointOfEntryDetailsFieldVisibility(contentBinding.caseDataPointOfEntry, contentBinding.caseDataPointOfEntryDetails);
    if (!ConfigProvider.isConfiguredServer(CountryHelper.COUNTRY_CODE_GERMANY) && !ConfigProvider.isConfiguredServer(CountryHelper.COUNTRY_CODE_SWITZERLAND)) {
        contentBinding.caseDataExternalID.setVisibility(GONE);
        contentBinding.caseDataExternalToken.setVisibility(GONE);
    } else {
        contentBinding.caseDataEpidNumber.setVisibility(GONE);
    }
    contentBinding.caseDataResponsibleRegion.setEnabled(false);
    contentBinding.caseDataResponsibleRegion.setRequired(false);
    contentBinding.caseDataResponsibleDistrict.setEnabled(false);
    contentBinding.caseDataResponsibleDistrict.setRequired(false);
    User user = ConfigProvider.getUser();
    if (user.getPointOfEntry() == null) {
        contentBinding.facilityOrHome.setValue(TypeOfPlace.FACILITY);
    }
    if (user.hasUserRole(UserRole.HOSPITAL_INFORMANT) && user.getHealthFacility() != null) {
        // Hospital Informants are not allowed to create cases in another health facility
        contentBinding.caseDataCommunity.setEnabled(false);
        contentBinding.caseDataCommunity.setRequired(false);
        contentBinding.caseDataHealthFacility.setEnabled(false);
        contentBinding.caseDataHealthFacility.setRequired(false);
        contentBinding.facilityOrHome.setEnabled(false);
        contentBinding.facilityTypeGroup.setEnabled(false);
        contentBinding.caseDataFacilityType.setEnabled(false);
        contentBinding.caseDataDifferentPlaceOfStayJurisdiction.setEnabled(false);
        contentBinding.caseDataDifferentPlaceOfStayJurisdiction.setVisibility(GONE);
    }
    if (user.hasUserRole(UserRole.POE_INFORMANT) && user.getPointOfEntry() != null) {
        contentBinding.caseDataPointOfEntry.setEnabled(false);
        contentBinding.caseDataPointOfEntry.setRequired(false);
    }
    if (user.hasUserRole(UserRole.COMMUNITY_INFORMANT) && user.getCommunity() != null) {
        // Community Informants are not allowed to create cases in another community
        contentBinding.caseDataCommunity.setEnabled(false);
        contentBinding.caseDataCommunity.setRequired(false);
    }
    // Disable personal details and disease fields when case is created from contact
    // or event person
    Bundler bundler = new Bundler(getArguments());
    if (bundler.getContactUuid() != null || bundler.getEventParticipantUuid() != null) {
        contentBinding.caseDataFirstName.setEnabled(false);
        contentBinding.caseDataLastName.setEnabled(false);
        contentBinding.personSex.setEnabled(false);
        contentBinding.personBirthdateYYYY.setEnabled(false);
        contentBinding.personBirthdateMM.setEnabled(false);
        contentBinding.personBirthdateDD.setEnabled(false);
        contentBinding.caseDataDisease.setEnabled(false);
        contentBinding.caseDataDiseaseDetails.setEnabled(false);
        contentBinding.caseDataPlagueType.setEnabled(false);
        contentBinding.caseDataDengueFeverType.setEnabled(false);
        contentBinding.caseDataHumanRabiesType.setEnabled(false);
    }
    // Set up port health visibilities
    if (UserRole.isPortHealthUser(ConfigProvider.getUser().getUserRoles())) {
        contentBinding.caseDataCaseOrigin.setVisibility(GONE);
        contentBinding.caseDataDisease.setVisibility(GONE);
        contentBinding.facilityOrHome.setVisibility(GONE);
        contentBinding.caseDataCommunity.setVisibility(GONE);
        contentBinding.facilityTypeFieldsLayout.setVisibility(GONE);
        contentBinding.caseDataHealthFacility.setVisibility(GONE);
        contentBinding.facilityTypeGroup.setRequired(false);
        contentBinding.caseDataFacilityType.setRequired(false);
        contentBinding.caseDataHealthFacility.setRequired(false);
        contentBinding.caseDataHealthFacilityDetails.setRequired(false);
    } else if (DatabaseHelper.getPointOfEntryDao().hasActiveEntriesInDistrict()) {
        if (record.getCaseOrigin() == CaseOrigin.IN_COUNTRY) {
            contentBinding.caseDataPointOfEntry.setRequired(false);
            contentBinding.caseDataPointOfEntry.setVisibility(GONE);
        } else {
            contentBinding.caseDataHealthFacility.setRequired(false);
        }
        contentBinding.caseDataCaseOrigin.addValueChangedListener(e -> {
            if (e.getValue() == CaseOrigin.IN_COUNTRY) {
                contentBinding.caseDataPointOfEntry.setVisibility(GONE);
                contentBinding.caseDataPointOfEntry.setRequired(false);
                contentBinding.caseDataPointOfEntry.setValue(null);
                contentBinding.caseDataHealthFacility.setRequired(true);
            } else {
                contentBinding.caseDataPointOfEntry.setVisibility(VISIBLE);
                contentBinding.caseDataHealthFacility.setRequired(false);
                contentBinding.caseDataPointOfEntry.setRequired(true);
            }
        });
    } else {
        contentBinding.caseDataCaseOrigin.setVisibility(GONE);
        contentBinding.caseDataPointOfEntry.setVisibility(GONE);
    }
}
Also used : PlagueType(de.symeda.sormas.api.caze.PlagueType) DataUtils(de.symeda.sormas.app.util.DataUtils) PersonValidator(de.symeda.sormas.app.person.edit.PersonValidator) DateHelper(de.symeda.sormas.api.utils.DateHelper) Facility(de.symeda.sormas.app.backend.facility.Facility) ArrayList(java.util.ArrayList) CustomizableEnumType(de.symeda.sormas.api.customizableenum.CustomizableEnumType) User(de.symeda.sormas.app.backend.user.User) Calendar(java.util.Calendar) ConfigProvider(de.symeda.sormas.app.backend.config.ConfigProvider) VISIBLE(android.view.View.VISIBLE) CountryHelper(de.symeda.sormas.api.CountryHelper) Item(de.symeda.sormas.app.component.Item) UserRole(de.symeda.sormas.api.user.UserRole) InfrastructureFieldsDependencyHandler(de.symeda.sormas.app.util.InfrastructureFieldsDependencyHandler) Bundler(de.symeda.sormas.app.util.Bundler) Case(de.symeda.sormas.app.backend.caze.Case) FragmentCaseNewLayoutBinding(de.symeda.sormas.app.databinding.FragmentCaseNewLayoutBinding) FacilityType(de.symeda.sormas.api.infrastructure.facility.FacilityType) Sex(de.symeda.sormas.api.person.Sex) CaseOrigin(de.symeda.sormas.api.caze.CaseOrigin) DengueFeverType(de.symeda.sormas.api.caze.DengueFeverType) DiseaseVariant(de.symeda.sormas.api.disease.DiseaseVariant) TypeOfPlace(de.symeda.sormas.api.event.TypeOfPlace) R(de.symeda.sormas.app.R) InfrastructureDaoHelper(de.symeda.sormas.app.util.InfrastructureDaoHelper) PresentCondition(de.symeda.sormas.api.person.PresentCondition) List(java.util.List) Disease(de.symeda.sormas.api.Disease) DiseaseConfigurationCache(de.symeda.sormas.app.util.DiseaseConfigurationCache) GONE(android.view.View.GONE) RabiesType(de.symeda.sormas.api.caze.RabiesType) DatabaseHelper(de.symeda.sormas.app.backend.common.DatabaseHelper) BaseEditFragment(de.symeda.sormas.app.BaseEditFragment) FacilityTypeGroup(de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup) JurisdictionLevel(de.symeda.sormas.api.user.JurisdictionLevel) User(de.symeda.sormas.app.backend.user.User) Bundler(de.symeda.sormas.app.util.Bundler)

Aggregations

GONE (android.view.View.GONE)1 VISIBLE (android.view.View.VISIBLE)1 CountryHelper (de.symeda.sormas.api.CountryHelper)1 Disease (de.symeda.sormas.api.Disease)1 CaseOrigin (de.symeda.sormas.api.caze.CaseOrigin)1 DengueFeverType (de.symeda.sormas.api.caze.DengueFeverType)1 PlagueType (de.symeda.sormas.api.caze.PlagueType)1 RabiesType (de.symeda.sormas.api.caze.RabiesType)1 CustomizableEnumType (de.symeda.sormas.api.customizableenum.CustomizableEnumType)1 DiseaseVariant (de.symeda.sormas.api.disease.DiseaseVariant)1 TypeOfPlace (de.symeda.sormas.api.event.TypeOfPlace)1 FacilityType (de.symeda.sormas.api.infrastructure.facility.FacilityType)1 FacilityTypeGroup (de.symeda.sormas.api.infrastructure.facility.FacilityTypeGroup)1 PresentCondition (de.symeda.sormas.api.person.PresentCondition)1 Sex (de.symeda.sormas.api.person.Sex)1 JurisdictionLevel (de.symeda.sormas.api.user.JurisdictionLevel)1 UserRole (de.symeda.sormas.api.user.UserRole)1 DateHelper (de.symeda.sormas.api.utils.DateHelper)1 BaseEditFragment (de.symeda.sormas.app.BaseEditFragment)1 R (de.symeda.sormas.app.R)1