Search in sources :

Example 61 with Program

use of org.hisp.dhis.program.Program in project dhis2-core by dhis2.

the class DeduplicationServiceTest method setUpPrograms.

private void setUpPrograms() {
    when(trackedEntityInstanceA.getProgramInstances()).thenReturn(new HashSet<>(Collections.singletonList(programInstanceA)));
    when(trackedEntityInstanceB.getProgramInstances()).thenReturn(new HashSet<>(Collections.singletonList(programInstanceB)));
    Program programA = new Program();
    programA.setUid("progrAUid");
    programA.setDescription("programADescr");
    programA.setName("programAName");
    Program programB = new Program();
    programB.setUid("progrBrUid");
    programB.setDescription("programBDescr");
    programB.setName("programBName");
    when(programInstanceA.getProgram()).thenReturn(programA);
    when(programInstanceB.getProgram()).thenReturn(programB);
}
Also used : Program(org.hisp.dhis.program.Program)

Example 62 with Program

use of org.hisp.dhis.program.Program in project dhis2-core by dhis2.

the class JdbcEventAnalyticsTableManagerTest method verifyGetAnalyticsTableWithOuLevels.

@Test
void verifyGetAnalyticsTableWithOuLevels() {
    List<OrganisationUnitLevel> ouLevels = rnd.objects(OrganisationUnitLevel.class, 2).collect(Collectors.toList());
    Program programA = rnd.nextObject(Program.class);
    programA.setId(0);
    when(idObjectManager.getAllNoAcl(Program.class)).thenReturn(Collections.singletonList(programA));
    when(organisationUnitService.getFilledOrganisationUnitLevels()).thenReturn(ouLevels);
    when(jdbcTemplate.queryForList("select distinct(extract(year from psi.executiondate)) from programstageinstance psi inner join programinstance pi on psi.programinstanceid = pi.programinstanceid where psi.lastupdated <= '2019-08-01T00:00:00' and pi.programid = 0 and psi.executiondate is not null and psi.executiondate > '1000-01-01' and psi.deleted is false ", Integer.class)).thenReturn(Lists.newArrayList(2018, 2019));
    AnalyticsTableUpdateParams params = AnalyticsTableUpdateParams.newBuilder().withStartTime(START_TIME).build();
    List<AnalyticsTable> tables = subject.getAnalyticsTables(params);
    assertThat(tables, hasSize(1));
    new AnalyticsTableAsserter.Builder(tables.get(0)).withTableName(TABLE_PREFIX + programA.getUid().toLowerCase()).withTableType(AnalyticsTableType.EVENT).withColumnSize(subject.getFixedColumns().size() + PeriodType.getAvailablePeriodTypes().size() + ouLevels.size() + (programA.isRegistration() ? 1 : 0)).addColumns(periodColumns).withDefaultColumns(subject.getFixedColumns()).addColumn(quote("uidlevel" + ouLevels.get(0).getLevel()), col -> match(ouLevels.get(0), col)).addColumn(quote("uidlevel" + ouLevels.get(1).getLevel()), col -> match(ouLevels.get(1), col)).build().verify();
}
Also used : AnalyticsTableAsserter(org.hisp.dhis.analytics.util.AnalyticsTableAsserter) BeforeEach(org.junit.jupiter.api.BeforeEach) CategoryService(org.hisp.dhis.category.CategoryService) BeanRandomizer(org.hisp.dhis.random.BeanRandomizer) CHARACTER_11(org.hisp.dhis.analytics.ColumnDataType.CHARACTER_11) ResourceTableService(org.hisp.dhis.resourcetable.ResourceTableService) Date(java.util.Date) ValueType(org.hisp.dhis.common.ValueType) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) OrganisationUnitService(org.hisp.dhis.organisationunit.OrganisationUnitService) GEOMETRY(org.hisp.dhis.analytics.ColumnDataType.GEOMETRY) GEOMETRY_POINT(org.hisp.dhis.analytics.ColumnDataType.GEOMETRY_POINT) DhisConvenienceTest.createProgramStage(org.hisp.dhis.DhisConvenienceTest.createProgramStage) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) INTEGER(org.hisp.dhis.analytics.ColumnDataType.INTEGER) Map(java.util.Map) AnalyticsTableType(org.hisp.dhis.analytics.AnalyticsTableType) DhisConvenienceTest.createProgram(org.hisp.dhis.DhisConvenienceTest.createProgram) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Matchers.notNullValue(org.hamcrest.Matchers.notNullValue) ImmutableMap(com.google.common.collect.ImmutableMap) Set(java.util.Set) IndexType(org.hisp.dhis.analytics.IndexType) Category(org.hisp.dhis.category.Category) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) Sets(com.google.common.collect.Sets) Test(org.junit.jupiter.api.Test) List(java.util.List) DhisConvenienceTest.createCategory(org.hisp.dhis.DhisConvenienceTest.createCategory) DhisConvenienceTest.createDataElement(org.hisp.dhis.DhisConvenienceTest.createDataElement) Matchers.equalTo(org.hamcrest.Matchers.equalTo) LocalDate(java.time.LocalDate) Matchers.is(org.hamcrest.Matchers.is) DhisConvenienceTest.createProgramTrackedEntityAttribute(org.hisp.dhis.DhisConvenienceTest.createProgramTrackedEntityAttribute) CategoryCombo(org.hisp.dhis.category.CategoryCombo) Matchers.containsString(org.hamcrest.Matchers.containsString) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute) Mockito.mock(org.mockito.Mockito.mock) TIMESTAMP(org.hisp.dhis.analytics.ColumnDataType.TIMESTAMP) DhisConvenienceTest.createTrackedEntityAttribute(org.hisp.dhis.DhisConvenienceTest.createTrackedEntityAttribute) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) CategoryOptionGroupSet(org.hisp.dhis.category.CategoryOptionGroupSet) DOUBLE(org.hisp.dhis.analytics.ColumnDataType.DOUBLE) AnalyticsTableColumn(org.hisp.dhis.analytics.AnalyticsTableColumn) Mock(org.mockito.Mock) PostgreSQLStatementBuilder(org.hisp.dhis.jdbc.statementbuilder.PostgreSQLStatementBuilder) AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableHookService(org.hisp.dhis.analytics.AnalyticsTableHookService) PartitionManager(org.hisp.dhis.analytics.partition.PartitionManager) Program(org.hisp.dhis.program.Program) JdbcTemplate(org.springframework.jdbc.core.JdbcTemplate) HashSet(java.util.HashSet) DataElement(org.hisp.dhis.dataelement.DataElement) DatabaseInfo(org.hisp.dhis.system.database.DatabaseInfo) ArgumentCaptor(org.mockito.ArgumentCaptor) Lists(com.google.common.collect.Lists) IdentifiableObjectManager(org.hisp.dhis.common.IdentifiableObjectManager) Matchers.hasSize(org.hamcrest.Matchers.hasSize) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) BIGINT(org.hisp.dhis.analytics.ColumnDataType.BIGINT) SystemSettingManager(org.hisp.dhis.setting.SystemSettingManager) ColumnNotNullConstraint(org.hisp.dhis.analytics.ColumnNotNullConstraint) DhisConvenienceTest.createCategoryCombo(org.hisp.dhis.DhisConvenienceTest.createCategoryCombo) DataApprovalLevelService(org.hisp.dhis.dataapproval.DataApprovalLevelService) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition) DateTime(org.joda.time.DateTime) TEXT(org.hisp.dhis.analytics.ColumnDataType.TEXT) AggregationType(org.hisp.dhis.analytics.AggregationType) Mockito.when(org.mockito.Mockito.when) StatementBuilder(org.hisp.dhis.jdbc.StatementBuilder) OrganisationUnitGroupSet(org.hisp.dhis.organisationunit.OrganisationUnitGroupSet) ProgramStage(org.hisp.dhis.program.ProgramStage) Mockito.verify(org.mockito.Mockito.verify) Mockito(org.mockito.Mockito) ProgramTrackedEntityAttribute(org.hisp.dhis.program.ProgramTrackedEntityAttribute) PeriodType(org.hisp.dhis.period.PeriodType) DhisConvenienceTest.getDate(org.hisp.dhis.DhisConvenienceTest.getDate) SettingKey(org.hisp.dhis.setting.SettingKey) Collections(java.util.Collections) OrganisationUnitLevel(org.hisp.dhis.organisationunit.OrganisationUnitLevel) DhisConvenienceTest.createProgram(org.hisp.dhis.DhisConvenienceTest.createProgram) Program(org.hisp.dhis.program.Program) AnalyticsTableAsserter(org.hisp.dhis.analytics.util.AnalyticsTableAsserter) OrganisationUnitLevel(org.hisp.dhis.organisationunit.OrganisationUnitLevel) AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) Test(org.junit.jupiter.api.Test)

