Search in sources :

Example 61 with RDCF

use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class CaseFacadeEjbTest method testMovingCaseUpdatesTaskAssigneeAndCreatesPreviousHospitalization.

@Test
public void testMovingCaseUpdatesTaskAssigneeAndCreatesPreviousHospitalization() {
    RDCF rdcf = creator.createRDCF("Region", "District", "Community", "Facility");
    RDCFEntities newRDCF = creator.createRDCFEntities("New Region", "New District", "New Community", "New Facility");
    UserDto user = useSurveillanceOfficerLogin(rdcf);
    PersonDto cazePerson = creator.createPerson("Case", "Person");
    CaseDataDto caze = creator.createCase(user.toReference(), cazePerson.toReference(), Disease.EVD, CaseClassification.PROBABLE, InvestigationStatus.PENDING, new Date(), rdcf);
    UserDto caseOfficer = creator.createUser(newRDCF.region.getUuid(), newRDCF.district.getUuid(), newRDCF.facility.getUuid(), "Case", "Officer", UserRole.CASE_OFFICER);
    TaskDto pendingTask = creator.createTask(TaskContext.CASE, TaskType.CASE_INVESTIGATION, TaskStatus.PENDING, caze.toReference(), null, null, new Date(), user.toReference());
    TaskDto doneTask = creator.createTask(TaskContext.CASE, TaskType.CASE_INVESTIGATION, TaskStatus.DONE, caze.toReference(), null, null, new Date(), user.toReference());
    caze.setResponsibleRegion(new RegionReferenceDto(newRDCF.region.getUuid(), null, null));
    caze.setResponsibleDistrict(new DistrictReferenceDto(newRDCF.district.getUuid(), null, null));
    caze.setResponsibleCommunity(new CommunityReferenceDto(newRDCF.community.getUuid(), null, null));
    caze.setRegion(new RegionReferenceDto(newRDCF.region.getUuid(), null, null));
    caze.setDistrict(new DistrictReferenceDto(newRDCF.district.getUuid(), null, null));
    caze.setCommunity(new CommunityReferenceDto(newRDCF.community.getUuid(), null, null));
    caze.setHealthFacility(new FacilityReferenceDto(newRDCF.facility.getUuid(), null, null));
    caze.setSurveillanceOfficer(caseOfficer.toReference());
    CaseDataDto oldCase = getCaseFacade().getCaseDataByUuid(caze.getUuid());
    CaseLogic.handleHospitalization(caze, oldCase, true);
    getCaseFacade().save(caze);
    caze = getCaseFacade().getCaseDataByUuid(caze.getUuid());
    pendingTask = getTaskFacade().getByUuid(pendingTask.getUuid());
    doneTask = getTaskFacade().getByUuid(doneTask.getUuid());
    // Case should have the new region, district, community and facility set
    assertEquals(caze.getRegion().getUuid(), newRDCF.region.getUuid());
    assertEquals(caze.getDistrict().getUuid(), newRDCF.district.getUuid());
    assertEquals(caze.getCommunity().getUuid(), newRDCF.community.getUuid());
    assertEquals(caze.getHealthFacility().getUuid(), newRDCF.facility.getUuid());
    // Pending task is reassigned to the case officer
    // Done task is not reassigned
    assertEquals(pendingTask.getAssigneeUser().getUuid(), caseOfficer.getUuid());
    assertEquals(doneTask.getAssigneeUser().getUuid(), user.getUuid());
    // A previous hospitalization with the former facility should have been created
    List<PreviousHospitalizationDto> previousHospitalizations = caze.getHospitalization().getPreviousHospitalizations();
    assertEquals(1, previousHospitalizations.size());
}
Also used : CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) FacilityReferenceDto(de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto) CasePersonDto(de.symeda.sormas.api.caze.CasePersonDto) PersonDto(de.symeda.sormas.api.person.PersonDto) UserDto(de.symeda.sormas.api.user.UserDto) PreviousHospitalizationDto(de.symeda.sormas.api.hospitalization.PreviousHospitalizationDto) DistrictReferenceDto(de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto) TaskDto(de.symeda.sormas.api.task.TaskDto) Date(java.util.Date) LocalDate(java.time.LocalDate) RDCFEntities(de.symeda.sormas.backend.TestDataCreator.RDCFEntities) CommunityReferenceDto(de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto) RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) RegionReferenceDto(de.symeda.sormas.api.infrastructure.region.RegionReferenceDto) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 62 with RDCF

