Search in sources :

Example 16 with RDCF

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));
}
Also used : UserReferenceDto(de.symeda.sormas.api.user.UserReferenceDto) RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) CasePersonDto(de.symeda.sormas.api.caze.CasePersonDto) PersonDto(de.symeda.sormas.api.person.PersonDto) CasePersonDto(de.symeda.sormas.api.caze.CasePersonDto) Date(java.util.Date) LocalDate(java.time.LocalDate) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 17 with RDCF

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());
}
Also used : RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) PersonDto(de.symeda.sormas.api.person.PersonDto) UserDto(de.symeda.sormas.api.user.UserDto) StatisticsCaseCriteria(de.symeda.sormas.api.statistics.StatisticsCaseCriteria) PopulationDataDto(de.symeda.sormas.api.infrastructure.PopulationDataDto) RegionDto(de.symeda.sormas.api.infrastructure.region.RegionDto) StatisticsCaseCountDto(de.symeda.sormas.api.statistics.StatisticsCaseCountDto) Date(java.util.Date) LocalDate(java.time.LocalDate) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 18 with RDCF

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));
}
Also used : RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) ValidatorFactory(javax.validation.ValidatorFactory) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) UserDto(de.symeda.sormas.api.user.UserDto) Validator(javax.validation.Validator) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 19 with RDCF

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));
}
Also used : UserReferenceDto(de.symeda.sormas.api.user.UserReferenceDto) CommunityReferenceDto(de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto) RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) RegionReferenceDto(de.symeda.sormas.api.infrastructure.region.RegionReferenceDto) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) FacilityReferenceDto(de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto) UserDto(de.symeda.sormas.api.user.UserDto) DistrictReferenceDto(de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto) AbstractBeanTest(de.symeda.sormas.backend.AbstractBeanTest) Test(org.junit.Test)

Example 20 with RDCF

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()));
}
Also used : UserReferenceDto(de.symeda.sormas.api.user.UserReferenceDto) RDCF(de.symeda.sormas.backend.TestDataCreator.RDCF) PersonReferenceDto(de.symeda.sormas.api.person.PersonReferenceDto) ContactDto(de.symeda.sormas.api.contact.ContactDto) 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