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());
}
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()));
}
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()));
}
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));
}
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);
}
}
}
}
}
Aggregations