public String execute() throws Exception { patientAttributes = patientAttributeService.getAllPatientAttributes(); programs = programService.getProgramsByCurrentUser(); organisationUnit = selectionManager.getSelectedOrganisationUnit(); if (organisationUnit == null) { status = 1; } return SUCCESS; }
public String execute() { relationshipTypes = new ArrayList<RelationshipType>(relationshipTypeService.getAllRelationshipTypes()); identifierTypes = patientIdentifierTypeService.getAllPatientIdentifierTypes(); attributes = patientAttributeService.getAllPatientAttributes(); OrganisationUnit organisationUnit = selectionManager.getSelectedOrganisationUnit(); healthWorkers = organisationUnit.getUsers(); return SUCCESS; }
public void generateReport( Program selProgram, List<OrganisationUnit> orgUnitList, Date sDate, Date eDate) throws Exception { String raFolderName = reportService.getRAFolderName(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String query = ""; int rowStart = 3; int colStart = 1; int rowCount = rowStart; int colCount = colStart; // String outputReportPath = System.getenv( "DHIS2_HOME" ) + File.separator + raFolderName + // File.separator + "output" + File.separator + UUID.randomUUID().toString() + ".xls"; String outputReportPath = System.getenv("DHIS2_HOME") + File.separator + Configuration_IN.DEFAULT_TEMPFOLDER; File newdir = new File(outputReportPath); if (!newdir.exists()) { newdir.mkdirs(); } outputReportPath += File.separator + UUID.randomUUID().toString() + ".xls"; WritableWorkbook outputReportWorkbook = Workbook.createWorkbook(new File(outputReportPath)); WritableSheet sheet0 = outputReportWorkbook.createSheet(selProgram.getName(), 0); try { List<PatientIdentifierType> patientIdentifierTypes = new ArrayList<PatientIdentifierType>( patientIdentifierTypeService.getAllPatientIdentifierTypes()); Collections.sort(patientIdentifierTypes, new PatientIdentifierTypeComparator()); List<PatientAttribute> patientAttributes = new ArrayList<PatientAttribute>(patientAttributeService.getAllPatientAttributes()); Collections.sort(patientAttributes, new PatientAttributeComparator()); List<ProgramStage> programStages = new ArrayList<ProgramStage>(selProgram.getProgramStages()); Collections.sort(programStages, new ProgramStageOrderComparator()); Map<ProgramStage, List<DataElement>> programStageDataElementMap = new HashMap<ProgramStage, List<DataElement>>(); for (ProgramStage programStage : programStages) { List<ProgramStageDataElement> programStageDataElements = new ArrayList<ProgramStageDataElement>(programStage.getProgramStageDataElements()); List<DataElement> dataElements = new ArrayList<DataElement>(); for (ProgramStageDataElement programStageDataElement : programStageDataElements) { dataElements.add(programStageDataElement.getDataElement()); } Collections.sort(dataElements, new IdentifiableObjectNameComparator()); programStageDataElementMap.put(programStage, dataElements); } // Printing Header Information sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "OrgUnit Hierarchy", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "OrgUnit", getCellFormat1())); colCount++; for (PatientIdentifierType patientIdentifierType : patientIdentifierTypes) { sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell( new Label(colCount, rowCount - 1, patientIdentifierType.getName(), getCellFormat1())); colCount++; } sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Benificiary ID", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Benificiary Name", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Gender", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Age", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Data of Birth", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Blood Group", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Registration Date", getCellFormat1())); colCount++; for (PatientAttribute patientAttribute : patientAttributes) { sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell( new Label(colCount, rowCount - 1, patientAttribute.getName(), getCellFormat1())); colCount++; } sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Incident Date", getCellFormat1())); colCount++; sheet0.mergeCells(colCount, rowCount - 1, colCount, rowCount); sheet0.addCell(new Label(colCount, rowCount - 1, "Enrollment Date", getCellFormat1())); colCount++; for (ProgramStage programStage : programStages) { List<DataElement> dataElementList = new ArrayList<DataElement>(programStageDataElementMap.get(programStage)); sheet0.mergeCells( colCount, rowCount - 1, colCount + dataElementList.size() + 1, rowCount - 1); sheet0.addCell(new Label(colCount, rowCount - 1, programStage.getName(), getCellFormat1())); sheet0.addCell(new Label(colCount, rowCount, "Due Date", getCellFormat1())); colCount++; sheet0.addCell(new Label(colCount, rowCount, "Execution Date", getCellFormat1())); colCount++; for (DataElement dataElement : dataElementList) { sheet0.addCell( new Label( colCount, rowCount, dataElement.getName() + "--" + dataElement.getType(), getCellFormat1())); colCount++; } } rowCount++; for (OrganisationUnit orgUnit : orgUnitList) { if (sDate != null && eDate != null) { query = "SELECT patient.patientid, programinstance.programinstanceid,programinstance.dateofincident,programinstance.enrollmentdate FROM programinstance INNER JOIN patient " + " ON programinstance.patientid = patient.patientid " + " WHERE patient.organisationunitid = " + orgUnit.getId() + " AND programinstance.programid = " + selProgram.getId() + " AND patient.registrationdate >= '" + startDate + "'" + " AND patient.registrationdate <= '" + endDate + "' " + " AND enddate IS NULL"; } else { query = "SELECT patient.patientid, programinstance.programinstanceid,programinstance.dateofincident,programinstance.enrollmentdate FROM programinstance INNER JOIN patient " + " ON programinstance.patientid = patient.patientid " + " WHERE patient.organisationunitid = " + orgUnit.getId() + " AND programinstance.programid = " + selProgram.getId() + " AND enddate IS NULL"; } SqlRowSet sqlResultSet = jdbcTemplate.queryForRowSet(query); if (sqlResultSet != null) { int count = 1; String orgUnitBranch = ""; sqlResultSet.beforeFirst(); while (sqlResultSet.next()) { colCount = colStart; if (orgUnit.getParent() != null) { orgUnitBranch = getOrgunitBranch(orgUnit.getParent()); } else { orgUnitBranch = " "; } sheet0.addCell(new Label(colCount, rowCount, orgUnitBranch, getCellFormat2())); colCount++; sheet0.addCell(new Label(colCount, rowCount, orgUnit.getName(), getCellFormat2())); colCount++; int patientId = sqlResultSet.getInt(1); int programInstanceId = sqlResultSet.getInt(2); Date dateOfIncident = sqlResultSet.getDate(3); Date dateOfEnrollment = sqlResultSet.getDate(4); Patient patient = patientService.getPatient(patientId); // Patient Identifier Details for (PatientIdentifierType patientIdentifierType : patientIdentifierTypes) { query = "SELECT identifier from patientidentifier WHERE patientidentifiertypeid = " + patientIdentifierType.getId() + " AND patientid = " + patient.getId(); SqlRowSet sqlResultSet1 = jdbcTemplate.queryForRowSet(query); if (sqlResultSet1 != null && sqlResultSet1.next()) { String value = sqlResultSet1.getString(1); if (value != null && !value.trim().equalsIgnoreCase("")) { sheet0.addCell(new Label(colCount, rowCount, value, getCellFormat2())); } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat2())); } } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat2())); } colCount++; } // Patient Properties sheet0.addCell( new Label(colCount, rowCount, patient.getId().toString(), getCellFormat2())); colCount++; sheet0.addCell(new Label(colCount, rowCount, patient.getFullName(), getCellFormat2())); colCount++; sheet0.addCell( new Label(colCount, rowCount, patient.getTextGender(), getCellFormat2())); colCount++; sheet0.addCell(new Label(colCount, rowCount, patient.getAge(), getCellFormat2())); colCount++; sheet0.addCell( new Label( colCount, rowCount, simpleDateFormat.format(patient.getBirthDate()), getCellFormat2())); colCount++; /** * TODO BloodGroup is removed from Patient Object, so need to change this accordingly */ sheet0.addCell( new Label(colCount, rowCount, "" /*patient.getBloodGroup()*/, getCellFormat2())); colCount++; sheet0.addCell( new Label( colCount, rowCount, simpleDateFormat.format(patient.getRegistrationDate()), getCellFormat2())); colCount++; // Patient Attribute Values for (PatientAttribute patientAttribute : patientAttributes) { query = "SELECT value from patientattributevalue WHERE patientid = " + patient.getId() + " AND patientattributeid = " + patientAttribute.getId(); SqlRowSet sqlResultSet1 = jdbcTemplate.queryForRowSet(query); if (sqlResultSet1 != null && sqlResultSet1.next()) { String value = sqlResultSet1.getString(1); if (value != null && !value.trim().equalsIgnoreCase("")) { sheet0.addCell(new Label(colCount, rowCount, value, getCellFormat2())); } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat2())); } } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat2())); } colCount++; } // Program Enrollment Details sheet0.addCell( new Label( colCount, rowCount, simpleDateFormat.format(dateOfIncident), getCellFormat2())); colCount++; sheet0.addCell( new Label( colCount, rowCount, simpleDateFormat.format(dateOfEnrollment), getCellFormat2())); colCount++; // ProgramStage Values for (ProgramStage programStage : programStages) { query = "SELECT programstageinstanceid,duedate,executiondate from programstageinstance " + " WHERE programinstanceid = " + programInstanceId + " AND programstageid = " + programStage.getId(); SqlRowSet sqlResultSet2 = jdbcTemplate.queryForRowSet(query); Integer programStageInstanceId = 0; if (sqlResultSet2 != null && sqlResultSet2.next()) { programStageInstanceId = sqlResultSet2.getInt(1); // ProgramStage DueDate and Execution Date Date dueDate = sqlResultSet2.getDate(2); Date exeDate = sqlResultSet2.getDate(3); if (dueDate != null) { String dueDateStr = simpleDateFormat.format(dueDate); sheet0.addCell(new Label(colCount, rowCount, dueDateStr, getCellFormat3())); } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat3())); } colCount++; if (exeDate != null) { String exeDateStr = simpleDateFormat.format(exeDate); sheet0.addCell(new Label(colCount, rowCount, exeDateStr, getCellFormat3())); } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat3())); } colCount++; } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat3())); colCount++; sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat3())); colCount++; } for (DataElement dataElement : programStageDataElementMap.get(programStage)) { query = "SELECT value from patientdatavalue WHERE programstageinstanceid = " + programStageInstanceId + " AND dataelementid = " + dataElement.getId(); // " AND organisationunitid = " + orgUnit.getId(); SqlRowSet sqlResultSet3 = jdbcTemplate.queryForRowSet(query); if (sqlResultSet3 != null && sqlResultSet3.next()) { String value = sqlResultSet3.getString(1); if (dataElement.getType().equalsIgnoreCase(DataElement.VALUE_TYPE_BOOL)) { if (value.equalsIgnoreCase("false")) value = "No"; else value = "Yes"; } if (value != null && !value.trim().equalsIgnoreCase("")) { sheet0.addCell(new Label(colCount, rowCount, value, getCellFormat2())); } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat2())); } } else { sheet0.addCell(new Label(colCount, rowCount, "-", getCellFormat2())); } colCount++; } } rowCount++; } } } } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); e.printStackTrace(); } outputReportWorkbook.write(); outputReportWorkbook.close(); fileName = selProgram.getName() + ".xls"; File outputReportFile = new File(outputReportPath); inputStream = new BufferedInputStream(new FileInputStream(outputReportFile)); outputReportFile.deleteOnExit(); }