use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class CaseFacadeEjbTest method testSearchCasesWithExtendedQuarantine.

@Test
public void testSearchCasesWithExtendedQuarantine() {
    RDCF rdcf = creator.createRDCF();
    CaseDataDto caze = creator.createCase(creator.createUser(rdcf, UserRole.SURVEILLANCE_OFFICER).toReference(), creator.createPerson().toReference(), rdcf);
    caze.setQuarantineExtended(true);
    getCaseFacade().save(caze);
    List<CaseIndexDto> indexList = getCaseFacade().getIndexList(new CaseCriteria(), 0, 100, Collections.emptyList());
    assertThat(indexList.get(0).getUuid(), is(caze.getUuid()));
    CaseCriteria caseCriteria = new CaseCriteria();
    caseCriteria.setWithExtendedQuarantine(true);
    List<CaseIndexDto> indexListFiltered = getCaseFacade().getIndexList(caseCriteria, 0, 100, Collections.emptyList());
    assertThat(indexListFiltered.get(0).getUuid(), is(caze.getUuid()));
}
Also used : RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) CaseCriteria(de.symeda.sormas.api.caze.CaseCriteria) CaseIndexDto(de.symeda.sormas.api.caze.CaseIndexDto) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 63 with RDCF

use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class CaseFacadeEjbTest method testCaseCriteriaChangedSinceLastShareWithReportingTool.

@Test
public void testCaseCriteriaChangedSinceLastShareWithReportingTool() {
    RDCF rdcf = creator.createRDCF();
    UserDto user = creator.createUser(rdcf, UserRole.NATIONAL_USER);
    CaseDataDto sharedCase = creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
    ExternalShareInfo shareInfo = new ExternalShareInfo();
    shareInfo.setCreationDate(Timestamp.valueOf(LocalDateTime.of(2021, Month.APRIL, 20, 12, 31)));
    shareInfo.setCaze(getCaseService().getByUuid(sharedCase.getUuid()));
    shareInfo.setSender(getUserService().getByUuid(user.getUuid()));
    shareInfo.setStatus(ExternalShareStatus.DELETED);
    getExternalShareInfoService().ensurePersisted(shareInfo);
    sharedCase.setReInfection(YesNoUnknown.YES);
    getCaseFacade().save(sharedCase);
    creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
    creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
    CaseCriteria caseCriteriaForShared = new CaseCriteria();
    caseCriteriaForShared.setOnlyEntitiesChangedSinceLastSharedWithExternalSurvTool(true);
    List<CaseIndexDto> indexList = getCaseFacade().getIndexList(caseCriteriaForShared, 0, 100, null);
    MatcherAssert.assertThat(indexList, hasSize(1));
    MatcherAssert.assertThat(indexList.get(0).getUuid(), is(sharedCase.getUuid()));
}
Also used : RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) UserDto(de.symeda.sormas.api.user.UserDto) CaseCriteria(de.symeda.sormas.api.caze.CaseCriteria) ExternalShareInfo(de.symeda.sormas.backend.share.ExternalShareInfo) CaseIndexDto(de.symeda.sormas.api.caze.CaseIndexDto) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 64 with RDCF

use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class CaseFacadeEjbTest method testCaseCriteriaLastShareWithReportingToolBetweenDates.