Example 63 with Program

use of org.hisp.dhis.program.Program in project dhis2-core by dhis2.

the class JdbcEventAnalyticsTableManagerTest method verifyGetLatestAnalyticsTables.

@Test
void verifyGetLatestAnalyticsTables() {
    Program prA = createProgram('A');
    Program prB = createProgram('B');
    Program prC = createProgram('C');
    Program prD = createProgram('D');
    List<Program> programs = Lists.newArrayList(prA, prB, prC, prD);
    Date lastFullTableUpdate = new DateTime(2019, 3, 1, 2, 0).toDate();
    Date lastLatestPartitionUpdate = new DateTime(2019, 3, 1, 9, 0).toDate();
    Date startTime = new DateTime(2019, 3, 1, 10, 0).toDate();
    Set<String> skipPrograms = new HashSet<>();
    skipPrograms.add(prC.getUid());
    skipPrograms.add(prD.getUid());
    AnalyticsTableUpdateParams params = AnalyticsTableUpdateParams.newBuilder().withStartTime(startTime).withLatestPartition().withSkipPrograms(skipPrograms).build();
    List<Map<String, Object>> queryResp = Lists.newArrayList();
    queryResp.add(ImmutableMap.of("dataelementid", 1));
    when(systemSettingManager.getDateSetting(SettingKey.LAST_SUCCESSFUL_ANALYTICS_TABLES_UPDATE)).thenReturn(lastFullTableUpdate);
    when(systemSettingManager.getDateSetting(SettingKey.LAST_SUCCESSFUL_LATEST_ANALYTICS_PARTITION_UPDATE)).thenReturn(lastLatestPartitionUpdate);
    when(jdbcTemplate.queryForList(Mockito.anyString())).thenReturn(queryResp);
    when(idObjectManager.getAllNoAcl(Program.class)).thenReturn(programs);
    List<AnalyticsTable> tables = subject.getAnalyticsTables(params);
    assertThat(tables, hasSize(2));
    AnalyticsTable tableA = tables.get(0);
    AnalyticsTable tableB = tables.get(1);
    assertThat(tableA, notNullValue());
    assertThat(tableB, notNullValue());
    AnalyticsTablePartition partitionA = tableA.getLatestPartition();
    AnalyticsTablePartition partitionB = tableA.getLatestPartition();
    assertThat(partitionA, notNullValue());
    assertThat(partitionA.isLatestPartition(), equalTo(true));
    assertThat(partitionA.getStartDate(), equalTo(lastFullTableUpdate));
    assertThat(partitionA.getEndDate(), equalTo(startTime));
    assertThat(partitionB, notNullValue());
    assertThat(partitionB.isLatestPartition(), equalTo(true));
    assertThat(partitionB.getStartDate(), equalTo(lastFullTableUpdate));
    assertThat(partitionB.getEndDate(), equalTo(startTime));
}
Also used : DhisConvenienceTest.createProgram(org.hisp.dhis.DhisConvenienceTest.createProgram) Program(org.hisp.dhis.program.Program) AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) Matchers.containsString(org.hamcrest.Matchers.containsString) Date(java.util.Date) LocalDate(java.time.LocalDate) DhisConvenienceTest.getDate(org.hisp.dhis.DhisConvenienceTest.getDate) DateTime(org.joda.time.DateTime) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) HashSet(java.util.HashSet) Test(org.junit.jupiter.api.Test)

