Search in sources :

Example 11 with DataEntryForm

use of org.hisp.dhis.dataentryform.DataEntryForm in project dhis2-core by dhis2.

the class ProgramDataEntryServiceTest method setUpTest.

@Override
public void setUpTest() {
    organisationUnit = createOrganisationUnit('A');
    organisationUnitService.addOrganisationUnit(organisationUnit);
    DataEntryForm dataEntryFormA = new DataEntryForm("DataEntryForm-A");
    dataEntryFormService.addDataEntryForm(dataEntryFormA);
    Program program = createProgram('A', new HashSet<>(), organisationUnit);
    programService.addProgram(program);
    stageA = new ProgramStage("A", program);
    program.getProgramStages().add(stageA);
    stageA.setUid("StageA");
    stageA.setSortOrder(1);
    programStageService.saveProgramStage(stageA);
    ProgramStage stageB = new ProgramStage("B", program);
    program.getProgramStages().add(stageB);
    stageB.setSortOrder(2);
    programStageService.saveProgramStage(stageB);
    Set<ProgramStage> programStages = new HashSet<>();
    programStages.add(stageA);
    programStages.add(stageB);
    program.setProgramStages(programStages);
    programService.updateProgram(program);
    DataElement dataElementA = createDataElement('A');
    dataElementA.setUid("DeA");
    DataElement dataElementB = createDataElement('B');
    dataElementService.addDataElement(dataElementA);
    dataElementService.addDataElement(dataElementB);
    ProgramStageDataElement programStageDataElementA = new ProgramStageDataElement(stageA, dataElementA, false, 1);
    stageA.getProgramStageDataElements().add(programStageDataElementA);
    programStageDataElementService.addProgramStageDataElement(programStageDataElementA);
    ProgramStageDataElement programStageDataElementB = new ProgramStageDataElement(stageA, dataElementB, false, 2);
    stageA.getProgramStageDataElements().add(programStageDataElementB);
    programStageDataElementService.addProgramStageDataElement(programStageDataElementB);
    htmlCode = "<input id=\"StageA-DeA-val\" style=\"width:4em;text-align:center\" value=\"\" title=\"\" />";
}
Also used : DataElement(org.hisp.dhis.dataelement.DataElement) DataEntryForm(org.hisp.dhis.dataentryform.DataEntryForm) HashSet(java.util.HashSet)

Example 12 with DataEntryForm

use of org.hisp.dhis.dataentryform.DataEntryForm in project dhis2-core by dhis2.

the class ProgramStageStoreTest method testGetByDataEntryForm.

@Test
public void testGetByDataEntryForm() {
    DataEntryForm formX = createDataEntryForm('X');
    DataEntryForm formY = createDataEntryForm('Y');
    dataEntryFormService.addDataEntryForm(formX);
    dataEntryFormService.addDataEntryForm(formY);
    stageA.setDataEntryForm(formX);
    stageB.setDataEntryForm(formY);
    programStageStore.save(stageA);
    programStageStore.save(stageB);
    programStageStore.save(stageC);
    program.setProgramStages(Sets.newHashSet(stageA, stageB, stageC));
    programService.updateProgram(program);
    List<ProgramStage> hasFormX = programStageStore.getByDataEntryForm(formX);
    assertEquals(1, hasFormX.size());
    assertEquals(stageA, hasFormX.get(0));
}
Also used : DataEntryForm(org.hisp.dhis.dataentryform.DataEntryForm) DhisSpringTest(org.hisp.dhis.DhisSpringTest) Test(org.junit.Test)

Example 13 with DataEntryForm

use of org.hisp.dhis.dataentryform.DataEntryForm in project dhis2-core by dhis2.

the class LoadFormAction method execute.