@Test
public void testCaseCriteriaLastShareWithReportingToolBetweenDates() {
    RDCF rdcf = creator.createRDCF();
    UserDto user = creator.createUser(rdcf, UserRole.NATIONAL_USER);
    CaseDataDto sharedCase = creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
    ExternalShareInfo shareInfoMarch = new ExternalShareInfo();
    shareInfoMarch.setCreationDate(Timestamp.valueOf(LocalDateTime.of(2021, Month.MARCH, 20, 12, 31)));
    shareInfoMarch.setCaze(getCaseService().getByUuid(sharedCase.getUuid()));
    shareInfoMarch.setSender(getUserService().getByUuid(user.getUuid()));
    shareInfoMarch.setStatus(ExternalShareStatus.SHARED);
    getExternalShareInfoService().ensurePersisted(shareInfoMarch);
    ExternalShareInfo shareInfoApril = new ExternalShareInfo();
    shareInfoApril.setCreationDate(Timestamp.valueOf(LocalDateTime.of(2021, Month.APRIL, 20, 12, 31)));
    shareInfoApril.setCaze(getCaseService().getByUuid(sharedCase.getUuid()));
    shareInfoApril.setSender(getUserService().getByUuid(user.getUuid()));
    shareInfoApril.setStatus(ExternalShareStatus.DELETED);
    getExternalShareInfoService().ensurePersisted(shareInfoApril);
    sharedCase.setReInfection(YesNoUnknown.YES);
    getCaseFacade().save(sharedCase);
    creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
    creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
    CaseCriteria caseCriteriaForShared = new CaseCriteria();
    caseCriteriaForShared.setNewCaseDateType(ExternalShareDateType.LAST_EXTERNAL_SURVEILLANCE_TOOL_SHARE);
    caseCriteriaForShared.setNewCaseDateFrom(Date.from(LocalDateTime.of(2021, Month.APRIL, 18, 12, 31).atZone(ZoneId.systemDefault()).toInstant()));
    caseCriteriaForShared.setNewCaseDateTo(Date.from(LocalDateTime.of(2021, Month.APRIL, 21, 12, 31).atZone(ZoneId.systemDefault()).toInstant()));
    List<CaseIndexDto> indexList = getCaseFacade().getIndexList(caseCriteriaForShared, 0, 100, null);
    MatcherAssert.assertThat(indexList, hasSize(1));
    MatcherAssert.assertThat(indexList.get(0).getUuid(), is(sharedCase.getUuid()));
    // range before last share
    caseCriteriaForShared.setNewCaseDateFrom(Date.from(LocalDateTime.of(2021, Month.MARCH, 10, 12, 31).atZone(ZoneId.systemDefault()).toInstant()));
    caseCriteriaForShared.setNewCaseDateTo(Date.from(LocalDateTime.of(2021, Month.APRIL, 19, 10, 31).atZone(ZoneId.systemDefault()).toInstant()));
    indexList = getCaseFacade().getIndexList(caseCriteriaForShared, 0, 100, null);
    MatcherAssert.assertThat(indexList, hasSize(0));
    // range after last share
    caseCriteriaForShared.setNewCaseDateFrom(Date.from(LocalDateTime.of(2021, Month.APRIL, 21, 12, 31).atZone(ZoneId.systemDefault()).toInstant()));
    caseCriteriaForShared.setNewCaseDateTo(Date.from(LocalDateTime.of(2021, Month.APRIL, 22, 10, 31).atZone(ZoneId.systemDefault()).toInstant()));
    indexList = getCaseFacade().getIndexList(caseCriteriaForShared, 0, 100, null);
    MatcherAssert.assertThat(indexList, hasSize(0));
}
Also used : RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) UserDto(de.symeda.sormas.api.user.UserDto) CaseCriteria(de.symeda.sormas.api.caze.CaseCriteria) ExternalShareInfo(de.symeda.sormas.backend.share.ExternalShareInfo) CaseIndexDto(de.symeda.sormas.api.caze.CaseIndexDto) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 65 with RDCF

use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class CaseStatisticsFacadeEjbTest method testQueryCaseCount.