Example 64 with Program

use of org.hisp.dhis.program.Program in project dhis2-core by dhis2.

the class JdbcEventAnalyticsTableManagerTest method verifyGetAnalyticsTableWithOuGroupSet.

@Test
void verifyGetAnalyticsTableWithOuGroupSet() {
    List<OrganisationUnitGroupSet> ouGroupSet = rnd.objects(OrganisationUnitGroupSet.class, 2).collect(Collectors.toList());
    Program programA = rnd.nextObject(Program.class);
    programA.setId(0);
    when(idObjectManager.getAllNoAcl(Program.class)).thenReturn(Collections.singletonList(programA));
    when(idObjectManager.getDataDimensionsNoAcl(OrganisationUnitGroupSet.class)).thenReturn(ouGroupSet);
    AnalyticsTableUpdateParams params = AnalyticsTableUpdateParams.newBuilder().withStartTime(START_TIME).build();
    when(jdbcTemplate.queryForList(getYearQueryForCurrentYear(programA, false), Integer.class)).thenReturn(Lists.newArrayList(2018, 2019));
    List<AnalyticsTable> tables = subject.getAnalyticsTables(params);
    assertThat(tables, hasSize(1));
    new AnalyticsTableAsserter.Builder(tables.get(0)).withTableName(TABLE_PREFIX + programA.getUid().toLowerCase()).withTableType(AnalyticsTableType.EVENT).withColumnSize(subject.getFixedColumns().size() + PeriodType.getAvailablePeriodTypes().size() + ouGroupSet.size() + (programA.isRegistration() ? 1 : 0)).addColumns(periodColumns).withDefaultColumns(subject.getFixedColumns()).addColumn(quote(ouGroupSet.get(0).getUid()), col -> match(ouGroupSet.get(0), col)).addColumn(quote(ouGroupSet.get(1).getUid()), col -> match(ouGroupSet.get(1), col)).build().verify();
}
Also used : AnalyticsTableAsserter(org.hisp.dhis.analytics.util.AnalyticsTableAsserter) BeforeEach(org.junit.jupiter.api.BeforeEach) CategoryService(org.hisp.dhis.category.CategoryService) BeanRandomizer(org.hisp.dhis.random.BeanRandomizer) CHARACTER_11(org.hisp.dhis.analytics.ColumnDataType.CHARACTER_11) ResourceTableService(org.hisp.dhis.resourcetable.ResourceTableService) Date(java.util.Date) ValueType(org.hisp.dhis.common.ValueType) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) OrganisationUnitService(org.hisp.dhis.organisationunit.OrganisationUnitService) GEOMETRY(org.hisp.dhis.analytics.ColumnDataType.GEOMETRY) GEOMETRY_POINT(org.hisp.dhis.analytics.ColumnDataType.GEOMETRY_POINT) DhisConvenienceTest.createProgramStage(org.hisp.dhis.DhisConvenienceTest.createProgramStage) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) INTEGER(org.hisp.dhis.analytics.ColumnDataType.INTEGER) Map(java.util.Map) AnalyticsTableType(org.hisp.dhis.analytics.AnalyticsTableType) DhisConvenienceTest.createProgram(org.hisp.dhis.DhisConvenienceTest.createProgram) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Matchers.notNullValue(org.hamcrest.Matchers.notNullValue) ImmutableMap(com.google.common.collect.ImmutableMap) Set(java.util.Set) IndexType(org.hisp.dhis.analytics.IndexType) Category(org.hisp.dhis.category.Category) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) Sets(com.google.common.collect.Sets) Test(org.junit.jupiter.api.Test) List(java.util.List) DhisConvenienceTest.createCategory(org.hisp.dhis.DhisConvenienceTest.createCategory) DhisConvenienceTest.createDataElement(org.hisp.dhis.DhisConvenienceTest.createDataElement) Matchers.equalTo(org.hamcrest.Matchers.equalTo) LocalDate(java.time.LocalDate) Matchers.is(org.hamcrest.Matchers.is) DhisConvenienceTest.createProgramTrackedEntityAttribute(org.hisp.dhis.DhisConvenienceTest.createProgramTrackedEntityAttribute) CategoryCombo(org.hisp.dhis.category.CategoryCombo) Matchers.containsString(org.hamcrest.Matchers.containsString) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute) Mockito.mock(org.mockito.Mockito.mock) TIMESTAMP(org.hisp.dhis.analytics.ColumnDataType.TIMESTAMP) DhisConvenienceTest.createTrackedEntityAttribute(org.hisp.dhis.DhisConvenienceTest.createTrackedEntityAttribute) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) CategoryOptionGroupSet(org.hisp.dhis.category.CategoryOptionGroupSet) DOUBLE(org.hisp.dhis.analytics.ColumnDataType.DOUBLE) AnalyticsTableColumn(org.hisp.dhis.analytics.AnalyticsTableColumn) Mock(org.mockito.Mock) PostgreSQLStatementBuilder(org.hisp.dhis.jdbc.statementbuilder.PostgreSQLStatementBuilder) AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableHookService(org.hisp.dhis.analytics.AnalyticsTableHookService) PartitionManager(org.hisp.dhis.analytics.partition.PartitionManager) Program(org.hisp.dhis.program.Program) JdbcTemplate(org.springframework.jdbc.core.JdbcTemplate) HashSet(java.util.HashSet) DataElement(org.hisp.dhis.dataelement.DataElement) DatabaseInfo(org.hisp.dhis.system.database.DatabaseInfo) ArgumentCaptor(org.mockito.ArgumentCaptor) Lists(com.google.common.collect.Lists) IdentifiableObjectManager(org.hisp.dhis.common.IdentifiableObjectManager) Matchers.hasSize(org.hamcrest.Matchers.hasSize) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) BIGINT(org.hisp.dhis.analytics.ColumnDataType.BIGINT) SystemSettingManager(org.hisp.dhis.setting.SystemSettingManager) ColumnNotNullConstraint(org.hisp.dhis.analytics.ColumnNotNullConstraint) DhisConvenienceTest.createCategoryCombo(org.hisp.dhis.DhisConvenienceTest.createCategoryCombo) DataApprovalLevelService(org.hisp.dhis.dataapproval.DataApprovalLevelService) AnalyticsTablePartition(org.hisp.dhis.analytics.AnalyticsTablePartition) DateTime(org.joda.time.DateTime) TEXT(org.hisp.dhis.analytics.ColumnDataType.TEXT) AggregationType(org.hisp.dhis.analytics.AggregationType) Mockito.when(org.mockito.Mockito.when) StatementBuilder(org.hisp.dhis.jdbc.StatementBuilder) OrganisationUnitGroupSet(org.hisp.dhis.organisationunit.OrganisationUnitGroupSet) ProgramStage(org.hisp.dhis.program.ProgramStage) Mockito.verify(org.mockito.Mockito.verify) Mockito(org.mockito.Mockito) ProgramTrackedEntityAttribute(org.hisp.dhis.program.ProgramTrackedEntityAttribute) PeriodType(org.hisp.dhis.period.PeriodType) DhisConvenienceTest.getDate(org.hisp.dhis.DhisConvenienceTest.getDate) SettingKey(org.hisp.dhis.setting.SettingKey) Collections(java.util.Collections) OrganisationUnitLevel(org.hisp.dhis.organisationunit.OrganisationUnitLevel) DhisConvenienceTest.createProgram(org.hisp.dhis.DhisConvenienceTest.createProgram) Program(org.hisp.dhis.program.Program) AnalyticsTableAsserter(org.hisp.dhis.analytics.util.AnalyticsTableAsserter) AnalyticsTable(org.hisp.dhis.analytics.AnalyticsTable) AnalyticsTableUpdateParams(org.hisp.dhis.analytics.AnalyticsTableUpdateParams) OrganisationUnitGroupSet(org.hisp.dhis.organisationunit.OrganisationUnitGroupSet) Test(org.junit.jupiter.api.Test)

