use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.
the class CaseFacadeEjbTest method testGetDuplicates.
@Test
public void testGetDuplicates() {
RDCF rdcf = creator.createRDCF();
// case and person matching for asserts
PersonDto person = creator.createPerson("Fname", "Lname", (p) -> {
p.setBirthdateDD(12);
p.setBirthdateMM(3);
p.setBirthdateYYYY(1968);
});
final UserReferenceDto user = creator.createUser(rdcf, UserRole.SURVEILLANCE_OFFICER).toReference();
CaseDataDto caze = creator.createCase(user, rdcf, (c) -> {
c.setPerson(person.toReference());
c.setExternalID("test-ext-id");
c.setExternalToken("test-ext-token");
c.setDisease(Disease.CORONAVIRUS);
c.setDistrict(rdcf.district);
c.setReportDate(new Date());
});
// case and person matching for some asserts
PersonDto person2 = creator.createPerson("Fname", "Lname", (p) -> {
p.setBirthdateMM(3);
p.setBirthdateYYYY(1968);
});
creator.createCase(user, rdcf, (c) -> {
c.setPerson(person2.toReference());
c.setDisease(Disease.CORONAVIRUS);
});
creator.createCase(user, rdcf, (c) -> {
c.setPerson(creator.createPerson().toReference());
c.setDisease(Disease.CHOLERA);
});
creator.createCase(user, rdcf, (c) -> {
c.setPerson(person.toReference());
c.setDisease(Disease.CHOLERA);
});
CasePersonDto casePerson = new CasePersonDto();
PersonDto duplicatePerson = PersonDto.build();
CaseDataDto duplicateCaze = CaseDataDto.build(duplicatePerson.toReference(), Disease.CORONAVIRUS);
duplicateCaze.setResponsibleDistrict(rdcf.district);
duplicateCaze.setReportDate(new Date());
casePerson.setCaze(duplicateCaze);
casePerson.setPerson(duplicatePerson);
List<CasePersonDto> duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(0));
// match by external ID
duplicateCaze.setExternalID("test-ext-id");
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(1));
// match by external ID case insensitive + trim
duplicateCaze.setExternalID(" test-EXT-id ");
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(1));
// match by external token
duplicateCaze.setExternalID(null);
duplicateCaze.setExternalToken(caze.getExternalToken());
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(1));
// match by external token case insensitive + trim
duplicateCaze.setExternalToken(" Test-ext-TOKEN ");
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(1));
// match by first name and last name
duplicateCaze.setExternalToken(null);
duplicatePerson.setFirstName("Fname");
duplicatePerson.setLastName("Lname");
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(2));
// match by name and birth day should match also the one with missing birth day
duplicatePerson.setBirthdateDD(12);
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(2));
// match by name and birth day / month should match also the one with missing birth day
duplicatePerson.setBirthdateMM(3);
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(2));
// match by name and birth day / month / year should match also the one with missing birth day
duplicatePerson.setBirthdateYYYY(1968);
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(2));
// match by name and birth month / year
duplicatePerson.setBirthdateDD(null);
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(2));
// case insensitive name
duplicatePerson.setFirstName(" fnamE");
duplicatePerson.setLastName("lName ");
duplicates = getCaseFacade().getDuplicates(casePerson);
MatcherAssert.assertThat(duplicates, hasSize(2));
}
use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.
the class CaseStatisticsFacadeEjbTest method testQueryCaseCountPopulation.
@Test
public void testQueryCaseCountPopulation() {
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 = getCaseFacade().getCaseDataByUuid(caze.getUuid());
StatisticsCaseCriteria criteria = new StatisticsCaseCriteria();
criteria.regions(Arrays.asList(rdcf.region));
List<StatisticsCaseCountDto> results = getCaseStatisticsFacade().queryCaseCount(criteria, StatisticsCaseAttribute.JURISDICTION, StatisticsCaseSubAttribute.REGION, null, null, true, false, null);
assertNull(results.get(0).getPopulation());
PopulationDataDto populationData = PopulationDataDto.build(new Date());
RegionDto region = getRegionFacade().getByUuid(rdcf.region.getUuid());
region.setGrowthRate(10f);
getRegionFacade().save(region);
populationData.setRegion(rdcf.region);
populationData.setPopulation(new Integer(10000));
getPopulationDataFacade().savePopulationData(Arrays.asList(populationData));
results = getCaseStatisticsFacade().queryCaseCount(criteria, StatisticsCaseAttribute.JURISDICTION, StatisticsCaseSubAttribute.REGION, null, null, true, false, LocalDate.now().getYear() + 2);
// List should have one entry
assertEquals(Integer.valueOf(12214), results.get(0).getPopulation());
}
use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.
the class CaseFacadeEjbTest method testStringLengthValidations.
@Test
public void testStringLengthValidations() {
RDCF rdcf = creator.createRDCF();
UserDto user = creator.createUser(rdcf, UserRole.NATIONAL_USER);
CaseDataDto caze = creator.createCase(user.toReference(), creator.createPerson().toReference(), rdcf);
caze.setDisease(Disease.OTHER);
caze.setDiseaseDetails(randomString(600));
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
MatcherAssert.assertThat(validator.validate(caze), hasSize(1));
}
use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.
the class CaseFacadeEjbTest method testSetResponsibleSurveillanceOfficer.
@Test
public void testSetResponsibleSurveillanceOfficer() {
RDCF rdcf = creator.createRDCF();
RDCF rdcf2 = creator.createRDCF("Region2", "District2", "Community2", "Facility2");
RDCF rdcf3 = creator.createRDCF("Region3", "District3", "Community3", "Facility3");
creator.createUser(rdcf, "First", "User", UserRole.SURVEILLANCE_OFFICER).toReference();
UserReferenceDto survOff2 = creator.createUser(rdcf, "Second", "User", UserRole.SURVEILLANCE_OFFICER).toReference();
UserReferenceDto survOff3 = creator.createUser(rdcf2, "Third", "User", UserRole.SURVEILLANCE_OFFICER).toReference();
UserDto informant = creator.createUser(rdcf, UserRole.HOSPITAL_INFORMANT);
informant.setAssociatedOfficer(survOff3);
getUserFacade().saveUser(informant);
// Reporting user is set as surveillance officer
CaseDataDto caze = creator.createCase(survOff2, creator.createPerson().toReference(), rdcf);
assertThat(caze.getSurveillanceOfficer(), is(survOff2));
// Surveillance officer is removed if the responsible district changes
caze.setResponsibleRegion(new RegionReferenceDto(rdcf3.region.getUuid(), null, null));
caze.setResponsibleDistrict(new DistrictReferenceDto(rdcf3.district.getUuid(), null, null));
caze.setResponsibleCommunity(new CommunityReferenceDto(rdcf3.community.getUuid(), null, null));
caze.setHealthFacility(new FacilityReferenceDto(rdcf3.facility.getUuid(), null, null));
caze = getCaseFacade().save(caze);
assertNull(caze.getSurveillanceOfficer());
// Surveillance officer is set to the associated officer of an informant if available
caze.setRegion(new RegionReferenceDto(rdcf2.region.getUuid(), null, null));
caze.setDistrict(new DistrictReferenceDto(rdcf2.district.getUuid(), null, null));
caze.setCommunity(new CommunityReferenceDto(rdcf2.community.getUuid(), null, null));
caze.setHealthFacility(new FacilityReferenceDto(rdcf2.facility.getUuid(), null, null));
caze = getCaseFacade().save(caze);
assertThat(caze.getSurveillanceOfficer(), is(survOff3));
}
use of de.symeda.sormas.backend.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.
the class ContactServiceTest method testExistsUuid.
@Test
public void testExistsUuid() {
assertFalse(getContactService().exists("no-uuid"));
RDCF rdcf = creator.createRDCF();
UserReferenceDto reportingUser = creator.createUser(rdcf).toReference();
PersonReferenceDto contactPerson = creator.createPerson().toReference();
ContactDto contact = creator.createContact(reportingUser, contactPerson);
assertFalse(getContactService().exists("no-uuid"));
assertTrue(getContactService().exists(contact.getUuid()));
}
Aggregations