@Test
public void testQueryCaseCount() {
    RDCF rdcf = creator.createRDCF("Region", "District", "Community", "Facility");
    UserDto user = creator.createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR);
    PersonDto cazePerson = creator.createPerson("Case", "Person");
    cazePerson.setApproximateAge(30);
    cazePerson.setApproximateAgeReferenceDate(new Date());
    cazePerson.setApproximateAgeType(ApproximateAgeType.YEARS);
    cazePerson = getPersonFacade().savePerson(cazePerson);
    CaseDataDto caze = creator.createCase(user.toReference(), cazePerson.toReference(), Disease.EVD, CaseClassification.PROBABLE, InvestigationStatus.PENDING, new Date(), rdcf);
    caze.setOutcomeDate(DateHelper.addWeeks(caze.getReportDate(), 2));
    caze = getCaseFacade().save(caze);
    StatisticsCaseCriteria criteria = new StatisticsCaseCriteria();
    int year = DateHelper8.toLocalDate(caze.getSymptoms().getOnsetDate()).getYear();
    criteria.years(Arrays.asList(new Year(year), new Year(year + 1)), StatisticsCaseAttribute.ONSET_TIME);
    criteria.regions(Arrays.asList(new RegionReferenceDto(rdcf.region.getUuid(), null, null)));
    criteria.addAgeIntervals(Arrays.asList(new IntegerRange(10, 40)));
    List<StatisticsCaseCountDto> results = getCaseStatisticsFacade().queryCaseCount(criteria, null, null, null, null, false, false, null);
    // List should have one entry
    assertEquals(1, results.size());
    // try all groupings
    for (StatisticsCaseAttribute groupingAttribute : StatisticsCaseAttribute.values()) {
        StatisticsCaseSubAttribute[] subAttributes = groupingAttribute.getSubAttributes();
        if (subAttributes.length == 0) {
            getCaseStatisticsFacade().queryCaseCount(criteria, groupingAttribute, null, null, null, false, false, null);
        } else {
            for (StatisticsCaseSubAttribute subGroupingAttribute : groupingAttribute.getSubAttributes()) {
                if (subGroupingAttribute.isUsedForGrouping()) {
                    getCaseStatisticsFacade().queryCaseCount(criteria, groupingAttribute, subGroupingAttribute, null, null, false, false, null);
                }
            }
        }
    }
}
Also used : IntegerRange(de.symeda.sormas.api.IntegerRange) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) PersonDto(de.symeda.sormas.api.person.PersonDto) UserDto(de.symeda.sormas.api.user.UserDto) StatisticsCaseSubAttribute(de.symeda.sormas.api.statistics.StatisticsCaseSubAttribute) Date(java.util.Date) LocalDate(java.time.LocalDate) RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) RegionReferenceDto(de.symeda.sormas.api.infrastructure.region.RegionReferenceDto) Year(de.symeda.sormas.api.Year) StatisticsCaseCriteria(de.symeda.sormas.api.statistics.StatisticsCaseCriteria) StatisticsCaseCountDto(de.symeda.sormas.api.statistics.StatisticsCaseCountDto) StatisticsCaseAttribute(de.symeda.sormas.api.statistics.StatisticsCaseAttribute) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Aggregations

RDCF (de.symeda.sormas.backend.TestDataCreator.RDCF)75 AbstractBeanTest (de.symeda.sormas.backend.AbstractBeanTest)74 Test (org.junit.Test)74 UserDto (de.symeda.sormas.api.user.UserDto)53 Date (java.util.Date)43 CaseDataDto (de.symeda.sormas.api.caze.CaseDataDto)42 PersonDto (de.symeda.sormas.api.person.PersonDto)33 LocalDate (java.time.LocalDate)33 UserReferenceDto (de.symeda.sormas.api.user.UserReferenceDto)19 EventDto (de.symeda.sormas.api.event.EventDto)18 ContactDto (de.symeda.sormas.api.contact.ContactDto)17 CasePersonDto (de.symeda.sormas.api.caze.CasePersonDto)13 Matchers.isEmptyOrNullString (org.hamcrest.Matchers.isEmptyOrNullString)12 PersonReferenceDto (de.symeda.sormas.api.person.PersonReferenceDto)11 CaseCriteria (de.symeda.sormas.api.caze.CaseCriteria)10 RegionReferenceDto (de.symeda.sormas.api.infrastructure.region.RegionReferenceDto)10 TaskDto (de.symeda.sormas.api.task.TaskDto)9 CaseIndexDto (de.symeda.sormas.api.caze.CaseIndexDto)8 MapContactDto (de.symeda.sormas.api.contact.MapContactDto)8 SimilarContactDto (de.symeda.sormas.api.contact.SimilarContactDto)8