Example 65 with Program

use of org.hisp.dhis.program.Program in project dhis2-core by dhis2.

the class AnalyticsUtilsTest method testGetByDataDimensionType.

@Test
void testGetByDataDimensionType() {
    Program prA = createProgram('A');
    DataElement deA = createDataElement('A', new CategoryCombo());
    DataElement deB = createDataElement('B', new CategoryCombo());
    ProgramDataElementDimensionItem pdeA = new ProgramDataElementDimensionItem(prA, deA);
    ProgramDataElementDimensionItem pdeB = new ProgramDataElementDimensionItem(prA, deB);
    ProgramIndicator piA = createProgramIndicator('A', prA, null, null);
    List<DimensionalItemObject> list = Lists.newArrayList(deA, deB, pdeA, pdeB, piA);
    assertEquals(Lists.newArrayList(deA, deB), AnalyticsUtils.getByDataDimensionItemType(DataDimensionItemType.DATA_ELEMENT, list));
    assertEquals(Lists.newArrayList(pdeA, pdeB), AnalyticsUtils.getByDataDimensionItemType(DataDimensionItemType.PROGRAM_DATA_ELEMENT, list));
    assertEquals(Lists.newArrayList(piA), AnalyticsUtils.getByDataDimensionItemType(DataDimensionItemType.PROGRAM_INDICATOR, list));
    assertEquals(Lists.newArrayList(), AnalyticsUtils.getByDataDimensionItemType(DataDimensionItemType.PROGRAM_ATTRIBUTE, list));
}
Also used : DataElement(org.hisp.dhis.dataelement.DataElement) Program(org.hisp.dhis.program.Program) ProgramDataElementDimensionItem(org.hisp.dhis.program.ProgramDataElementDimensionItem) DimensionalItemObject(org.hisp.dhis.common.DimensionalItemObject) CategoryCombo(org.hisp.dhis.category.CategoryCombo) ProgramIndicator(org.hisp.dhis.program.ProgramIndicator) Test(org.junit.jupiter.api.Test) DhisConvenienceTest(org.hisp.dhis.DhisConvenienceTest)