// -------------------------------------------------------------------------
// Action implementation
// -------------------------------------------------------------------------
@Override
public String execute() throws Exception {
    dataSet = dataSetService.getDataSet(dataSetId);
    if (dataSet == null) {
        return INPUT;
    }
    FormType formType = dataSet.getFormType();
    if (formType.isCustom() && dataSet.hasDataEntryForm()) {
        dataEntryForm = dataSet.getDataEntryForm();
        customDataEntryFormCode = dataEntryFormService.prepareDataEntryFormForEntry(dataEntryForm, dataSet, i18n);
        return formType.toString();
    }
    // ---------------------------------------------------------------------
    // Section / default form
    // ---------------------------------------------------------------------
    List<DataElement> dataElements = new ArrayList<>(dataSet.getDataElements());
    if (dataElements.isEmpty()) {
        return INPUT;
    }
    Collections.sort(dataElements);
    orderedDataElements = ListMap.getListMap(dataElements, de -> de.getCategoryCombo(dataSet));
    orderedCategoryCombos = getDataElementCategoryCombos(dataElements, dataSet);
    for (DataElementCategoryCombo categoryCombo : orderedCategoryCombos) {
        List<DataElementCategoryOptionCombo> optionCombos = categoryCombo.getSortedOptionCombos();
        orderedCategoryOptionCombos.put(categoryCombo.getId(), optionCombos);
        // -----------------------------------------------------------------
        // Perform ordering of categories and their options so that they
        // could be displayed as in the paper form. Note that the total
        // number of entry cells to be generated are the multiple of options
        // from each category.
        // -----------------------------------------------------------------
        numberOfTotalColumns.put(categoryCombo.getId(), optionCombos.size());
        orderedCategories.put(categoryCombo.getId(), categoryCombo.getCategories());
        Map<Integer, List<DataElementCategoryOption>> optionsMap = new HashMap<>();
        for (DataElementCategory category : categoryCombo.getCategories()) {
            optionsMap.put(category.getId(), category.getCategoryOptions());
        }
        orderedOptionsMap.put(categoryCombo.getId(), optionsMap);
        // -----------------------------------------------------------------
        // Calculating the number of times each category should be repeated
        // -----------------------------------------------------------------
        Map<Integer, Integer> catRepeat = new HashMap<>();
        Map<Integer, Collection<Integer>> colRepeat = new HashMap<>();
        int catColSpan = optionCombos.size();
        for (DataElementCategory cat : categoryCombo.getCategories()) {
            int categoryOptionSize = cat.getCategoryOptions().size();
            if (categoryOptionSize > 0 && catColSpan >= categoryOptionSize) {
                catColSpan = catColSpan / categoryOptionSize;
                int total = optionCombos.size() / (catColSpan * categoryOptionSize);
                Collection<Integer> cols = new ArrayList<>(total);
                for (int i = 0; i < total; i++) {
                    cols.add(i);
                }
                colRepeat.put(cat.getId(), cols);
                catRepeat.put(cat.getId(), catColSpan);
            }
        }
        catColRepeat.put(categoryCombo.getId(), colRepeat);
    }
    // ---------------------------------------------------------------------
    // Get data entry form
    // ---------------------------------------------------------------------
    DataSet dsOriginal = dataSet;
    if (dataSet.getFormType().isDefault()) {
        DataSet dataSetCopy = new DataSet();
        dataSetCopy.setUid(dataSet.getUid());
        dataSetCopy.setName(dataSet.getName());
        dataSetCopy.setShortName(dataSet.getShortName());
        dataSetCopy.setRenderAsTabs(dataSet.isRenderAsTabs());
        dataSetCopy.setRenderHorizontally(dataSet.isRenderHorizontally());
        dataSetCopy.setDataElementDecoration(dataSet.isDataElementDecoration());
        dataSet = dataSetCopy;
        for (int i = 0; i < orderedCategoryCombos.size(); i++) {
            DataElementCategoryCombo categoryCombo = orderedCategoryCombos.get(i);
            String name = !categoryCombo.isDefault() ? categoryCombo.getName() : dataSetCopy.getName();
            Section section = new Section();
            section.setUid(CodeGenerator.generateUid());
            section.setId(i);
            section.setName(name);
            section.setSortOrder(i);
            section.setDataSet(dataSetCopy);
            dataSetCopy.getSections().add(section);
            section.getDataElements().addAll(orderedDataElements.get(categoryCombo));
            section.setIndicators(new ArrayList<>(dataSet.getIndicators()));
        }
        formType = FormType.SECTION;
    }
    if (CodeGenerator.isValidUid(multiOrganisationUnit)) {
        OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit(multiOrganisationUnit);
        List<OrganisationUnit> organisationUnitChildren = new ArrayList<>();
        for (OrganisationUnit child : organisationUnit.getChildren()) {
            if (child.getDataSets().contains(dsOriginal)) {
                organisationUnitChildren.add(child);
            }
        }
        Collections.sort(organisationUnitChildren);
        organisationUnits.addAll(organisationUnitChildren);
        getSectionForm(dataElements, dataSet);
        formType = FormType.SECTION_MULTIORG;
    }
    getSectionForm(dataElements, dataSet);
    return formType.toString();
}
Also used : ListMap(org.hisp.dhis.common.ListMap) SectionOrderComparator(org.hisp.dhis.dataset.comparator.SectionOrderComparator) DataSet(org.hisp.dhis.dataset.DataSet) HashMap(java.util.HashMap) OrganisationUnitService(org.hisp.dhis.organisationunit.OrganisationUnitService) I18n(org.hisp.dhis.i18n.I18n) ArrayList(java.util.ArrayList) DataElement(org.hisp.dhis.dataelement.DataElement) HashSet(java.util.HashSet) DataElementCategoryCombo(org.hisp.dhis.dataelement.DataElementCategoryCombo) Map(java.util.Map) DataElementCategory(org.hisp.dhis.dataelement.DataElementCategory) DataElementOperand(org.hisp.dhis.dataelement.DataElementOperand) DataEntryForm(org.hisp.dhis.dataentryform.DataEntryForm) FormType(org.hisp.dhis.dataset.FormType) Collection(java.util.Collection) Set(java.util.Set) DataEntryFormService(org.hisp.dhis.dataentryform.DataEntryFormService) DataElementCategoryOption(org.hisp.dhis.dataelement.DataElementCategoryOption) DataElementCategoryComboSizeComparator(org.hisp.dhis.dataelement.comparator.DataElementCategoryComboSizeComparator) DataElementCategoryOptionCombo(org.hisp.dhis.dataelement.DataElementCategoryOptionCombo) Section(org.hisp.dhis.dataset.Section) OrganisationUnit(org.hisp.dhis.organisationunit.OrganisationUnit) List(java.util.List) CodeGenerator(org.hisp.dhis.common.CodeGenerator) Action(com.opensymphony.xwork2.Action) DataSetService(org.hisp.dhis.dataset.DataSetService) Collections(java.util.Collections) OrganisationUnit(org.hisp.dhis.organisationunit.OrganisationUnit) DataElementCategoryCombo(org.hisp.dhis.dataelement.DataElementCategoryCombo) HashMap(java.util.HashMap) DataSet(org.hisp.dhis.dataset.DataSet) FormType(org.hisp.dhis.dataset.FormType) ArrayList(java.util.ArrayList) DataElementCategory(org.hisp.dhis.dataelement.DataElementCategory) Section(org.hisp.dhis.dataset.Section) DataElement(org.hisp.dhis.dataelement.DataElement) Collection(java.util.Collection) ArrayList(java.util.ArrayList) List(java.util.List) DataElementCategoryOptionCombo(org.hisp.dhis.dataelement.DataElementCategoryOptionCombo)