Aggregations

Program (org.hisp.dhis.program.Program)344 Test (org.junit.jupiter.api.Test)160 OrganisationUnit (org.hisp.dhis.organisationunit.OrganisationUnit)123 ProgramStage (org.hisp.dhis.program.ProgramStage)109 ProgramInstance (org.hisp.dhis.program.ProgramInstance)79 TrackedEntityInstance (org.hisp.dhis.trackedentity.TrackedEntityInstance)68 Date (java.util.Date)47 Collectors (java.util.stream.Collectors)44 User (org.hisp.dhis.user.User)44 CategoryOptionCombo (org.hisp.dhis.category.CategoryOptionCombo)42 TrackedEntityType (org.hisp.dhis.trackedentity.TrackedEntityType)42 BeforeEach (org.junit.jupiter.api.BeforeEach)42 TrackedEntityAttribute (org.hisp.dhis.trackedentity.TrackedEntityAttribute)41 ValidationErrorReporter (org.hisp.dhis.tracker.report.ValidationErrorReporter)41 DhisConvenienceTest (org.hisp.dhis.DhisConvenienceTest)40 DhisConvenienceTest.createProgram (org.hisp.dhis.DhisConvenienceTest.createProgram)39 CategoryCombo (org.hisp.dhis.category.CategoryCombo)39 DataElement (org.hisp.dhis.dataelement.DataElement)39 Event (org.hisp.dhis.tracker.domain.Event)38 Enrollment (org.hisp.dhis.tracker.domain.Enrollment)37