Example 14 with DataEntryForm

use of org.hisp.dhis.dataentryform.DataEntryForm in project dhis2-core by dhis2.

the class ProgramDataEntryFormDeletionHandler method deleteProgramStage.

@Override
public void deleteProgramStage(ProgramStage programStage) {
    DataEntryForm dataEntryForm = programStage.getDataEntryForm();
    if (dataEntryForm != null) {
        boolean flag = false;
        Set<ProgramStage> programStages = programStage.getProgram().getProgramStages();
        programStages.remove(programStage);
        for (ProgramStage stage : programStages) {
            if (stage.getDataEntryForm() != null) {
                programStage.setDataEntryForm(null);
                programStageService.updateProgramStage(programStage);
                flag = true;
                break;
            }
        }
        if (!flag) {
            dataEntryFormService.deleteDataEntryForm(dataEntryForm);
        }
    }
}
Also used : DataEntryForm(org.hisp.dhis.dataentryform.DataEntryForm)

Example 15 with DataEntryForm

use of org.hisp.dhis.dataentryform.DataEntryForm in project dhis2-core by dhis2.

the class DataSetStoreTest method testGetByDataEntryForm.

@Test
public void testGetByDataEntryForm() {
    DataEntryForm dataEntryFormX = createDataEntryForm('X');
    DataEntryForm dataEntryFormY = createDataEntryForm('Y');
    dataEntryFormService.addDataEntryForm(dataEntryFormX);
    dataEntryFormService.addDataEntryForm(dataEntryFormY);
    DataSet dataSetA = createDataSet('A', periodType);
    DataSet dataSetB = createDataSet('B', periodType);
    DataSet dataSetC = createDataSet('C', periodType);
    dataSetA.setDataEntryForm(dataEntryFormX);
    dataSetStore.save(dataSetA);
    dataSetStore.save(dataSetB);
    dataSetStore.save(dataSetC);
    List<DataSet> dataSetsWithForm = dataSetStore.getDataSetsByDataEntryForm(dataEntryFormX);
    assertEquals(1, dataSetsWithForm.size());
    assertEquals(dataSetA, dataSetsWithForm.get(0));
    dataSetC.setDataEntryForm(dataEntryFormX);
    dataSetStore.update(dataSetC);
    dataSetsWithForm = dataSetStore.getDataSetsByDataEntryForm(dataEntryFormX);
    assertEquals(2, dataSetsWithForm.size());
    assertTrue(dataSetsWithForm.contains(dataSetA));
    assertTrue(dataSetsWithForm.contains(dataSetC));
    dataSetB.setDataEntryForm(dataEntryFormY);
    dataSetStore.update(dataSetB);
    dataSetsWithForm = dataSetStore.getDataSetsByDataEntryForm(dataEntryFormY);
    assertEquals(1, dataSetsWithForm.size());
    assertTrue(dataSetsWithForm.contains(dataSetB));
}
Also used : DataEntryForm(org.hisp.dhis.dataentryform.DataEntryForm) DhisSpringTest(org.hisp.dhis.DhisSpringTest) Test(org.junit.Test)

Aggregations

DataEntryForm (org.hisp.dhis.dataentryform.DataEntryForm)15 Program (org.hisp.dhis.program.Program)4 DhisSpringTest (org.hisp.dhis.DhisSpringTest)3 DataElement (org.hisp.dhis.dataelement.DataElement)3 DataSet (org.hisp.dhis.dataset.DataSet)3 Test (org.junit.Test)3 HashSet (java.util.HashSet)2 DataElementCategoryOptionCombo (org.hisp.dhis.dataelement.DataElementCategoryOptionCombo)2 WebMessageException (org.hisp.dhis.dxf2.webmessage.WebMessageException)2 ProgramStage (org.hisp.dhis.program.ProgramStage)2 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)2 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)2 Action (com.opensymphony.xwork2.Action)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1